|
6 | 6 | addresses,
|
7 | 7 | ethnicity_from_sus,
|
8 | 8 | )
|
9 |
| -from codelists import pharmacy_first_conditions_codelist, ethnicity_codelist, pregnancy_codelist |
| 9 | +from codelists import ( |
| 10 | + pharmacy_first_conditions_codelist, |
| 11 | + ethnicity_codelist, |
| 12 | + pregnancy_codelist, |
| 13 | +) |
10 | 14 |
|
11 | 15 | measures = create_measures()
|
12 | 16 | measures.configure_dummy_data(population_size=1000)
|
|
24 | 28 | "consultation_service": ["1577041000000109"],
|
25 | 29 | # Pharmacy First service (qualifier value)
|
26 | 30 | "pharmacy_first_service": ["983341000000102"],
|
27 |
| - "combined_service": ["1577041000000109", "983341000000102"] |
| 31 | + "combined_service": ["1577041000000109", "983341000000102"], |
28 | 32 | }
|
29 | 33 |
|
30 | 34 | registration = practice_registrations.for_patient_on(INTERVAL.end_date)
|
|
96 | 100 | )
|
97 | 101 |
|
98 | 102 | latest_region = case(
|
99 |
| - when( |
100 |
| - registration.practice_nuts1_region_name.is_not_null() |
101 |
| - ).then(registration.practice_nuts1_region_name), |
| 103 | + when(registration.practice_nuts1_region_name.is_not_null()).then( |
| 104 | + registration.practice_nuts1_region_name |
| 105 | + ), |
102 | 106 | otherwise="Missing",
|
103 | 107 | )
|
104 | 108 |
|
105 | 109 | # Create variable which when not null, indicates patient is pregnant
|
106 | 110 | pregnancy_status = (
|
107 | 111 | clinical_events.where(clinical_events.snomedct_code.is_in(pregnancy_codelist))
|
108 |
| - .where(clinical_events.date.is_on_or_between(INTERVAL.start_date, INTERVAL.end_date)) |
| 112 | + .where( |
| 113 | + clinical_events.date.is_on_or_between(INTERVAL.start_date, INTERVAL.end_date) |
| 114 | + ) |
109 | 115 | .sort_by(clinical_events.date)
|
110 | 116 | .last_for_patient()
|
111 | 117 | .date
|
112 | 118 | )
|
113 | 119 |
|
| 120 | + |
114 | 121 | # Create function to count number of diagnosis of a condition, and the length of time window
|
115 | 122 | def condition_history(condition_code, month):
|
116 | 123 | return (
|
117 | 124 | clinical_events.where(clinical_events.snomedct_code.is_in(condition_code))
|
118 |
| - .where(clinical_events.date.is_on_or_between(INTERVAL.start_date - months(month), INTERVAL.start_date)) |
| 125 | + .where( |
| 126 | + clinical_events.date.is_on_or_between( |
| 127 | + INTERVAL.start_date - months(month), INTERVAL.start_date |
| 128 | + ) |
| 129 | + ) |
119 | 130 | .count_for_patient()
|
120 | 131 | )
|
121 | 132 |
|
| 133 | + |
122 | 134 | # Call function to create variables which contain the number of repeated diagnoses
|
123 | 135 | urt_code = ["1090711000000102"]
|
124 | 136 | impetigo_code = ["48277006"]
|
@@ -175,24 +187,43 @@ def condition_history(condition_code, month):
|
175 | 187 | )
|
176 | 188 |
|
177 | 189 | # Create denominator variables for each clinical condition based on NHS England rules using sex, age, pregnancy status and repeated diagnoses
|
178 |
| -# The following exclusions have not been added: urinary catheter for URT, bullous impetigo, chronic sinusitis and immunosuppressed individuals for acute sinusitis |
179 |
| -denominator_uncomplicated_uti = (age>=16) & (age<=64) & (patients.sex.is_in(["female"]) & pregnancy_status.is_null()) | (urt_6m<2) | (urt_12m<3) |
180 |
| -denominator_shingles = (age>=18) & pregnancy_status.is_null() |
181 |
| -denominator_impetigo = (age>=1) | (pregnancy_status.is_not_null() & (age>=16)) | (impetigo_12m<2) |
182 |
| -denominator_infected_insect_bites = (age>=1) | (pregnancy_status.is_not_null() & (age>=16)) |
183 |
| -denominator_acute_sore_throat = (age>=5) | (pregnancy_status.is_not_null() & (age>=16)) |
184 |
| -denominator_acute_sinusitis = (age>=12) | (pregnancy_status.is_not_null() & (age>=16)) |
185 |
| -denominator_acute_otitis_media = (age>=1) & (age<=17) | (pregnancy_status.is_not_null() & (age>=16)) |(acute_otitis_6m<3) | (acute_otitis_12m<4) |
| 190 | +# The following exclusions have not been added: urinary catheter for URT, bullous impetigo, chronic sinusitis and immunosuppressed individuals for acute sinusitis |
| 191 | +denominator_uncomplicated_uti = ( |
| 192 | + (age >= 16) |
| 193 | + & (age <= 64) |
| 194 | + & (patients.sex.is_in(["female"]) & pregnancy_status.is_null()) |
| 195 | + | (urt_6m < 2) |
| 196 | + | (urt_12m < 3) |
| 197 | +) |
| 198 | +denominator_shingles = (age >= 18) & pregnancy_status.is_null() |
| 199 | +denominator_impetigo = ( |
| 200 | + (age >= 1) | (pregnancy_status.is_not_null() & (age >= 16)) | (impetigo_12m < 2) |
| 201 | +) |
| 202 | +denominator_infected_insect_bites = (age >= 1) | ( |
| 203 | + pregnancy_status.is_not_null() & (age >= 16) |
| 204 | +) |
| 205 | +denominator_acute_sore_throat = (age >= 5) | ( |
| 206 | + pregnancy_status.is_not_null() & (age >= 16) |
| 207 | +) |
| 208 | +denominator_acute_sinusitis = (age >= 12) | ( |
| 209 | + pregnancy_status.is_not_null() & (age >= 16) |
| 210 | +) |
| 211 | +denominator_acute_otitis_media = ( |
| 212 | + (age >= 1) & (age <= 17) |
| 213 | + | (pregnancy_status.is_not_null() & (age >= 16)) |
| 214 | + | (acute_otitis_6m < 3) |
| 215 | + | (acute_otitis_12m < 4) |
| 216 | +) |
186 | 217 |
|
187 | 218 | # Create dictionary for clinical condition denominators
|
188 | 219 | pf_condition_denominators = {
|
189 |
| - "uncomplicated_urinary_tract_infection" : denominator_uncomplicated_uti, |
190 |
| - "herpes_zoster" : denominator_shingles, |
191 |
| - "impetigo" : denominator_impetigo, |
| 220 | + "uncomplicated_urinary_tract_infection": denominator_uncomplicated_uti, |
| 221 | + "herpes_zoster": denominator_shingles, |
| 222 | + "impetigo": denominator_impetigo, |
192 | 223 | "infected_insect_bite": denominator_infected_insect_bites,
|
193 |
| - "acute_pharyngitis" : denominator_acute_sore_throat, |
194 |
| - "acute_sinusitis" : denominator_acute_sinusitis, |
195 |
| - "acute_otitis_media" : denominator_acute_otitis_media, |
| 224 | + "acute_pharyngitis": denominator_acute_sore_throat, |
| 225 | + "acute_sinusitis": denominator_acute_sinusitis, |
| 226 | + "acute_otitis_media": denominator_acute_otitis_media, |
196 | 227 | }
|
197 | 228 |
|
198 | 229 | # Create measures for pharmacy first conditions
|
|
0 commit comments