from django import forms

class CancerTreatmentForm(forms.Form):
    # Boolean fields with default values
    radiation_therapy = forms.BooleanField(label="Radiation Therapy", required=False, initial=True)
    chemotherapy = forms.BooleanField(label="Chemotherapy", required=False, initial=True)
    hormone_therapy = forms.BooleanField(label="Hormone Therapy", required=False, initial=True)

    # Multi-choice fields with default values
    SEX_CHOICES = [
        ('male', 'Male'),
        ('female', 'Female'),
    ]
    sex = forms.MultipleChoiceField(
        label="Sex",
        choices=SEX_CHOICES,
        widget=forms.CheckboxSelectMultiple,
        initial=[choice[0] for choice in SEX_CHOICES],
        required=False
    )

    OS_STATUS_CHOICES = [
        ('living', '0:LIVING'),
        ('deceased', '1:DECEASED'),
    ]
    os_status = forms.MultipleChoiceField(
        label="OS Status",
        choices=OS_STATUS_CHOICES,
        widget=forms.CheckboxSelectMultiple,
        initial=[choice[0] for choice in OS_STATUS_CHOICES],
        required=False
    )

    RACE_CHOICES = [
        ('white', 'White'),
        ('black_or_african_american', 'Black or African American'),
        ('asian', 'Asian'),
        ('american_indian_or_alaska_native', 'American Indian or Alaska Native'),
        ('unknown', 'Unknown'),
    ]
    race = forms.MultipleChoiceField(
        label="Race",
        choices=RACE_CHOICES,
        widget=forms.CheckboxSelectMultiple,
        initial=[choice[0] for choice in RACE_CHOICES],
        required=False
    )

    SUBTYPE_CHOICES = [
        ('BRCA_LumA', 'BRCA_LumA'),
        ('BRCA_Her2', 'BRCA_Her2'),
        ('BRCA_LumB', 'BRCA_LumB'),
        ('BRCA_Normal', 'BRCA_Normal'),
        ('BRCA_Basal', 'BRCA_Basal'),
        ('NA', 'NA'),
    ]
    subtype = forms.MultipleChoiceField(
        label="Subtype",
        choices=SUBTYPE_CHOICES,
        widget=forms.CheckboxSelectMultiple,
        initial=[choice[0] for choice in SUBTYPE_CHOICES],
        required=False
    )

    CANCER_TYPE_CHOICES = [
        ('breast_invasive_lobular_carcinoma', 'Breast Invasive Lobular Carcinoma'),
        ('breast_invasive_ductal_carcinoma', 'Breast Invasive Ductal Carcinoma'),
        ('breast_invasive_carcinoma_nos', 'Breast Invasive Carcinoma (NOS)'),
        ('breast_invasive_mixed_mucinous_carcinoma', 'Breast Invasive Mixed Mucinous Carcinoma'),
        ('metaplastic_breast_cancer', 'Metaplastic Breast Cancer'),
        ('invasive_breast_carcinoma', 'Invasive Breast Carcinoma'),
        ('unknown', 'Unknown'),
    ]
    cancer_type_detailed = forms.MultipleChoiceField(
        label="Cancer Type Detailed",
        choices=CANCER_TYPE_CHOICES,
        widget=forms.CheckboxSelectMultiple,
        initial=[choice[0] for choice in CANCER_TYPE_CHOICES],
        required=False
    )

    STAGE_CHOICES = [
        ('stage_x', 'STAGE X'),
        ('stage_iib', 'STAGE IIB'),
        ('stage_ia', 'STAGE IA'),
        ('stage_iiia', 'STAGE IIIA'),
        ('stage_iia', 'STAGE IIA'),
        ('stage_i', 'STAGE I'),
        ('stage_iiic', 'STAGE IIIC'),
        ('stage_iv', 'STAGE IV'),
        ('stage_ib', 'STAGE IB'),
        ('stage_iiib', 'STAGE IIIB'),
        ('stage_iii', 'STAGE III'),
        ('stage_ii', 'STAGE II'),
        ('unknown', 'Unknown'),
    ]
    ajcc_pathologic_tumor_stage = forms.MultipleChoiceField(
        label="AJCC Pathologic Tumor Stage",
        choices=STAGE_CHOICES,
        widget=forms.CheckboxSelectMultiple,
        initial=[choice[0] for choice in STAGE_CHOICES],
        required=False
    )

    # Range fields with default intervals
    buffa_score_start = forms.FloatField(label="Buffa Score Start", required=False, initial=None)
    buffa_score_end = forms.FloatField(label="Buffa Score End", required=False, initial=None)
    buffa_score_interval = forms.FloatField(label="Buffa Score Interval", initial=5, required=False)

    winter_score_start = forms.FloatField(label="Winter Score Start", required=False, initial=None)
    winter_score_end = forms.FloatField(label="Winter Score End", required=False, initial=None)
    winter_score_interval = forms.FloatField(label="Winter Score Interval", initial=5, required=False)

    ragnum_score_start = forms.FloatField(label="Ragnum Score Start", required=False, initial=None)
    ragnum_score_end = forms.FloatField(label="Ragnum Score End", required=False, initial=None)
    ragnum_score_interval = forms.FloatField(label="Ragnum Score Interval", initial=5, required=False)

    tmb_nonsynonymous_start = forms.FloatField(label="TMB Nonsynonymous Start", required=False, initial=None)
    tmb_nonsynonymous_end = forms.FloatField(label="TMB Nonsynonymous End", required=False, initial=None)
    tmb_nonsynonymous_interval = forms.FloatField(label="TMB Nonsynonymous Interval", initial=0.25, required=False)
