diff --git a/notebooks/ht_analysis.ipynb b/notebooks/ht_analysis.ipynb index 403239978f..dba24bba3c 100644 --- a/notebooks/ht_analysis.ipynb +++ b/notebooks/ht_analysis.ipynb @@ -45,21 +45,39 @@ " truncated_str = date_str[:10]\n", " return pd.to_datetime(truncated_str)\n", "\n", - "def date_first_ht_med(meds_df, patient_id):\n", - " patient_ht_meds = meds_df[(meds_df[\"PATIENT\"] == patient_id) & (meds_df[\"REASONCODE\"] == \"hypertension_dx\")]\n", - " first_date = patient_meds[\"START\"].min()\n", - " return first_date\n", + "def date_first_and_last_ht_med(meds_df, patient_id):\n", + " patient_ht_meds = meds_df[(meds_df[\"PATIENT\"] == patient_id) & (meds_df[\"REASONCODE\"] == \"Essential hypertension (disorder)\")]\n", + " first_date = patient_ht_meds[\"START\"].min()\n", + " last_date = patient_ht_meds[\"START\"].max()\n", + " return first_date, last_date\n", "\n", - "def plot_bp(patient_id, obs_df, conds, encounters):\n", + "def plot_bp(patient_id, obs_df, conds, meds):\n", + " \n", " ht_conds = conds[conds[\"DESCRIPTION\"] == \"Essential hypertension (disorder)\"]\n", " ht_patients = list(ht_conds[\"PATIENT\"])\n", + " ht_meds = meds[meds[\"REASONCODE\"] == \"Essential hypertension (disorder)\"]\n", + " ht_meds_patients = set(ht_meds[\"PATIENT\"])\n", " if patient_id in ht_patients:\n", " ht_diagnosis_date = ht_conds[ht_conds[\"PATIENT\"] == patient_id][\"START\"].iloc[0]\n", " print(ht_diagnosis_date)\n", " ht_diagnosis_date = date_format(ht_diagnosis_date)\n", " print(ht_diagnosis_date)\n", + " \n", " else:\n", " ht_diagnosis_date = None\n", + "\n", + " if patient_id in ht_meds_patients:\n", + " date_meds_first, date_meds_last = date_first_and_last_ht_med(meds, patient_id)\n", + " date_meds_last = date_format(date_meds_last)\n", + " date_meds_first = date_format(date_meds_first)\n", + "\n", + " if date_meds_first == date_meds_last:\n", + " date_meds_last = None\n", + " else:\n", + " date_meds_first = None\n", + " date_meds_last = None\n", + "\n", + "\n", " sys_values = obs_df[(obs_df[\"DESCRIPTION\"].str.contains(\"Systolic\")) & (obs[\"PATIENT\"] == patient_id)]\n", " dia_values = obs_df[(obs_df[\"DESCRIPTION\"].str.contains(\"Diastolic\")) & (obs[\"PATIENT\"] == patient_id)]\n", " fig, ax = plt.subplots(1,1, figsize=(8,4))\n", @@ -71,6 +89,12 @@ "\n", " if ht_diagnosis_date:\n", " ax.axvline(ht_diagnosis_date, label=\"HT Diagnosis\", c=\"r\", linestyle = \"--\")\n", + " \n", + " if date_meds_first:\n", + " ax.axvline(date_meds_first, label=\"First HT Meds\", c=\"b\", linestyle = \"--\")\n", + " \n", + " if date_meds_last:\n", + " ax.axvline(date_meds_last, label=\"Last HT Meds\", c=\"g\", linestyle = \"--\")\n", " ax.set_title(title)\n", " plt.xticks(rotation = 45)\n", " plt.legend()\n", @@ -87,8 +111,8 @@ "patients = list(set(conds[\"PATIENT\"]))\n", "\n", "# plot for first 10 patients\n", - "for pat in patients[:4]:\n", - " plot_bp(pat, obs, conds, encounters)" + "for pat in patients[:10]:\n", + " plot_bp(pat, obs, conds, meds)" ] }, { @@ -226,7 +250,7 @@ ], "metadata": { "kernelspec": { - "display_name": "swp", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -240,7 +264,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.12.0" } }, "nbformat": 4, diff --git a/src/main/java/org/mitre/synthea/modules/BloodPressureValueGenerator.java b/src/main/java/org/mitre/synthea/modules/BloodPressureValueGenerator.java index 1eede4e099..570aa95e9b 100644 --- a/src/main/java/org/mitre/synthea/modules/BloodPressureValueGenerator.java +++ b/src/main/java/org/mitre/synthea/modules/BloodPressureValueGenerator.java @@ -94,8 +94,7 @@ public double getValue(long time) { cachedValue = baseline + getMedicationImpacts(person) + getLifestyleImpacts(person, baseline, time) - + getVariation(person, time) - + getPreHypertensionImpacts(person); + + getVariation(person, time); cacheTime = time; return cachedValue; @@ -133,7 +132,7 @@ private static double getDrugImpact(Person person, String drug, SysDias sysDias, private double calculateBaseline(Person person) { boolean hypertension = (boolean) person.attributes.getOrDefault("hypertension", false); boolean severe = (boolean) person.attributes.getOrDefault("hypertension_severe", false); - + int pre_hypertension_step = ((Number) person.attributes.getOrDefault("pre_hypertension_step", 0)).intValue(); double baseline; String bpBaselineKey = "bp_baseline_" + hypertension + "_" + sysDias.toString(); @@ -144,7 +143,7 @@ private double calculateBaseline(Person person) { } else { if (sysDias == SysDias.SYSTOLIC) { - if (hypertension) { + if (hypertension && pre_hypertension_step > 0) { if (severe) { // this leaves fewer people at the upper end of the spectrum baseline = person.rand(HYPERTENSIVE_SYS_BP_RANGE[1], HYPERTENSIVE_SYS_BP_RANGE[2]); @@ -157,7 +156,7 @@ private double calculateBaseline(Person person) { baseline = person.rand(NORMAL_SYS_BP_RANGE); } } else { - if (hypertension) { + if (hypertension && pre_hypertension_step > 0) { baseline = person.rand(HYPERTENSIVE_DIA_BP_RANGE); } else { baseline = person.rand(NORMAL_DIA_BP_RANGE); diff --git a/src/main/resources/htn_drugs.csv b/src/main/resources/htn_drugs.csv index 21dec8286a..1c32187502 100644 --- a/src/main/resources/htn_drugs.csv +++ b/src/main/resources/htn_drugs.csv @@ -6,9 +6,11 @@ Diuretic,Diuretic,Triamterene/HCTZ,310818,hydroCHLOROthiazide 50 MG / triamteren Diuretic,Diuretic,Amiloride,977880,aMILoride hydrochloride 5 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Diuretic,Diuretic,HCTZ,310798,Hydrochlorothiazide 25 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Ace Inhibitor,ACE or ARB,Lisinopril,314076,lisinopril 10 MG Oral Tablet,-11.5,-16.29,-7.2,-13.6 +Ace Inhibitor,ACE or ARB,enalapril,3827,enalapril maleate 20 MG Oral Tablet ,-11.5,-16.29,-7.2,-13.6 Angiotensin Receptor Blocker,ACE or ARB,Losartan,979492,losartan potassium 50 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Angiotensin Receptor Blocker,ACE or ARB,Azilsartan,1091646,azilsartan medoxomil 40 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Angiotensin Receptor Blocker,ACE or ARB,Azilsartan/chlorthalidone,1235144,azilsartan medoxomil 40 MG / chlorthalidone 12.5 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 +Angiotensin Receptor Blocker, ACE or ARB,Candesartan,153822,candesartan cilexetil 4 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Calcium Channel Blockers,Calcium Channel Blockers,Diltiazem,830877,24 HR dilTIAZem hydrochloride 180 MG Extended Release Oral Tablet,-11.5,-16.29,-9.3,-11.7 Calcium Channel Blockers,Calcium Channel Blockers,Amlodipine,197361,amLODIPine 5 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Calcium Channel Blockers,Calcium Channel Blockers,Amlodipine,308136,amLODIPine 2.5 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 @@ -16,6 +18,7 @@ Beta Blockers,Beta Blockers,Metoprolol Tartrate,866514,metoprolol tartrate 50 MG Beta Blockers,Beta Blockers,Metoprolol ER,866412,24 HR metoprolol succinate 100 MG Extended Release Oral Tablet,-11.5,-16.29,-8.7,-15.5 Beta Blockers,Beta Blockers,Atenolol,197381,atenolol 50 MG Oral Tablet,-11.5,-16.29,-8.7,-15.5 Beta Blockers,Beta Blockers,Atenolol/Chlorthalidone,197383,atenolol 50 MG / chlorthalidone 25 MG Oral Tablet,-11.5,-16.29,-8.7,-15.5 +Beta Blockers,Beta Blockers,Labetalol,896758,labetalol hydrochloride 100 MG Oral Tablet ,-11.5,-16.29,-8.7,-15.5 Vasodilators,Vasodilators,Hydralazine,905395,hydrALAZINE hydrochloride 50 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Vasodilators,Vasodilators,Minoxidil,197987,minoxidil 2.5 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 Alpha 2 Agonist,Alpha 2 Agonist,Guanfacine,197745,guanFACINE 1 MG Oral Tablet,-11.5,-16.29,-9.3,-11.7 diff --git a/src/main/resources/modules/hypertension.json b/src/main/resources/modules/hypertension.json index 8fe2c81f04..acfa71f271 100644 --- a/src/main/resources/modules/hypertension.json +++ b/src/main/resources/modules/hypertension.json @@ -27,39 +27,71 @@ }, "Set_Yearly_Risk": { "type": "Simple", - "remarks": [ - "By age 55 years, cumulative incidence of hypertension was 75.5% in black men, 75.7% in black women, 54.5% in white men, and 40.0% in white women -- https://www.ahajournals.org/doi/full/10.1161/JAHA.117.007988", - "Cumulative Incidence = 1 - e(-IR x D)", - "e^(-IRxD) = 1 - CI", - "-IR x D = ln(1-CI)", - "IR = -ln(1-CI)/D", - "Assuming 0% at age 18, and per the chart the increase is roughly linear, use the following yearly incidence rates:", - "black men - 3.8%", - "black women - 3.8%", - "white men - 2.1%", - "white women - 1.4%", - "others - 2.5% (just a value in the middle, no source)" - ], - "conditional_transition": [ + "name": "Set_Yearly_Risk", + "complex_transition": [ + { + "condition": { + "condition_type": "And", + "conditions": [ + { + "condition_type": "Race", + "race": "White" + }, + { + "condition_type": "Gender", + "gender": "F" + } + ] + }, + "distributions": [], + "transition": "White_Female" + }, + { + "condition": { + "condition_type": "And", + "conditions": [ + { + "condition_type": "Gender", + "gender": "M" + }, + { + "condition_type": "Race", + "race": "White" + } + ] + }, + "distributions": [], + "transition": "White_Male" + }, { - "transition": "Black", "condition": { "condition_type": "Race", "race": "Black" - } + }, + "distributions": [], + "transition": "Black" }, { - "transition": "White", "condition": { - "condition_type": "Race", - "race": "White" - } + "condition_type": "And", + "conditions": [ + { + "condition_type": "Gender", + "gender": "M" + }, + { + "condition_type": "Race", + "race": "Black" + } + ] + }, + "distributions": [] }, { + "distributions": [], "transition": "Others" } - ], - "name": "Set_Yearly_Risk" + ] }, "Chance_of_Hypertension": { "type": "Simple", @@ -115,75 +147,35 @@ "type": "SetAttribute", "attribute": "hypertension", "value": true, - "direct_transition": "Post_Onset_BP_record", + "direct_transition": "Wellness_Encounter", "name": "Onset_Hypertension" }, - "Black": { - "type": "Simple", - "conditional_transition": [ - { - "transition": "Black_Female", - "condition": { - "condition_type": "Gender", - "gender": "F" - } - }, - { - "transition": "Black_Male" - } - ], - "name": "Black" - }, - "White": { - "type": "Simple", - "conditional_transition": [ - { - "transition": "White_Female", - "condition": { - "condition_type": "Gender", - "gender": "F" - } - }, - { - "transition": "White_Male" - } - ], - "name": "White" - }, - "Others": { - "type": "SetAttribute", - "attribute": "risk_of_hypertension", - "direct_transition": "Chance_of_Hypertension", - "value": 0.025, - "name": "Others" - }, - "Black_Female": { - "type": "SetAttribute", - "attribute": "risk_of_hypertension", - "direct_transition": "Chance_of_Hypertension", - "value": 0.038, - "name": "Black_Female" - }, - "Black_Male": { + "White_Female": { "type": "SetAttribute", - "attribute": "risk_of_hypertension", + "attribute": "hypertension_risk", "direct_transition": "Chance_of_Hypertension", - "value": 0.038, - "name": "Black_Male" + "name": "White_Female", + "value": 0.014 }, "White_Male": { "type": "SetAttribute", - "attribute": "risk_of_hypertension", - "direct_transition": "Chance_of_Hypertension", + "attribute": "hypertension_risk", + "name": "White_Male", "value": 0.021, - "name": "White_Male" + "direct_transition": "Chance_of_Hypertension" }, - "White_Female": { + "Others": { "type": "SetAttribute", - "attribute": "risk_of_hypertension", + "attribute": "", + "name": "Others", + "direct_transition": "Chance_of_Hypertension" + }, + "Black": { + "type": "SetAttribute", + "attribute": "hypertension_risk", "direct_transition": "Chance_of_Hypertension", - "value": 0.014, - "name": "White_Female" + "name": "Black", + "value": 0.038 }, "Diagnose_Hypertension": { "type": "ConditionOnset", @@ -196,7 +188,7 @@ } ], "assign_to_attribute": "hypertension_dx", - "direct_transition": "Post_Diagnosis_BP_record", + "direct_transition": "LifeStyle_Modifications_Hypertension_CarePlan", "name": "Diagnose_Hypertension" }, "Hypertension_Followup_Encounter": { @@ -226,7 +218,7 @@ "value": true }, "distributions": [], - "transition": "Delay 2_Month" + "transition": "Annual_checkup_delay" }, { "condition": { @@ -310,7 +302,7 @@ "value": true }, "distributions": [], - "transition": "Delay_2_Month_2" + "transition": "Annual_checkup_delay_2" }, { "condition": { @@ -347,11 +339,6 @@ ], "name": "End_Hypertension_Followup_Encounter_2" }, - "End_Hypertension_Followup_Encounter_3": { - "type": "EncounterEnd", - "direct_transition": "Terminal", - "name": "End_Hypertension_Followup_Encounter_3" - }, "LifeStyle_Modifications_Hypertension_CarePlan": { "type": "CarePlanStart", "codes": [ @@ -399,7 +386,7 @@ } ], "reason": "hypertension_dx", - "direct_transition": "Prescribe_Medication", + "direct_transition": "End_Wellness_Encounter", "name": "LifeStyle_Modifications_Hypertension_CarePlan" }, "Wellness_Encounter": { @@ -492,9 +479,17 @@ "transition": "Included" } ], - "wellness": true, "reason": "hypertension_screening_reason", - "name": "Wellness_Encounter" + "name": "Wellness_Encounter", + "codes": [ + { + "system": "SNOMED-CT", + "code": 1287707002, + "display": "Consultation for Hypertension", + "value_set": "" + } + ], + "encounter_class": "ambulatory" }, "End_Wellness_Encounter": { "type": "EncounterEnd", @@ -639,7 +634,7 @@ "operator": "==", "value": false }, - "transition": "Prescribe_Medication_2" + "transition": "Prescribe_Medication" }, { "transition": "End_Hypertension_Followup_Encounter" @@ -692,7 +687,7 @@ "operator": "==", "value": false }, - "transition": "Prescribe_Medication_3" + "transition": "Prescribe_Medication_2" }, { "transition": "End_Hypertension_Followup_Encounter_2" @@ -739,7 +734,7 @@ ], "conditional_transition": [ { - "transition": "Referral To Hypertension Clinic", + "transition": "Prescribe_Medication_3", "condition": { "condition_type": "Attribute", "attribute": "blood_pressure_controlled", @@ -763,13 +758,13 @@ "value_set": "" } ], - "direct_transition": "Prescribe_Medication_4", - "name": "Referral To Hypertension Clinic" + "name": "Referral To Hypertension Clinic", + "direct_transition": "Prescribe_Medication_4" }, "Set_BP_Not Controlled": { "type": "SetAttribute", "attribute": "blood_pressure_controlled", - "direct_transition": "LifeStyle_Modifications_Hypertension_CarePlan", + "direct_transition": "Hypertension_Symptoms_Encounter", "value": false, "name": "Set_BP_Not Controlled" }, @@ -856,24 +851,6 @@ "direct_transition": "Wait Until Next Checkup", "name": "Excluded" }, - "Prescribe_Medication_3": { - "type": "CallSubmodule", - "submodule": "medications/hypertension_medication", - "direct_transition": "End_Hypertension_Followup_Encounter_2", - "name": "Prescribe_Medication_3" - }, - "Prescribe_Medication_2": { - "type": "CallSubmodule", - "submodule": "medications/hypertension_medication", - "direct_transition": "End_Hypertension_Followup_Encounter", - "name": "Prescribe_Medication_2" - }, - "Prescribe_Medication": { - "type": "CallSubmodule", - "submodule": "medications/hypertension_medication", - "direct_transition": "End_Wellness_Encounter", - "name": "Prescribe_Medication" - }, "Terminal": { "type": "Terminal", "name": "Terminal" @@ -908,7 +885,7 @@ }, "Wait Until Next Checkup": { "type": "EncounterEnd", - "direct_transition": "Wellness_Encounter", + "direct_transition": "Hypertension_Symptoms_Encounter", "name": "Wait Until Next Checkup" }, "Drop Outs": { @@ -930,8 +907,8 @@ "Prescribe_Medication_4": { "type": "CallSubmodule", "submodule": "medications/hypertension_medication", - "direct_transition": "End_Hypertension_Followup_Encounter_3", - "name": "Prescribe_Medication_4" + "name": "Prescribe_Medication_4", + "direct_transition": "Terminal" }, "Pre_Diagnosis_Delay": { "type": "Delay", @@ -942,14 +919,17 @@ "standardDeviation": 3 } }, - "unit": "months", + "unit": "hours", "name": "Pre_Diagnosis_Delay", - "direct_transition": "increase_pre_hypertension_step" + "direct_transition": "increase_pre_hypertension_step", + "remarks": [ + "source for frequency of measurements: https://bihsoc.org/wp-content/uploads/2017/09/Protocol.pdf" + ] }, "Initialize_Prehypertension": { "type": "SetAttribute", "attribute": "pre_hypertension_step", - "direct_transition": "Pre_Diagnosis_BP_record", + "direct_transition": "Set_BP_Not Controlled", "name": "Initialize_Prehypertension", "value": 1 }, @@ -958,16 +938,16 @@ "name": "Check_step", "conditional_transition": [ { - "transition": "Pre_Diagnosis_BP_record", + "transition": "Pre_Diagnosis_Home_BP_record", "condition": { "condition_type": "Attribute", "attribute": "pre_hypertension_step", "operator": "<=", - "value": 5 + "value": 14 } }, { - "transition": "Onset_Hypertension" + "transition": "check_for_dropouts" } ] }, @@ -993,7 +973,11 @@ } ], "unit": "mm[Hg]", - "vital_sign": "Systolic Blood Pressure" + "vital_sign": "Systolic Blood Pressure", + "range": { + "low": 1, + "high": 2 + } }, { "category": "vital-signs", @@ -1009,7 +993,7 @@ } ], "name": "Pre_Diagnosis_BP_record", - "direct_transition": "Pre_Diagnosis_Delay" + "direct_transition": "Home_Blood_Pressure_Monitoring" }, "increase_pre_hypertension_step": { "type": "Counter", @@ -1018,7 +1002,24 @@ "direct_transition": "Check_step", "name": "increase_pre_hypertension_step" }, - "Post_Onset_BP_record": { + "Home_Blood_Pressure_Monitoring": { + "type": "Device", + "code": { + "system": "SNOMED-CT", + "code": 990201000000104, + "display": "Blood Pressure Cuff" + }, + "direct_transition": "End_Hypertension_Symptoms_Encounter", + "name": "Home_Blood_Pressure_Monitoring" + }, + "Hypertension_Symptoms_Encounter": { + "type": "Encounter", + "telemedicine_possibility": "none", + "direct_transition": "Pre_Diagnosis_BP_record", + "name": "Hypertension_Symptoms_Encounter", + "wellness": true + }, + "Pre_Diagnosis_Home_BP_record": { "type": "MultiObservation", "category": "vital-signs", "codes": [ @@ -1055,49 +1056,218 @@ "vital_sign": "Diastolic Blood Pressure" } ], - "name": "Post_Onset_BP_record", - "direct_transition": "Wellness_Encounter" + "name": "Pre_Diagnosis_Home_BP_record", + "direct_transition": "Pre_Diagnosis_Delay" }, - "Post_Diagnosis_BP_record": { - "type": "MultiObservation", - "category": "vital-signs", - "codes": [ - { - "system": "LOINC", - "code": "85354-9", - "display": "Blood pressure panel with all children optional", - "value_set": "" - } - ], - "observations": [ - { - "category": "vital-signs", - "codes": [ - { - "system": "LOINC", - "code": "8480-6", - "display": "Systolic Blood Pressure" - } - ], - "unit": "mm[Hg]", - "vital_sign": "Systolic Blood Pressure" + "End_Hypertension_Symptoms_Encounter": { + "type": "EncounterEnd", + "direct_transition": "Pre_Diagnosis_Delay", + "name": "End_Hypertension_Symptoms_Encounter" + }, + "Prescribe_Medication": { + "type": "CallSubmodule", + "submodule": "medications/hypertension_medication", + "direct_transition": "End_Hypertension_Followup_Encounter", + "name": "Prescribe_Medication" + }, + "Prescribe_Medication_2": { + "type": "CallSubmodule", + "submodule": "medications/hypertension_medication", + "direct_transition": "End_Hypertension_Followup_Encounter_2", + "name": "Prescribe_Medication_2" + }, + "Prescribe_Medication_3": { + "type": "CallSubmodule", + "submodule": "medications/hypertension_medication", + "name": "Prescribe_Medication_3", + "direct_transition": "End_Hypertension_Followup_Encounter_3" + }, + "Delay_Month_2": { + "type": "Delay", + "exact": { + "quantity": 2, + "unit": "months" }, - { - "category": "vital-signs", - "codes": [ - { - "system": "LOINC", - "code": "8462-4", - "display": "Diastolic Blood Pressure" + "name": "Delay_Month_2", + "direct_transition": "Hypertension_Followup_Encounter_4" + }, + "Set_BP_Controlled_4": { + "type": "SetAttribute", + "attribute": "blood_pressure_controlled", + "value": true, + "name": "Set_BP_Controlled_4", + "direct_transition": "Delay_Month_2" + }, + "Hypertension_Followup_Encounter_4": { + "type": "Encounter", + "encounter_class": "ambulatory", + "telemedicine_possibility": "possible", + "codes": [ + { + "system": "SNOMED-CT", + "code": 390906007, + "display": "Follow-up encounter (procedure)", + "value_set": "" + } + ], + "reason": "hypertension_dx", + "name": "Hypertension_Followup_Encounter_4", + "direct_transition": "Record_BP_4" + }, + "End_Hypertension_Followup_Encounter_3": { + "type": "EncounterEnd", + "name": "End_Hypertension_Followup_Encounter_3", + "complex_transition": [ + { + "condition": { + "condition_type": "Attribute", + "attribute": "hypertension_controlled", + "operator": "==", + "value": true + }, + "distributions": [ + { + "transition": "Annual_checkup_delay_3", + "distribution": 1 + } + ] + }, + { + "condition": { + "condition_type": "Attribute", + "attribute": "hypertension_severe", + "operator": "==", + "value": true + }, + "distributions": [], + "transition": "Delay_Month_2" + }, + { + "condition": { + "condition_type": "Attribute", + "attribute": "hypertension_severe", + "operator": "==", + "value": false + }, + "distributions": [ + { + "transition": "Delay_Month_2", + "distribution": { + "attribute": "attribute", + "default": 0.365 + } + }, + { + "transition": "Set_BP_Controlled_4", + "distribution": 0.635 + } + ] + } + ] + }, + "Record_BP_4": { + "type": "MultiObservation", + "category": "vital-signs", + "codes": [ + { + "system": "LOINC", + "code": "85354-9", + "display": "Blood pressure panel with all children optional", + "value_set": "" + } + ], + "observations": [ + { + "category": "vital-signs", + "codes": [ + { + "system": "LOINC", + "code": "8480-6", + "display": "Systolic Blood Pressure" + } + ], + "unit": "mm[Hg]", + "vital_sign": "Systolic Blood Pressure" + }, + { + "category": "vital-signs", + "codes": [ + { + "system": "LOINC", + "code": "8462-4", + "display": "Diastolic Blood Pressure" + } + ], + "unit": "mm[Hg]", + "vital_sign": "Diastolic Blood Pressure" + } + ], + "name": "Record_BP_4", + "conditional_transition": [ + { + "transition": "Referral To Hypertension Clinic", + "condition": { + "condition_type": "Attribute", + "attribute": "hypertension_controlled", + "operator": "==", + "value": false } - ], - "unit": "mm[Hg]", - "vital_sign": "Diastolic Blood Pressure" - } - ], - "name": "Post_Diagnosis_BP_record", - "direct_transition": "Set_BP_Not Controlled" - } + }, + { + "transition": "Terminal" + } + ] + }, + "Annual_checkup_delay": { + "type": "Delay", + "distribution": { + "kind": "EXACT", + "parameters": { + "value": 8 + } + }, + "unit": "months", + "direct_transition": "Delay 2_Month", + "name": "Annual_checkup_delay" + }, + "Annual_checkup_delay_2": { + "type": "Delay", + "distribution": { + "kind": "EXACT", + "parameters": { + "value": 8 + } + }, + "unit": "months", + "direct_transition": "Delay_2_Month_2", + "name": "Annual_checkup_delay_2" + }, + "Annual_checkup_delay_3": { + "type": "Delay", + "distribution": { + "kind": "EXACT", + "parameters": { + "value": 8 + } + }, + "unit": "months", + "direct_transition": "Delay_Month_2", + "name": "Annual_checkup_delay_3" + }, + "check_for_dropouts": { + "type": "Simple", + "name": "check_for_dropouts", + "distributed_transition": [ + { + "transition": "Onset_Hypertension", + "distribution": 0.67 + }, + { + "transition": "Drop Outs", + "distribution": 0.33000000000000007 + } + ] + } }, "gmf_version": 1 } \ No newline at end of file diff --git a/src/main/resources/modules/medications/hypertension_medication.json b/src/main/resources/modules/medications/hypertension_medication.json index e2c65454e3..7e89387859 100644 --- a/src/main/resources/modules/medications/hypertension_medication.json +++ b/src/main/resources/modules/medications/hypertension_medication.json @@ -127,8 +127,8 @@ "codes": [ { "system": "RxNorm", - "code": 214354, - "display": "candesartan", + "code": 153822, + "display": "Candesartan", "value_set": "" } ], @@ -163,8 +163,8 @@ "codes": [ { "system": "RxNorm", - "code": 1091643, - "display": "azilsartan", + "code": 1091646, + "display": "Azilsartan", "value_set": "" } ], @@ -259,7 +259,7 @@ "codes": [ { "system": "RxNorm", - "code": 1091643, + "code": 1091646, "display": "azilsartan" } ] @@ -272,7 +272,7 @@ "codes": [ { "system": "RxNorm", - "code": 17767, + "code": 197361, "display": "amlodipine" } ] @@ -285,7 +285,7 @@ "codes": [ { "system": "RxNorm", - "code": 17767, + "code": 197361, "display": "amlodipine", "value_set": "" } @@ -338,7 +338,7 @@ "codes": [ { "system": "RxNorm", - "code": "1234", + "code": "313096", "display": "spironolactone 25 MG [Aldactone]", "value_set": "" } @@ -353,7 +353,7 @@ "codes": [ { "system": "RxNorm", - "code": 49276, + "code": 197626, "display": "Doxazosin", "value_set": "" } @@ -368,8 +368,8 @@ "codes": [ { "system": "RxNorm", - "code": 372553, - "display": "Labetalol Oral Tablet", + "code": 896758, + "display": "Labetalol", "value_set": "" } ], @@ -416,7 +416,7 @@ "codes": [ { "system": "RxNorm", - "code": 1091643, + "code": 1091646, "display": "azilsartan" } ] @@ -448,7 +448,7 @@ "codes": [ { "system": "RxNorm", - "code": 1091643, + "code": 1091646, "display": "azilsartan", "value_set": "" } @@ -477,7 +477,7 @@ "codes": [ { "system": "RxNorm", - "code": 17767, + "code": 197361, "display": "amlodipine", "value_set": "" } @@ -517,7 +517,7 @@ "codes": [ { "system": "RxNorm", - "code": 1091643, + "code": 1091646, "display": "azilsartan", "value_set": "" } @@ -566,7 +566,7 @@ "codes": [ { "system": "RxNorm", - "code": 5487, + "code": 310798, "display": "hydrochlorothiazide", "value_set": "" } @@ -610,7 +610,7 @@ "codes": [ { "system": "RxNorm", - "code": 17767, + "code": 197361, "display": "amlodipine", "value_set": "" } @@ -633,7 +633,7 @@ "codes": [ { "system": "RxNorm", - "code": 5487, + "code": 310798, "display": "hydrochlorothiazide" } ] @@ -665,7 +665,7 @@ "codes": [ { "system": "RxNorm", - "code": 17767, + "code": 197361, "display": "amlodipine" } ]