HH/apps/surveys/management/commands/create_demo_survey.py
2026-01-24 15:27:30 +03:00

135 lines
6.6 KiB
Python

from django.core.management.base import BaseCommand
from apps.surveys.models import SurveyTemplate, SurveyQuestion
from apps.organizations.models import Hospital
class Command(BaseCommand):
help = 'Create a demo survey template with different question types'
def handle(self, *args, **options):
# Get or create a hospital
hospital, _ = Hospital.objects.get_or_create(
code='DEMO',
defaults={
'name': "Al Hammadi Hospital - Demo",
'city': 'Riyadh',
'status': 'active'
}
)
# Create the survey template
template = SurveyTemplate.objects.create(
name="Patient Experience Demo Survey",
name_ar="استبيان تجربة المريض التجريبي",
hospital=hospital,
survey_type='stage',
scoring_method='average',
negative_threshold=3.0,
is_active=True
)
self.stdout.write(self.style.SUCCESS(f'✓ Created template: {template.name}'))
# Question 1: Text question
q1 = SurveyQuestion.objects.create(
survey_template=template,
text="Please share any additional comments about your stay",
text_ar="يرجى مشاركة أي تعليقات إضافية حول إقامتك",
question_type='text',
order=1,
is_required=False
)
self.stdout.write(f' ✓ Question 1: Text - {q1.text}')
# Question 2: Rating question
q2 = SurveyQuestion.objects.create(
survey_template=template,
text="How would you rate the quality of nursing care?",
text_ar="كيف تقي جودة التمريض؟",
question_type='rating',
order=2,
is_required=True
)
self.stdout.write(f' ✓ Question 2: Rating - {q2.text}')
# Question 3: Multiple choice question (single_choice doesn't exist)
q3 = SurveyQuestion.objects.create(
survey_template=template,
text="Which department did you visit?",
text_ar="ما هو القسم الذي زرته؟",
question_type='multiple_choice',
order=3,
is_required=True,
choices_json=[
{"value": "emergency", "label": "Emergency", "label_ar": "الطوارئ"},
{"value": "outpatient", "label": "Outpatient", "label_ar": "العيادات الخارجية"},
{"value": "inpatient", "label": "Inpatient", "label_ar": "الإقامة الداخلية"},
{"value": "surgery", "label": "Surgery", "label_ar": "الجراحة"},
{"value": "radiology", "label": "Radiology", "label_ar": "الأشعة"}
]
)
self.stdout.write(f' ✓ Question 3: Multiple Choice - {q3.text}')
self.stdout.write(f' Choices: {", ".join([c["label"] for c in q3.choices_json])}')
# Question 4: Another multiple choice question
q4 = SurveyQuestion.objects.create(
survey_template=template,
text="What aspects of your experience were satisfactory? (Select all that apply)",
text_ar="ما هي جوانب تجربتك التي كانت مرضية؟ (حدد جميع ما ينطبق)",
question_type='multiple_choice',
order=4,
is_required=False,
choices_json=[
{"value": "staff", "label": "Staff friendliness", "label_ar": "لطف الموظفين"},
{"value": "cleanliness", "label": "Cleanliness", "label_ar": "النظافة"},
{"value": "communication", "label": "Communication", "label_ar": "التواصل"},
{"value": "wait_times", "label": "Wait times", "label_ar": "أوقات الانتظار"},
{"value": "facilities", "label": "Facilities", "label_ar": "المرافق"}
]
)
self.stdout.write(f' ✓ Question 4: Multiple Choice - {q4.text}')
self.stdout.write(f' Choices: {", ".join([c["label"] for c in q4.choices_json])}')
# Question 5: Another rating question
q5 = SurveyQuestion.objects.create(
survey_template=template,
text="How would you rate the hospital facilities?",
text_ar="كيف تقي مرافق المستشفى؟",
question_type='rating',
order=5,
is_required=True
)
self.stdout.write(f' ✓ Question 5: Rating - {q5.text}')
self.stdout.write(self.style.SUCCESS('\n' + '='*70))
self.stdout.write(self.style.SUCCESS('DEMO SURVEY TEMPLATE CREATED SUCCESSFULLY!'))
self.stdout.write(self.style.SUCCESS('='*70))
self.stdout.write(f'\nTemplate ID: {template.id}')
self.stdout.write(f'Template Name: {template.name}')
self.stdout.write(f'Total Questions: {template.questions.count()}')
self.stdout.write('\nQuestion Types Summary:')
self.stdout.write(f' - Text questions: {template.questions.filter(question_type="text").count()}')
self.stdout.write(f' - Rating questions: {template.questions.filter(question_type="rating").count()}')
self.stdout.write(f' - Single Choice questions: {template.questions.filter(question_type="single_choice").count()}')
self.stdout.write(f' - Multiple Choice questions: {template.questions.filter(question_type="multiple_choice").count()}')
self.stdout.write(self.style.SUCCESS('\n' + '='*70))
self.stdout.write(self.style.SUCCESS('NEXT STEPS:'))
self.stdout.write(self.style.SUCCESS('='*70))
self.stdout.write('1. Open your browser and go to: http://localhost:8000/surveys/templates/')
self.stdout.write(f'2. Find and click on: {template.name}')
self.stdout.write('3. You\'ll see the survey builder with all questions')
self.stdout.write('4. The preview panel will show how each question type appears to patients')
self.stdout.write('\nPreview Guide:')
self.stdout.write(' ✓ Text: Shows as a textarea input')
self.stdout.write(' ✓ Rating: Shows 5 radio buttons (Poor to Excellent)')
self.stdout.write(' ✓ Single Choice: Shows radio buttons, only one can be selected')
self.stdout.write(' ✓ Multiple Choice: Shows checkboxes, multiple can be selected')
self.stdout.write('\nBilingual Support:')
self.stdout.write(' - All questions have both English and Arabic text')
self.stdout.write(' - Preview will show Arabic if you switch language')
self.stdout.write(self.style.SUCCESS('='*70))