from django import forms
from .models import PatientProfile, Encounter, VitalSign, Diagnosis, Prescription, LabResult

class PatientProfileForm(forms.ModelForm):
    class Meta:
        model = PatientProfile
        fields = [
            "full_name","email","phone","date_of_birth","gender","address",
            "blood_group","allergies","medical_history",
            "emergency_contact_name","emergency_contact_phone",
        ]
        widgets = {
            "date_of_birth": forms.DateInput(attrs={"type": "date", "class": "input"}),
            "gender": forms.Select(choices=[("", "Select sex / gender"), ("Female", "Female"), ("Male", "Male"), ("Other", "Other"), ("Prefer not to say", "Prefer not to say")]),
            "blood_group": forms.Select(choices=[("", "Select blood group"), ("A+", "A+"), ("A-", "A-"), ("B+", "B+"), ("B-", "B-"), ("AB+", "AB+"), ("AB-", "AB-"), ("O+", "O+"), ("O-", "O-"), ("Unknown", "Unknown")]),
            "address": forms.Textarea(attrs={"rows": 3}),
            "allergies": forms.Textarea(attrs={"rows": 3}),
            "medical_history": forms.Textarea(attrs={"rows": 3}),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs.setdefault("class", "input")


class EncounterForm(forms.ModelForm):
    class Meta:
        model = Encounter
        fields = ["visit_datetime","chief_complaint","assessment_notes","plan_notes","is_closed"]
        widgets = {
            "assessment_notes": forms.Textarea(attrs={"rows":4}),
            "plan_notes": forms.Textarea(attrs={"rows":4}),
        }

class VitalSignForm(forms.ModelForm):
    class Meta:
        model = VitalSign
        fields = [
            "temperature_c","pulse_bpm","respiration_rpm",
            "systolic_mmHg","diastolic_mmHg","spo2_percent",
            "weight_kg","height_cm","notes",
        ]
        widgets = {"notes": forms.Textarea(attrs={"rows":3})}

class DiagnosisForm(forms.ModelForm):
    class Meta:
        model = Diagnosis
        fields = ["title","icd_code","notes"]
        widgets = {"notes": forms.Textarea(attrs={"rows":3})}

class PrescriptionForm(forms.ModelForm):
    class Meta:
        model = Prescription
        fields = ["medication_name","dosage","frequency","duration","instructions","is_active"]
        widgets = {"instructions": forms.Textarea(attrs={"rows":3})}

class LabResultForm(forms.ModelForm):
    class Meta:
        model = LabResult
        fields = ["title","result_notes","file"]
        widgets = {"result_notes": forms.Textarea(attrs={"rows":3})}
