Forms and Widgets

Hospital registration form

Procedural Questions

Clinical Predictores of Cardiovascular Risk

Clinical Predictors of sleep Apnia Risk

Emergency contacts

Source code

Python

class HospitalRegistrationForm(Form):
    class EmergencyContractForm(forms.Form):
        name = forms.CharField()
        relationship = forms.ChoiceField(
            choices=(
                ("SPS", "Spouse"),
                ("PRT", "Partner"),
                ("FRD", "Friend"),
                ("CLG", "Colleague"),
            )
        )
        daytime_phone = forms.CharField()
        evening_phone = forms.CharField(required=False)

    EmergencyContractFormSet = forms.formset_factory(
        EmergencyContractForm, extra=1, can_delete=True
    )

    registration_date = forms.DateField(
        initial=datetime.date.today,
        widget=forms.DateInput(),
    )
    full_name = forms.CharField()
    birth_date = forms.DateField()
    height = forms.IntegerField(help_text="cm")
    weight = forms.IntegerField(help_text="kg")
    primary_care_physician = forms.CharField(
        widget=forms.TextInput(attrs={"leading-icon": "face"})
    )
    date_of_last_appointment = forms.DateField(widget=forms.DateInput())
    home_phone = forms.CharField(widget=forms.TextInput(attrs={"leading-icon": "call"}))
    work_phone = forms.CharField(
        required=False, widget=forms.TextInput(attrs={"leading-icon": "call"})
    )

    procedural_questions = forms.MultipleChoiceField(
        widget=forms.CheckboxSelectMultiple,
        required=False,
        choices=QUESTION_CHOICES,
        label=None,
    )

    cardiovascular_risks = forms.MultipleChoiceField(
        widget=forms.CheckboxSelectMultiple(attrs={"columns": 2}),
        required=False,
        choices=CARDIOVASCULAR_RISK_CHOICES,
        label=None,
    )

    apnia_risks = forms.MultipleChoiceField(
        widget=forms.CheckboxSelectMultiple(attrs={"columns": 3}),
        required=False,
        choices=APNIA_RISK_CHOICES,
        label=None,
    )

    emergency_contacts = FormSetField(EmergencyContractFormSet, label=None)

    layout = Layout(
        Row(
            Column("full_name", "birth_date", Row("height", "weight"), desktop=8),
            "registration_date",
        ),
        Row(Span("primary_care_physician", desktop=8), "date_of_last_appointment"),
        Row("home_phone", "work_phone"),
        FieldSet("Procedural Questions", "procedural_questions"),
        FieldSet("Clinical Predictores of Cardiovascular Risk", "cardiovascular_risks"),
        FieldSet("Clinical Predictors of sleep Apnia Risk", "apnia_risks"),
        "emergency_contacts",
    )