def write_medical_hx_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.allergies = data.get('allergies') row.surgery_hx = data.get('surgeryHx') row.chronic_conditions = data.get('chronicConditions') row.current_medications = data.get('currentMedications') row.vaccinations = data.get('vaccinations')
def write_controlled_med_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_c = data.get('doctor') row.medicine_c = data.get('medicine') row.format_c = data.get('format') row.dosage_c = data.get('dosage') row.days_c = data.get('days')
def write_med_stock_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_s = data.get('doctor') row.medicine_s = data.get('medicine') row.format_s = data.get('format') row.dosage_s = data.get('dosage') row.days_s = data.get('days')
def write_covid_19_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) if data.get('seekCare'): row.covid_19_result = 'Seek Emergency Care and Isolate' elif data.get('testAndIsolate'): row.covid_19_result = 'Test/Isolate Patient' else: row.covid_19_result = 'No Action Necessary'
def write_medical_hx_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_mh = data.get('doctor') row.malnutrition = data.get('malnutrition') row.prenatal = data.get('prenatal') row.sexual_hx = data.get('sexualHx') row.nutrition = data.get('nutrition') row.parasite_treatment = data.get('parasiteTreatment') row.family_hx = data.get('familyHx') row.surgery_hx = data.get('surgeryHx') row.vaccinations = data.get('vaccinations') row.blood_type = data.get('bloodType')
def write_household_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_he = data.get('doctor') row.potable_water = get_field(data, 'potableWater') row.animals = data.get('animals') row.gas_cooking = get_field(data, 'gasCooking') row.wood_cooking = get_field(data, 'woodCooking') row.household_size = data.get('householdSize') row.toilet = get_field(data, 'toilet') row.latrine = get_field(data, 'latrine') row.family_violence = get_text_field(data, 'familyViolence', 'familyViolenceText')
def write_accident_report_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_ar = data.get('doctor') row.accident_work = get_text_field(data, 'accidentWork', 'accidentWorkText') row.description = data.get('description') row.trauma = get_text_field(data, 'trauma', 'traumaText') row.trauma_details = data.get('traumaDetails') row.referral_specialist = get_text_field(data, 'referralSpecialist', 'referralSpecialistText') row.follow_up_visit = get_text_field(data, 'followUpVisit', 'followUpVisitText') row.other_ar = data.get('other')
def write_physiotherapy_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.previous_treatment = get_text_field(data, 'previousTreatment', 'previousTreatmentText') row.complaint_p = data.get('complaint') row.findings = data.get('findings') row.treatment_plan = data.get('treatmentPlan') row.treatment_session = data.get('treatmentSession') row.recommendations = data.get('recommendations') row.referral = get_text_field(data, 'referral', 'referralText')
def write_vitals_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.heart_rate = data.get('heartRate') if data.get('systolic') and data.get('diastolic'): row.blood_pressure = f"{data.get('systolic')}/{data.get('diastolic')}" row.sats = data.get('sats') row.temp = data.get('temp') row.respiratory_rate = data.get('respiratoryRate') row.weight = data.get('weight') row.blood_glucose = data.get('bloodGlucose')
def write_examination_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.examination = data.get('examination') row.general_observations = data.get('generalObservations') row.diagnosis = data.get('diagnosis') row.treatment = data.get('treatment') row.covid_19 = get_field(data, 'covid19') row.referral = get_text_field(data, 'referral', 'referralText')
def write_psych_pathologies_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_pp = data.get('doctor') row.anxiety = get_text_field(data, 'anxiety', 'anxietyText') row.nuclear_family = get_text_field(data, 'nuclearFamily', 'nuclearFamilyText') row.self_esteem = get_text_field(data, 'selfEsteem', 'selfEsteemText') row.attention_deficit = get_text_field(data, 'attentionDeficit', 'attentionDeficitText') row.depression = get_text_field(data, 'depression', 'depressionText') row.grief = get_text_field(data, 'grief', 'griefText') row.stress = get_text_field(data, 'stress', 'stressText') row.disfunctional_family = get_text_field(data, 'disfunctionalFamily', 'disfunctionalFamilyText') row.hyperactivity = get_text_field(data, 'hyperactivity', 'hyperactivityText') row.inappropriate_play = get_text_field(data, 'inappropriatePlay', 'inappropriatePlayText') row.language_problems = get_text_field(data, 'languageProblems', 'languageProblemsText') row.behavioral_problems = get_text_field(data, 'behavioralProblems', 'behavioralProblemsText') row.school_problems = get_text_field(data, 'schoolProblems', 'schoolProblemsText') row.psychosis = get_text_field(data, 'psychosis', 'psychosisText') row.suicidal = get_text_field(data, 'suicidal', 'suicidalText') row.personality_disorders = get_text_field(data, 'personalityDisorders', 'personalityDisordersText') row.trauma_pp = get_text_field(data, 'trauma', 'traumaText') row.psychological_evaluations = get_text_field( data, 'psychologicalEvaluations', 'psychologicalEvaluationsText') row.domestic_violence_family = get_text_field( data, 'domesticViolenceFamily', 'domesticViolenceFamilyText') row.domestic_violence_spouse = get_text_field( data, 'domesticViolenceSpouse', 'domesticViolenceSpouseText') row.referral_hospital = get_text_field(data, 'referralHospital', 'referralHospitalText') row.other_pp = get_text_field(data, 'other', 'otherText')
def write_evaluation_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_ce = data.get('doctor') row.visit_date = data.get('visitDate') row.reason = data.get('reason') row.observations = data.get('observations') row.medications = data.get('medications') row.breast_exam = get_field(data, 'breastExam') row.diagnosis = data.get('diagnosis') row.treatment = data.get('treatment') row.community_visit = get_text_field(data, 'communityVisit', 'communityVisitDate') row.promoter_visit = get_text_field(data, 'promoterVisit', 'promoterVisitDate') row.refusal = get_text_field(data, 'refusal', 'refusalDate') row.next_visit_date = data.get('nextVisitDate') row.next_visit_reason = data.get('nextVisitReason')
def write_lab_orders_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_lo = data.get('doctor') row.hematic_biometry = get_field(data, 'hematicBiometry') row.urinalysis = get_field(data, 'urinalysis') row.biochemistry = get_field(data, 'biochemistry') row.lipid_profile = get_field(data, 'lipidProfile') row.pregnancy_test = get_field(data, 'pregnancyTest') row.immunology_test = get_field(data, 'immunologyTest') row.PAP_test = get_field(data, 'PAPTest') row.serology_test = get_field(data, 'serologyTest') row.stool_test = get_field(data, 'stoolTest') row.fecal_antigens = get_field(data, 'fecalAntigens') row.blood_type_lo = get_field(data, 'bloodType') row.HIV_test = get_field(data, 'HIVTest') row.other_lo = data.get('other')
def write_lab_tests_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_lt = data.get('doctor') row.CBC_Immature = data.get('CBCImmature') row.CBCMCHC = data.get('CBCMCHC') row.CBCMCH = data.get('CBCMCH') row.CBC_basophils = data.get('CBCBasophils') row.CBC_eosinophils = data.get('CBCEosinophils') row.CBC_hematocrit = data.get('CBCHematocrit') row.CBC_hemoglobin = data.get('CBCHemoglobin') row.CBC_lymphocytes = data.get('CBCLymphocytes') row.CBC_monocytes = data.get('CBCMonocytes') row.CBC_platelets = data.get('CBCPlatelets') row.CBC_segmented = data.get('CBCSegmented') row.CBCWBC = data.get('CBCWBC') row.CBC_platelet_count = data.get('CBCPlateletCount') row.CBCRBC = data.get('CBCRBC') row.CBCMCV = data.get('CBCMCV') row.biochem_uric = data.get('biochemUric') row.biochem_creatinine = data.get('biochemCreatinine') row.biochem_glucose = data.get('biochemGlucose') row.lipid_cholesterol = data.get('lipidCholesterol') row.lipid_HDL = data.get('lipidHDL') row.lipid_LDL = data.get('lipidLDL') row.lipid_triglycerides = data.get('lipidTriglycerides') row.lipid_VLDL = data.get('lipidVLDL') row.fecal_antigens = get_text_field_positive(data, 'fecalAntigens', 'fecalAntigensText') row.fecal_mononuclear = data.get('fecalMononuclear') row.fecal_polymophonuclear = data.get('fecalPolymophonuclear') row.fecal_bacteria = data.get('fecalBacteria') row.fecal_erythrocytes = data.get('fecalErythrocytes') row.fecal_leukocytes = data.get('fecalLeukocytes') row.fecal_others = data.get('fecalOthers') row.fecal_cysts = data.get('fecalCysts') row.fecal_trophozoites = data.get('fecalTrophozoites') row.fecal_PH = data.get('fecalPH') row.fecal_reducers = data.get('fecalReducers') row.fecal_occult = data.get('fecalOccult') row.fecal_color = data.get('fecalColor') row.fecal_observations = data.get('fecalObservations') row.fecal_consistency = data.get('fecalConsistency') row.pregnancy_hemogravindex = get_text_field_positive( data, 'pregnancyHemogravindex', 'pregnancyHemogravindexText') row.pregnancy_gravindex = get_text_field_positive( data, 'pregnancyGravindex', 'pregnancyGravindexText') row.microbiology_pilori = get_text_field_positive( data, 'microbiologyPilori', 'microbiologyPiloriText') row.microbiology_malaria = get_text_field_positive( data, 'microbiologyMalaria', 'microbiologyMalariaText') row.serology_strep = get_text_field_positive(data, 'serologyStrep', 'serologyStrepText') row.serology_rheumatoid = get_text_field_positive( data, 'serologyRheumatoid', 'serologyRheumatoidText') row.serology_others = get_text_field_positive(data, 'serologyOthers', 'serologyOthersText') row.serology_protein = get_text_field_positive(data, 'serologyProtein', 'serologyProteinText') row.serology_VDRL = get_text_field_positive(data, 'serologyVDRL', 'serologyVDRLText') row.serology_VIH = get_text_field_positive(data, 'serologyVIH', 'serologyVIHText') row.serology_VSG = data.get('serologyVSG') row.blood_type_lt = data.get('bloodType') row.RH_factor = get_text_field_positive(data, 'RHFactor', 'RHFactorText')
def write_pap_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_pap = data.get('doctor') row.adequate_cyto = get_text_field(data, 'adequateCyto', 'adequateCytoText') row.incomplete_cyto = get_text_field(data, 'incompleteCyto', 'incompleteCytoText') row.cellularity_cyto = get_text_field(data, 'cellularityCyto', 'cellularityCytoText') row.fixation_cyto = get_text_field(data, 'fixationCyto', 'fixationCytoText') row.hemorrhage_cyto = get_text_field(data, 'hemorrhageCyto', 'hemorrhageCytoText') row.exudate_cyto = get_text_field(data, 'exudateCyto', 'exudateCytoText') row.endocervical_cyto = get_text_field(data, 'endocervicalCyto', 'endocervicalCytoText') row.inadequate_cyto = get_text_field(data, 'inadequateCyto', 'inadequateCytoText') row.bleeding_cyto = get_text_field(data, 'bleedingCyto', 'bleedingCytoText') row.fixation_inadequate_cyto = get_text_field( data, 'fixationInadequateCyto', 'fixationInadequateCytoText') row.squamous = get_text_field(data, 'squamous', 'squamousText') row.US_squamous = get_text_field(data, 'USSquamous', 'USSquamousText') row.H_squamous = get_text_field(data, 'HSquamous', 'HSquamousText') row.lgsil = get_text_field(data, 'lgsil', 'lgsilText') row.cellular_lgsil = get_text_field(data, 'cellularLgsil', 'cellularLgsilText') row.dysplasia_lgsil = get_text_field(data, 'dysplasiaLgsil', 'dysplasiaLgsilText') row.hgsil = get_text_field(data, 'hgsil', 'hgsilText') row.cin_hgsil = get_text_field(data, 'cinHgsil', 'cinHgsilText') row.dysplasia_hgsil = get_text_field(data, 'dysplasiaHgsil', 'dysplasiaHgsilText') row.carcinoma_hgsil = get_text_field(data, 'carcinomaHgsil', 'carcinomaHgsilText') row.neg_intraepithelial = get_text_field(data, 'negIntraepithelial', 'negIntraepithelialText') row.ais_carcinoma = get_text_field(data, 'aisCarcinoma', 'aisCarcinomaText') row.invasive_carcinoma = get_text_field(data, 'invasiveCarcinoma', 'invasiveCarcinomaText') row.agc_carcinoma = get_text_field(data, 'agcCarcinoma', 'agcCarcinomaText') row.endocervical_carcinoma = get_text_field(data, 'endocervicalCarcinoma', 'endocervicalCarcinomaText') row.endometrial_carcinoma = get_text_field(data, 'endometrialCarcinoma', 'endometrialCarcinomaText') row.neoplasia_carcinoma = get_text_field(data, 'neoplasiaCarcinoma', 'neoplasiaCarcinomaText') row.nos_carcinoma = get_text_field(data, 'nosCarcinoma', 'nosCarcinomaText') row.iscc = get_text_field(data, 'iscc', 'isccText') row.atrophy = get_text_field(data, 'atrophy', 'atrophyText') row.coccoid = get_text_field(data, 'coccoid', 'coccoidText') row.regenerative = get_text_field(data, 'regenerative', 'regenerativeText') row.candida = get_text_field(data, 'candida', 'candidaText') row.bv = get_text_field(data, 'bv', 'bvText') row.herpes = get_text_field(data, 'herpes', 'herpesText') row.inflammation = get_text_field(data, 'inflammation', 'inflammationText') row.trichomonas = get_text_field(data, 'trichomonas', 'trichomonasText') row.other_pap = data.get('other')
def write_med5_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.medication_5 = data.get('medication') row.type_5 = data.get('type') row.dosage_5 = data.get('dosage') row.days_5 = data.get('days')
def write_xray_orders_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_xo = data.get('doctor') row.hip_antero = get_field(data, 'hipAntero') row.hip_lateral = get_field(data, 'hipLateral') row.hip_posterior = get_field(data, 'hipPosterior') row.retrograde_cystogram = get_field(data, 'retrogradeCystogram') row.cranial_antero = get_field(data, 'cranialAntero') row.cranial_lateral = get_field(data, 'cranialLateral') row.cranial_posterior = get_field(data, 'cranialPosterior') row.femur_antero = get_field(data, 'femurAntero') row.femur_lateral = get_field(data, 'femurLateral') row.femur_posterior = get_field(data, 'femurPosterior') row.foot_antero = get_field(data, 'footAntero') row.standing_lateral = get_field(data, 'standingLateral') row.standing_oblique = get_field(data, 'standingOblique') row.foot_posterior = get_field(data, 'footPosterior') row.iv_pyelogram = get_field(data, 'ivPyelogram') row.knee_antero = get_field(data, 'kneeAntero') row.knee_lateral = get_field(data, 'kneeLateral') row.knee_posterior = get_field(data, 'kneePosterior') row.tibia_antero = get_field(data, 'tibiaAntero') row.tibia_lateral = get_field(data, 'tibiaLateral') row.tibia_posterior = get_field(data, 'tibiaPosterior') row.ankle_antero = get_field(data, 'ankleAntero') row.ankle_lateral = get_field(data, 'ankleLateral') row.ankle_posterior = get_field(data, 'anklePosterior') row.chest_antero = get_field(data, 'chestAntero') row.chest_lateral = get_field(data, 'chestLateral') row.chest_posterior = get_field(data, 'chestPosterior')
def write_patient_details_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.medical_num = data.get('medicalNum') row.dental_num = data.get('dentalNum') row.optometry_num = data.get('optometryNum') row.patient_id = data.get('patientId') row.community = data.get('community') row.zone = data.get('zone') row.block = data.get('block') row.lot = data.get('lot') row.emergency_phone = data.get('emergencyPhone') row.mother = data.get('mother') row.mother_phone = data.get('motherPhone') row.father = data.get('father') row.father_phone = data.get('fatherPhone') row.partner = data.get('partner') row.partner_phone = data.get('partnerPhone') row.employer = data.get('employer') row.insurance = data.get('insurance')
def iter_data_rows(self): for visit in all_visits(): if not visit.patient_id: continue patient = patient_from_id(visit.patient_id) if not patient: continue row = PatientDataRow( visit_date=visit.check_in_timestamp.strftime("%d-%m-%Y"), first_name=patient.given_name.get('en'), surname=patient.surname.get('en'), date_of_birth=self.format_date(patient.date_of_birth), age=self.age_string_from_dob(patient.date_of_birth), gender=patient.sex, hometown=patient.hometown.get('en'), home_country=patient.country.get('en'), phone=patient.phone, ) provider = user_name_by_id(visit.provider_id) if provider is not None: self.write_text_event(row, 'doctor', provider.get('en')) camp_event = camp_by_patient(visit.patient_id) if camp_event is not None: self.write_text_event(row, 'camp', camp_event.event_metadata) for event in events_by_visit(visit.id): if event.event_type == 'Visit Type': self.write_text_event(row, 'visit_type', event.event_metadata) elif event.event_type == 'Medical History Full': write_medical_hx_event(row, event) elif event.event_type == 'Vitals': write_vitals_event(row, event) elif event.event_type == 'Examination Full': write_examination_event(row, event) elif event.event_type == 'Physiotherapy': write_physiotherapy_event(row, event) elif event.event_type == 'Medicine': if row.medication_1 is None: write_med1_event(row, event) elif row.medication_2 is None: write_med2_event(row, event) elif row.medication_3 is None: write_med3_event(row, event) elif row.medication_4 is None: write_med4_event(row, event) elif row.medication_5 is None: write_med5_event(row, event) elif event.event_type == 'Notes': self.write_text_event(row, 'notes', event.event_metadata) elif event.event_type == 'Dental Treatment': self.write_text_event(row, 'dental_treatment', event.event_metadata) elif event.event_type == 'Complaint': self.write_text_event(row, 'complaint', event.event_metadata) elif event.event_type == 'COVID-19 Screening': write_covid_19_event(row, event) elif event.event_type == 'Allergies': self.write_text_event(row, 'allergies_d', event.event_metadata) elif event.event_type == 'Medicine Dispensed': self.write_text_event(row, 'medicine_dispensed_d', event.event_metadata) elif event.event_type == 'Medical History': self.write_text_event(row, 'medical_hx_d', event.event_metadata) elif event.event_type == 'Examination': self.write_text_event(row, 'examination_d', event.event_metadata) elif event.event_type == 'Diagnosis': self.write_text_event(row, 'diagnosis_d', event.event_metadata) elif event.event_type == 'Treatment': self.write_text_event(row, 'treatment_d', event.event_metadata) elif event.event_type == 'Prescriptions': self.write_text_event(row, 'prescriptions_d', event.event_metadata) yield row
def write_dental_origin_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_do = data.get('doctor') row.feeding_center = get_feeding_center(data) row.other_feeding_center = data.get('otherFeedingCenter')
def write_vitals_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_v = data.get('doctor') row.glycemia = data.get('glycemia') row.weight = data.get('weight') row.weight_lb = data.get('weightLb') row.ideal_weight = data.get('idealWeight') if data.get('systolic') and data.get('diastolic'): row.blood_pressure = f"{data.get('systolic')}/{data.get('diastolic')}" row.pulse = data.get('pulse') row.respiration = data.get('respiration') row.o2_sats = data.get('sats') row.height = data.get('height') row.temperature = data.get('temp')
def write_family_planning_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_fp = data.get('doctor') row.age_sexual_relations = data.get('ageSexualRelations') row.number_children = data.get('numberChildren') row.more_children = get_field(data, 'moreChildren') row.abnormal_bleeding = get_field(data, 'abnormalBleeding') row.varicose = get_field(data, 'varicose') row.tubal_sterilization = get_text_field(data, 'tubalSterilization', 'tubalSterilizationDate') row.vasectomy_sterilization = get_text_field(data, 'vasectomySterilization', 'vasectomySterilizationDate') row.std_type = get_text_field(data, 'stdType', 'stdTypeText') row.injection = get_text_field(data, 'injection', 'injectionDate') row.iud_BC = get_text_field(data, 'iudBC', 'iudBCType') row.implant_BC = get_text_field(data, 'implantBC', 'implantBCDate') row.pills_BC = get_text_field(data, 'pillsBC', 'pillsBCDate') row.condoms = get_field(data, 'condoms') row.sex_orientation = data.get('sexOrientation') row.married = get_text_field(data, 'married', 'marriedText') row.permanent_partner = get_text_field(data, 'permanentPartner', 'permanentPartnerText')
def write_ultrasound_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_u = data.get('doctor') row.abdominal = get_field(data, 'abdominal') row.joints = get_field(data, 'joints') row.neck = get_field(data, 'neck') row.doppler = get_field(data, 'doppler') row.breast = get_field(data, 'breast') row.first_OB = get_field(data, 'firstOB') row.second_OB = get_field(data, 'secondOB') row.third_OB = get_field(data, 'thirdOB') row.soft_tissues = get_field(data, 'softTissues') row.pelvic = get_field(data, 'pelvic') row.prostate = get_field(data, 'prostate') row.renal = get_field(data, 'renal') row.testicular = get_field(data, 'testicular') row.other_u = get_field(data, 'other') row.goiter = data.get('goiter') row.wrapped_cord = data.get('wrappedCord') row.cholelithiasis = data.get('cholelithiasis') row.prostate1 = data.get('prostate1') row.prostate2 = data.get('prostate2') row.prostate3 = data.get('prostate3') row.prostate4 = data.get('prostate4') row.endometrial_thickening = data.get('endometrialThickening') row.splenomegaly = data.get('splenomegaly') row.mild_hepatic = data.get('mildHepatic') row.moderate_hepatic = data.get('moderateHepatic') row.severe_hepatic = data.get('severeHepatic') row.hepatomegaly = data.get('hepatomegaly') row.cirrhosis = data.get('cirrhosis') row.venous_insufficiency = data.get('venousInsufficiency') row.mild_renal = data.get('mildRenal') row.moderate_renal = data.get('moderateRenal') row.severe_renal = data.get('severeRenal') row.nephrolithiasis = data.get('nephrolithiasis') row.complex_masses = data.get('complexMasses') row.benign_nodules = data.get('benignNodules') row.malignant_nodules = data.get('malignantNodules') row.thyroid_nodules = data.get('thyroidNodules') row.normal_ultrasound = data.get('normalUltrasound') row.polycystic_ovaries = data.get('polycysticOvaries') row.simple_ovarian_cysts = data.get('simpleOvarianCysts')
def write_med_pathologies_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_mp = data.get('doctor') row.miscarriages = get_text_field(data, 'miscarriages', 'miscarriagesNumber') row.food_allergies = get_text_field(data, 'foodAllergies', 'foodAllergiesText') row.animal_allergies = get_text_field(data, 'animalAllergies', 'animalAllergiesText') row.atmosphere_allergies = get_text_field(data, 'atmosphereAllergies', 'atmosphereAllergiesText') row.insect_allergies = get_text_field(data, 'insectAllergies', 'insectAllergiesText') row.latex_allergies = get_text_field(data, 'latexAllergies', 'latexAllergiesText') row.medicine_allergies = get_text_field(data, 'medicineAllergies', 'medicineAllergiesText') row.other_allergies = get_text_field(data, 'otherAllergies', 'otherAllergiesText') row.tonsillitis = get_text_field(data, 'tonsillitis', 'tonsillitisText') row.anemic = get_text_field(data, 'anemic', 'anemicText') row.arthritis = get_text_field(data, 'arthritis', 'arthritisText') row.asthma = get_text_field(data, 'asthma', 'asthmaText') row.neck_pain = get_text_field(data, 'neckPain', 'neckPainText') row.cervicovaginitis = get_text_field(data, 'cervicovaginitis', 'cervicovaginitisText') row.c_section = data.get('cSection') row.sciatic_pain = get_text_field(data, 'sciaticPain', 'sciaticPainText') row.cholesterol = get_text_field(data, 'cholesterol', 'cholesterolText') row.infant_colic = get_text_field(data, 'infantColic', 'infantColicText') row.conjunctivitis = get_text_field(data, 'conjunctivitis', 'conjunctivitisText') row.covid = get_text_field(data, 'covid', 'covidText') row.malnourishment = get_text_field(data, 'malnourishment', 'malnourishmentText') row.diabetes = get_text_field(data, 'diabetes', 'diabetesText') row.migraines = get_text_field(data, 'migraines', 'migrainesText') row.diarrhea = get_text_field(data, 'diarrhea', 'diarrheaText') row.ecocardiogram = get_text_field(data, 'ecocardiogram', 'ecocardiogramText') row.electrocardiogram = get_text_field(data, 'electrocardiogram', 'electrocardiogramText') row.pregnant = get_field(data, 'pregnant') row.pregnancies = data.get('pregnancies') row.chikungunya = get_text_field(data, 'chikungunya', 'chikungunyaText') row.dengue = get_text_field(data, 'dengue', 'dengueText') row.malaria = get_text_field(data, 'malaria', 'malariaText') row.other_mosquito = get_text_field(data, 'otherMosquito', 'otherMosquitoText') row.zika = get_text_field(data, 'zika', 'zikaText') row.copd = get_text_field(data, 'copd', 'copdText') row.gastritis = get_text_field(data, 'gastritis', 'gastritisText') row.scabies = get_text_field(data, 'scabies', 'scabiesText') row.last_PAP = data.get('lastPAP') row.vaginal_fluid = get_text_field(data, 'vaginalFluid', 'vaginalFluidText') row.hypertension = get_text_field(data, 'hypertension', 'hypertensionText') row.hypothyroidism = get_text_field(data, 'hypothyroidism', 'hypothyroidismText') row.bacterial_resp = get_text_field(data, 'bacterialResp', 'bacterialRespText') row.viral_resp = get_text_field(data, 'viralResp', 'viralRespText') row.uti = get_text_field(data, 'uti', 'utiText') row.renal_failure = get_text_field(data, 'renalFailure', 'renalFailureText') row.breastfeeding = get_text_field(data, 'breastfeeding', 'breastfeedingText') row.lumbago = get_text_field(data, 'lumbago', 'lumbagoText') row.menopause = get_text_field(data, 'menopause', 'menopauseText') row.nausea = get_text_field(data, 'nausea', 'nauseaText') row.nephrolithiasis_renal = get_text_field(data, 'nephrolithiasisRenal', 'nephrolithiasisRenalText') row.diabetic_neuropathy = get_text_field(data, 'diabeticNeuropathy', 'diabeticNeuropathyText') row.obesity = get_text_field(data, 'obesity', 'obesityText') row.osteoarthritis = get_text_field(data, 'osteoarthritis', 'osteoarthritisText') row.otitis = get_text_field(data, 'otitis', 'otitisText') row.paralysis = get_text_field(data, 'paralysis', 'paralysisText') row.parasites = get_text_field(data, 'parasites', 'parasitesText') row.skin_healthy = get_text_field(data, 'skinHealthy', 'skinHealthyText') row.skin_ulcers = get_text_field(data, 'skinUlcers', 'skinUlcersText') row.skin_infected = get_text_field(data, 'skinInfected', 'skinInfectedText') row.lice = get_text_field(data, 'lice', 'liceText') row.postnatal_visit = get_field(data, 'postnatalVisit') row.prenatal_visit = get_field(data, 'prenatalVisit') row.eye_prob = get_text_field(data, 'eyeProb', 'eyeProbText') row.emotional_prob = get_text_field(data, 'emotionalProb', 'emotionalProbText') row.gynecological_prob = get_text_field(data, 'gynecologicalProb', 'gynecologicalProbText') row.parkinsons = get_text_field(data, 'parkinsons', 'parkinsonsText') row.epilepsy = get_text_field(data, 'epilepsy', 'epilepsyText') row.neurological_prob = get_text_field(data, 'neurologicalProb', 'neurologicalProbText') row.therapist_referred = get_text_field(data, 'therapistReferred', 'therapistReferredText') row.developmentally_delayed = get_text_field(data, 'developmentallyDelayed', 'developmentallyDelayedText') row.vitamins = get_text_field(data, 'vitamins', 'vitaminsText') row.last_menstruation = get_text_field(data, 'lastMenstruation', 'lastMenstruationText') row.hiv = get_text_field(data, 'hiv', 'hivText') row.vomiting = get_text_field(data, 'vomiting', 'vomitingText') row.other_mp = data.get('other')
def write_xray_results_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_xr = data.get('doctor') row.arthritis = get_text_field(data, 'arthritis', 'arthritisText') row.cardiomegaly = get_text_field(data, 'cardiomegaly', 'cardiomegalyText') row.ureteral_duplication = get_text_field(data, 'ureteralDuplication', 'ureteralDuplicationText') row.lung_disease = get_text_field(data, 'lungDisease', 'lungDiseaseText') row.fibrosis = get_text_field(data, 'fibrosis', 'fibrosisText') row.fractures = get_text_field(data, 'fractures', 'fracturesText') row.pneumonia = get_text_field(data, 'pneumonia', 'pneumoniaText') row.pulmonary_nodule = get_text_field(data, 'pulmonaryNodule', 'pulmonaryNoduleText') row.osteoarthritis_xray = get_text_field(data, 'osteoarthritis', 'osteoarthritisText') row.osteoporosis = get_text_field(data, 'osteoporosis', 'osteoporosisText') row.ectopic_kidney = get_text_field(data, 'ectopicKidney', 'ectopicKidneyText') row.rinon_herradura = get_text_field(data, 'rinonHerradura', 'rinonHerraduraText') row.tumor = get_text_field(data, 'tumor', 'tumorText')
def write_optometry_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_o = data.get('doctor') row.cataract = get_text_field(data, 'cataract', 'cataractText') row.cataract_operation = get_text_field(data, 'cataractOperation', 'cataractOperationDate') row.glasses = data.get('glasses') row.glasses_duration = data.get('glassesDuration') row.orange_reflection = get_field(data, 'orangeReflection') row.visualAcuity_OD = data.get('visualAcuityOD') row.visualAcuity_OS = data.get('visualAcuityOS') row.autorefractor_OD = data.get('autorefractorOD') row.autorefractor_OS = data.get('autorefractorOS') row.phoropter_OD = data.get('phoropterOD') row.phoropter_OS = data.get('phoropterOS') row.phoropterADD = data.get('phoropterADD') row.lenses_OD = data.get('lensesOD') row.lenses_OS = data.get('lensesOS') row.lenses_ADD = data.get('lensesADD') row.visual_acuity_lenses_OD = data.get('visualAcuityLensesOD') row.visual_acuity_lenses_OS = data.get('visualAcuityLensesOS')
def write_dental_treatment_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_dt = data.get('doctor') row.toothbrush = get_text_field(data, 'toothbrush', 'toothbrushText') row.consult = get_text_field(data, 'consult', 'consultText') row.extraction = get_text_field(data, 'extraction', 'extractionText') row.fluoride = get_text_field(data, 'fluoride', 'fluorideText') row.floss = get_text_field(data, 'floss', 'flossText') row.cleaning_first = get_text_field(data, 'cleaningFirst', 'cleaningFirstText') row.cleaning_firstYear = get_text_field(data, 'cleaningFirstYear', 'cleaningFirstYearText') row.cleaning_second = get_text_field(data, 'cleaningSecond', 'cleaningSecondText') row.toothpaste = get_text_field(data, 'toothpaste', 'toothpasteText') row.xray = get_text_field(data, 'xray', 'xrayText') row.amalgama_restoration = get_text_field(data, 'amalgamaRestoration', 'amalgamaRestorationText') row.metal_restoration = get_text_field(data, 'metalRestoration', 'metalRestorationText') row.ionomero_restoration = get_text_field(data, 'ionomeroRestoration', 'ionomeroRestorationText') row.mri_restoration = get_text_field(data, 'mriRestoration', 'mriRestorationText') row.space_restoration = get_text_field(data, 'spaceRestoration', 'spaceRestorationText') row.resin_restoration = get_text_field(data, 'resinRestoration', 'resinRestorationText') row.zoe_restoration = get_text_field(data, 'zoeRestoration', 'zoeRestorationText') row.acetate_restoration = get_text_field(data, 'acetateRestoration', 'acetateRestorationText') row.pulpotomy_restoration = get_text_field(data, 'pulpotomyRestoration', 'pulpotomyRestorationText') row.sd_fluoride = get_text_field(data, 'sdFluoride', 'sdFluorideText') row.sealant = get_text_field(data, 'sealant', 'sealantText') row.teaching = get_text_field(data, 'teaching', 'teachingText') row.impression = get_text_field(data, 'impression', 'impressionText') row.other_dt = get_text_field(data, 'other', 'otherText')
def write_urine_tests_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_lu = data.get('doctor') row.color_physical = data.get('colorPhysical') row.aspects_physical = data.get('aspectsPhysical') row.sediment_physical = data.get('sedimentPhysical') row.density_physical = data.get('densityPhysical') row.proteins_chem = get_text_field_positive(data, 'proteinsChem', 'proteinsChemDate') row.hemoglobin_chem = get_text_field_positive(data, 'hemoglobinChem', 'hemoglobinChemDate') row.ketonic_chem = get_text_field_positive(data, 'ketonicChem', 'ketonicChemDate') row.pH_chem = data.get('pHChem') row.urobilinogen_chem = get_text_field_positive(data, 'urobilinogenChem', 'urobilinogenChemDate') row.glucose_chem = get_text_field_positive(data, 'glucoseChem', 'glucoseChemDate') row.bilirubins_chem = get_text_field_positive(data, 'bilirubinsChem', 'bilirubinsChemDate') row.leukocytes_chem = get_text_field_positive(data, 'leukocytesChem', 'leukocytesChemDate') row.nitrite_chem = get_text_field_positive(data, 'nitriteChem', 'nitriteChemDate') row.epithelial_micro = data.get('epithelialMicro') row.leukocytes_micro = data.get('leukocytesMicro') row.erythrocytes_micro = data.get('erythrocytesMicro') row.cylinders_micro = data.get('cylindersMicro') row.crystals_micro = data.get('crystalsMicro') row.bacteria_micro = data.get('bacteriaMicro') row.yeasts_micro = data.get('yeastsMicro') row.cRenal_micro = data.get('cRenalMicro') row.h_mucous_micro = data.get('hMucousMicro') row.observations_micro = data.get('observationsMicro')
def iter_data_rows(self, patient_id): for visit in patient_visits(patient_id): if not visit.patient_id: continue patient = patient_from_id(visit.patient_id) if not patient: continue row = PatientDataRow( visit_date=visit.check_in_timestamp.strftime("%Y-%m-%d"), first_name=patient.given_name.get('en'), surname=patient.surname.get('en'), age=self.age_string_from_dob(patient.date_of_birth), gender=patient.sex, home_country=patient.country.get('en'), phone=patient.phone) patient_details_event = patient_details(patient_id) if patient_details_event is not None: write_patient_details_event(row, patient_details_event) for event in events_by_visit(visit.id): if event.event_type == 'Medical History': write_medical_hx_event(row, event) elif event.event_type == 'Patient Details': write_patient_details_event(row, event) elif event.event_type == 'Vitals': write_vitals_event(row, event) elif event.event_type == 'Evaluation': write_evaluation_event(row, event) elif event.event_type == 'Notes': self.write_text_event(row, 'notes', event.event_metadata) elif event.event_type == 'Medicines in Stock': write_med_stock_event(row, event) elif event.event_type == 'Medicines OTC': write_med_otc_event(row, event) elif event.event_type == 'Controlled Medicines': write_controlled_med_event(row, event) elif event.event_type == 'Medical Pathologies': write_med_pathologies_event(row, event) elif event.event_type == 'Psychological Pathologies': write_psych_pathologies_event(row, event) elif event.event_type == 'Household Environment': write_household_event(row, event) elif event.event_type == 'Lab Orders': write_lab_orders_event(row, event) elif event.event_type == 'Lab Tests': write_lab_tests_event(row, event) elif event.event_type == 'Urine Tests': write_urine_tests_event(row, event) elif event.event_type == 'PAP Results': write_pap_event(row, event) elif event.event_type == 'Ultrasound': write_ultrasound_event(row, event) elif event.event_type == 'Family Planning': write_family_planning_event(row, event) elif event.event_type == 'Dental Origin': write_dental_origin_event(row, event) elif event.event_type == 'Dental Treatment': write_dental_treatment_event(row, event) elif event.event_type == 'Program Trainings': write_program_trainings_event(row, event) elif event.event_type == 'Xray Orders': write_xray_orders_event(row, event) elif event.event_type == 'Xray Results': write_xray_results_event(row, event) elif event.event_type == 'Optometry': write_optometry_event(row, event) elif event.event_type == 'Accident Report': write_accident_report_event(row, event) yield row
def write_program_trainings_event(row: PatientDataRow, event): data = json.loads(event.event_metadata) row.doctor_pt = data.get('doctor') row.asthma_subject = get_text_field(data, 'asthmaSubject', 'asthmaSubjectText') row.pregnancy_subject = get_text_field(data, 'pregnancySubject', 'pregnancySubjectText') row.dispensarizados1_subject = get_text_field( data, 'dispensarizados1Subject', 'dispensarizados1SubjectText') row.dispensarizados2_subject = get_text_field( data, 'dispensarizados2Subject', 'dispensarizados2SubjectText') row.dispensarizados3_subject = get_text_field( data, 'dispensarizados3Subject', 'dispensarizados3SubjectText') row.dispensarizados4_subject = get_text_field( data, 'dispensarizados4Subject', 'dispensarizados4SubjectText') row.breastfeeding_subject = get_text_field(data, 'breastfeedingSubject', 'breastfeedingSubjectText') row.girls_group_subject = get_text_field(data, 'girlsGroupSubject', 'girlsGroupSubjectText') row.lbgtq_subject = get_text_field(data, 'lbgtqSubject', 'lbgtqSubjectText') row.boys_older_subject = get_text_field(data, 'boysOlderSubject', 'boysOlderSubjectText') row.boys_younger_subject = get_text_field(data, 'boysYoungerSubject', 'boysYoungerSubjectText') row.new_mothers_subject = get_text_field(data, 'newMothersSubject', 'newMothersSubjectText') row.family_planning_subject = get_text_field(data, 'familyPlanningSubject', 'familyPlanningSubjectText') row.toddler_mothers_subject = get_text_field(data, 'toddlerMothersSubject', 'toddlerMothersSubjectText') row.health_promoters_subject = get_text_field( data, 'healthPromotersSubject', 'healthPromotersSubjectText') row.hiv_subject = get_text_field(data, 'hivSubject', 'hivSubjectText') row.other_subject = get_text_field(data, 'otherSubject', 'otherSubjectText')