library "cart_hgg" version '1.0.0' using FHIR version '4.0.0' include "FHIRHelpers" version '4.0.0' called FHIRHelpers include "cart_hgg_value_sets" version '1.0.0' called value_sets // parameter to inject an index date found via the spreadsheets from health systems. parameter "hs_index_date" Date // Define value sets define biologic_CART: value_sets.biologic_CART define lab_IgG: value_sets.lab_IgG define biologic_IgG: value_sets.biologic_IgG define hypogammaglobulinemia_dxspecific: value_sets.hypogammaglobulinemia_dxspecific define hypogammaglobulinemia_dxnonspecific: value_sets.hypogammaglobulinemia_dxnonspecific define hypogammaglobulinemia_all: Concept {codes: (value_sets.hypogammaglobulinemia_dxspecific.codes union value_sets.hypogammaglobulinemia_dxnonspecific.codes)} // Start AE Logic context Patient define cart_procedure: [Procedure: biologic_CART] define cart_medication_request: [MedicationRequest: biologic_CART] define cart_evidence: Tuple { definition: 'Patient\'s CAR-T exposures', featureType: 'biologic_exposure', evidence: (cart_procedure union cart_medication_request) } define first_cart_proc: First(cart_procedure P where P.status = 'completed' sort by (performed as FHIR.dateTime) asc ) define first_proc_date: first_cart_proc.performed as FHIR.dateTime define first_cart_med: First(cart_medication_request MR where MR.status = 'completed' sort by (authoredOn as FHIR.dateTime) asc ) define first_med_date: first_cart_med.authoredOn as FHIR.dateTime define cql_index_date: First({first_proc_date} union {first_med_date}).value // Use health system index date. define index_date: date from hs_index_date // Query for car t that occurred on the index date define cart_proc_on_index_date: first_cart_proc P where ((P.performed as FHIR.dateTime).value in Interval[index_date, index_date + 1 day]) // Query for procedures that occurred on the index date define cart_med_on_index_date: first_cart_med M where ((M.authoredOn as FHIR.dateTime).value in Interval[index_date, index_date + 1 day]) define exposure: Coalesce(cart_proc_on_index_date.code.coding.code, cart_med_on_index_date.medication.coding.code) define clean_window_start: index_date - 365 days define diagnosis_window_end: index_date + 90 days define outcome_evidence_interval: Interval[index_date, diagnosis_window_end] define hgg_nonspecific_condition: [Condition: hypogammaglobulinemia_dxnonspecific] define hgg_nonspecific_condition_evidence: Tuple { definition: 'Patient\'s HGG diagnoses', featureType: 'target_evidence', evidence: hgg_nonspecific_condition } define exists_hgg_diagnosis: exists(hgg_nonspecific_condition C where C.recordedDate during outcome_evidence_interval sort by recordedDate asc ) //todo: add medications here? define ig_procedure: [Procedure: biologic_IgG] define ig_procedure_evidence: Tuple { definition: 'Patient\'s treatment with IVIG', featureType: 'target_supporting_evidence', evidence: ig_procedure } define exists_post_cart_ig_treatment: exists(ig_procedure T where (T.performed as FHIR.dateTime) during outcome_evidence_interval and T.status in {'active', 'completed'} sort by (performed as FHIR.dateTime) asc ) define lab_IgG_observation: [Observation: lab_IgG] define lab_IgG_Evidence: Tuple { definition: 'Patient\'s IgG laboratory observations', featureType: 'target_supporting_evidence', evidence: lab_IgG_observation } define exists_post_cart_igg_lab: exists(lab_IgG_observation L where (L.effective as FHIR.dateTime) during outcome_evidence_interval and L.value as Quantity < 400 'mg/dL' ) define clean_window_check: // exclusionary elements go here not exists([Condition: hypogammaglobulinemia_all] C where C.recordedDate is not null and (C.recordedDate as FHIR.dateTime) during Interval[clean_window_start, index_date] ) and not exists(lab_IgG_observation L where (L.effective as FHIR.dateTime) during Interval[clean_window_start, index_date] and L.value as Quantity < 400 'mg/dL' ) and not exists(ig_procedure T where (T.performed as FHIR.dateTime) during Interval[clean_window_start, index_date] and T.status in {'active', 'completed'} sort by (performed as FHIR.dateTime) asc ) define exposure_determination: Length(exposure) > 0 define outcome_determination: if ( exists_hgg_diagnosis or exists_post_cart_ig_treatment or exists_post_cart_igg_lab ) then true else false define InPopulation: if ( clean_window_check and exposure_determination and outcome_determination ) then true else false