|
110 | 110 | .date
|
111 | 111 | )
|
112 | 112 |
|
| 113 | +# Create function to count number of diagnosis of a condition, and the length of time window |
| 114 | +def condition_history(condition_code, month): |
| 115 | + return ( |
| 116 | + clinical_events.where(clinical_events.snomedct_code.is_in(condition_code)) |
| 117 | + .where(clinical_events.date.is_on_or_between(INTERVAL.start_date - months(month), INTERVAL.start_date)) |
| 118 | + .count_for_patient() |
| 119 | + ) |
| 120 | + |
| 121 | +# Call function to create variables which contain the number of repeated diagnoses |
| 122 | +urt_code = ["1090711000000102"] |
| 123 | +impetigo_code = ["48277006"] |
| 124 | +acute_sinusitis_code = ["15805002"] |
| 125 | +acute_otitis_code = ["3110003"] |
| 126 | +urt_6m = condition_history(urt_code, 6) |
| 127 | +urt_12m = condition_history(urt_code, 12) |
| 128 | +impetigo_12m = condition_history(impetigo_code, 12) |
| 129 | +acute_otitis_6m = condition_history(acute_otitis_code, 6) |
| 130 | +acute_otitis_12m = condition_history(acute_otitis_code, 12) |
| 131 | + |
113 | 132 | # Select clinical events in interval date range
|
114 | 133 | selected_events = clinical_events.where(
|
115 | 134 | clinical_events.date.is_on_or_between(INTERVAL.start_date, INTERVAL.end_date)
|
|
154 | 173 | intervals=months(monthly_intervals).starting_on(start_date),
|
155 | 174 | )
|
156 | 175 |
|
157 |
| -# Create denominator variables for each clinical condition based on NHS England rules using sex, age and pregnancy status |
158 |
| -# Exclusions have not been added to these rules yet |
159 |
| -denominator_uncomplicated_uti = (age>=16) & (age<=64) & patients.sex.is_in(["female"]) & pregnancy_status.is_null() |
| 176 | +# Create denominator variables for each clinical condition based on NHS England rules using sex, age, pregnancy status and repeated diagnoses |
| 177 | +# The following exclusions have not been added: urinary catheter for URT, bullous impetigo, chronic sinusitis and immunosuppressed individuals for acute sinusitis |
| 178 | +denominator_uncomplicated_uti = (age>=16) & (age<=64) & (patients.sex.is_in(["female"]) & pregnancy_status.is_null()) | (urt_6m<2) | (urt_12m<3) |
160 | 179 | denominator_shingles = (age>=18) & pregnancy_status.is_null()
|
161 |
| -denominator_impetigo = (age>=1) | (pregnancy_status.is_not_null() & (age>=16)) |
| 180 | +denominator_impetigo = (age>=1) | (pregnancy_status.is_not_null() & (age>=16)) | (impetigo_12m<2) |
162 | 181 | denominator_infected_insect_bites = (age>=1) | (pregnancy_status.is_not_null() & (age>=16))
|
163 | 182 | denominator_acute_sore_throat = (age>=5) | (pregnancy_status.is_not_null() & (age>=16))
|
164 |
| -denominator_acute_sinusitis = ((age>=12) | (pregnancy_status.is_not_null() & (age>=16))) |
165 |
| -denominator_acute_otitis_media = (age>=1) & (age<=17) | (pregnancy_status.is_not_null() & (age>=16)) |
| 183 | +denominator_acute_sinusitis = (age>=12) | (pregnancy_status.is_not_null() & (age>=16)) |
| 184 | +denominator_acute_otitis_media = (age>=1) & (age<=17) | (pregnancy_status.is_not_null() & (age>=16)) |(acute_otitis_6m<3) | (acute_otitis_12m<4) |
166 | 185 |
|
167 | 186 | # Create dictionary for clinical condition denominators
|
168 | 187 | pf_condition_denominators = {
|
|
0 commit comments