malawi_hiv_program_reports 1.0.17 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/services/malawi_hiv_program_reports/adapters/moh/custom.rb +4 -0
- data/app/services/malawi_hiv_program_reports/arv_refill_periods.rb +39 -4
- data/app/services/malawi_hiv_program_reports/moh/cumulative_cohort.rb +7 -7
- data/app/services/malawi_hiv_program_reports/moh/cumulative_outcome.rb +21 -21
- data/app/services/malawi_hiv_program_reports/pepfar/patient_start_vl.rb +2 -2
- data/app/services/malawi_hiv_program_reports/pepfar/regimen_switch.rb +40 -40
- data/app/services/malawi_hiv_program_reports/pepfar/sc_arvdisp.rb +7 -7
- data/app/services/malawi_hiv_program_reports/pepfar/tb_prev.rb +10 -10
- data/app/services/malawi_hiv_program_reports/pepfar/tb_prev2.rb +27 -27
- data/app/services/malawi_hiv_program_reports/pepfar/tb_prev3.rb +40 -40
- data/app/services/malawi_hiv_program_reports/pepfar/tx_ml.rb +7 -7
- data/app/services/malawi_hiv_program_reports/pepfar/tx_new.rb +8 -8
- data/app/services/malawi_hiv_program_reports/pepfar/tx_rtt.rb +22 -22
- data/app/services/malawi_hiv_program_reports/pepfar/tx_tb.rb +80 -25
- data/app/services/malawi_hiv_program_reports/pepfar/utils.rb +8 -8
- data/app/services/malawi_hiv_program_reports/pepfar/viral_load_coverage2.rb +41 -41
- data/lib/malawi_hiv_program_reports/version.rb +1 -1
- metadata +3 -3
@@ -99,37 +99,37 @@ module MalawiHivProgramReports
|
|
99
99
|
person.birthdate,
|
100
100
|
disaggregated_age_group(person.birthdate, DATE(#{end_date})) AS age_group,
|
101
101
|
GROUP_CONCAT(DISTINCT orders.concept_id SEPARATOR ',') AS drug_concepts
|
102
|
-
FROM person
|
103
|
-
LEFT JOIN patient_identifier
|
102
|
+
FROM person #{current_partition}
|
103
|
+
LEFT JOIN patient_identifier #{current_partition}
|
104
104
|
ON patient_identifier.patient_id = person.person_id
|
105
105
|
AND patient_identifier.voided = 0
|
106
|
-
AND patient_identifier.identifier_type IN (SELECT patient_identifier_type_id FROM patient_identifier_type WHERE name = 'ARV Number')
|
107
|
-
INNER JOIN patient_program
|
106
|
+
AND patient_identifier.identifier_type IN (SELECT patient_identifier_type_id FROM patient_identifier_type #{current_partition} WHERE name = 'ARV Number')
|
107
|
+
INNER JOIN patient_program #{current_partition}
|
108
108
|
ON patient_program.patient_id = person.person_id
|
109
|
-
AND patient_program.program_id IN (SELECT program_id FROM program WHERE name = 'HIV PROGRAM')
|
109
|
+
AND patient_program.program_id IN (SELECT program_id FROM program #{current_partition} WHERE name = 'HIV PROGRAM')
|
110
110
|
AND patient_program.voided = 0
|
111
|
-
INNER JOIN patient_state
|
111
|
+
INNER JOIN patient_state #{current_partition}
|
112
112
|
ON patient_state.patient_program_id = patient_program.patient_program_id
|
113
113
|
AND patient_state.state = 7 /* State: 7 == On antiretrovirals */
|
114
114
|
AND patient_state.start_date < DATE(#{start_date})
|
115
115
|
AND patient_state.voided = 0
|
116
|
-
INNER JOIN encounter AS prescription_encounter
|
116
|
+
INNER JOIN encounter #{current_partition} AS prescription_encounter
|
117
117
|
ON prescription_encounter.patient_id = patient_program.patient_id
|
118
|
-
AND prescription_encounter.program_id IN (SELECT program_id FROM program WHERE name = 'HIV PROGRAM')
|
118
|
+
AND prescription_encounter.program_id IN (SELECT program_id FROM program #{current_partition} WHERE name = 'HIV PROGRAM')
|
119
119
|
AND prescription_encounter.encounter_type IN (SELECT encounter_type_id FROM encounter_type WHERE name = 'Treatment')
|
120
120
|
AND prescription_encounter.encounter_datetime >= DATE(#{start_date}) - INTERVAL 6 MONTH
|
121
121
|
AND prescription_encounter.encounter_datetime < DATE(#{start_date})
|
122
122
|
AND prescription_encounter.voided = 0
|
123
|
-
INNER JOIN orders
|
123
|
+
INNER JOIN orders #{current_partition}
|
124
124
|
ON orders.encounter_id = prescription_encounter.encounter_id
|
125
|
-
AND orders.order_type_id IN (SELECT order_type_id FROM order_type WHERE name = 'Drug order')
|
125
|
+
AND orders.order_type_id IN (SELECT order_type_id FROM order_type #{current_partition} WHERE name = 'Drug order')
|
126
126
|
AND orders.start_date >= DATE(#{start_date}) - INTERVAL 6 MONTH
|
127
127
|
AND orders.start_date < DATE(#{start_date})
|
128
128
|
AND orders.voided = 0
|
129
|
-
INNER JOIN concept_name
|
129
|
+
INNER JOIN concept_name #{current_partition}
|
130
130
|
ON concept_name.concept_id = orders.concept_id
|
131
131
|
AND concept_name.name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')
|
132
|
-
INNER JOIN drug_order
|
132
|
+
INNER JOIN drug_order #{current_partition}
|
133
133
|
ON drug_order.order_id = orders.order_id
|
134
134
|
AND drug_order.quantity > 0
|
135
135
|
WHERE person.voided = 0
|
@@ -139,39 +139,39 @@ module MalawiHivProgramReports
|
|
139
139
|
are classified as new on TPT.
|
140
140
|
*/
|
141
141
|
SELECT DISTINCT encounter.patient_id
|
142
|
-
FROM encounter
|
143
|
-
INNER JOIN orders
|
142
|
+
FROM encounter #{current_partition}
|
143
|
+
INNER JOIN orders #{current_partition}
|
144
144
|
ON orders.encounter_id = encounter.encounter_id
|
145
|
-
AND orders.concept_id IN (SELECT concept_id FROM concept_name WHERE name IN ('Rifapentine', 'Isoniazid') AND voided = 0)
|
146
|
-
AND orders.order_type_id IN (SELECT order_type_id FROM order_type WHERE name = 'Drug order')
|
145
|
+
AND orders.concept_id IN (SELECT concept_id FROM concept_name #{current_partition} WHERE name IN ('Rifapentine', 'Isoniazid') AND voided = 0)
|
146
|
+
AND orders.order_type_id IN (SELECT order_type_id FROM order_type #{current_partition} WHERE name = 'Drug order')
|
147
147
|
AND orders.start_date < DATE(#{start_date}) - INTERVAL 6 MONTH
|
148
148
|
AND orders.start_date >= DATE(#{start_date}) - INTERVAL 15 MONTH
|
149
149
|
AND orders.voided = 0
|
150
|
-
INNER JOIN drug_order
|
150
|
+
INNER JOIN drug_order #{current_partition}
|
151
151
|
ON drug_order.order_id = orders.order_id
|
152
152
|
AND drug_order.quantity > 0
|
153
|
-
WHERE encounter.program_id IN (SELECT program_id FROM program WHERE name = 'HIV PROGRAM')
|
154
|
-
AND encounter.encounter_type IN (SELECT encounter_type_id FROM
|
153
|
+
WHERE encounter.program_id IN (SELECT program_id FROM program #{current_partition} WHERE name = 'HIV PROGRAM')
|
154
|
+
AND encounter.encounter_type IN (SELECT encounter_type_id FROM WHERE name = 'Treatment')
|
155
155
|
AND encounter.encounter_datetime < DATE(#{start_date}) - INTERVAL 6 MONTH
|
156
156
|
AND encounter.encounter_datetime >= DATE(#{start_date}) - INTERVAL 15 MONTH
|
157
157
|
AND encounter.voided = 0
|
158
158
|
) AND person.person_id NOT IN (
|
159
159
|
/* External consultations */
|
160
160
|
SELECT DISTINCT registration_encounter.patient_id
|
161
|
-
FROM patient_program
|
162
|
-
INNER JOIN program ON program.name = 'HIV PROGRAM'
|
163
|
-
INNER JOIN encounter AS registration_encounter
|
161
|
+
FROM patient_program #{current_partition}
|
162
|
+
INNER JOIN program #{current_partition} ON program.name = 'HIV PROGRAM'
|
163
|
+
INNER JOIN encounter #{current_partition} AS registration_encounter
|
164
164
|
ON registration_encounter.patient_id = patient_program.patient_id
|
165
165
|
AND registration_encounter.program_id = patient_program.program_id
|
166
166
|
AND registration_encounter.encounter_datetime < DATE(#{end_date}) + INTERVAL 1 DAY
|
167
167
|
AND registration_encounter.voided = 0
|
168
168
|
INNER JOIN (
|
169
169
|
SELECT MAX(encounter.encounter_datetime) AS encounter_datetime, encounter.patient_id
|
170
|
-
FROM encounter
|
170
|
+
FROM encounter #{current_partition}
|
171
171
|
INNER JOIN encounter_type
|
172
172
|
ON encounter_type.encounter_type_id = encounter.encounter_type
|
173
173
|
AND encounter_type.name = 'Registration'
|
174
|
-
INNER JOIN program
|
174
|
+
INNER JOIN program #{current_partition}
|
175
175
|
ON program.program_id = encounter.program_id
|
176
176
|
AND program.name = 'HIV PROGRAM'
|
177
177
|
WHERE encounter.encounter_datetime < DATE(#{end_date}) AND encounter.voided = 0
|
@@ -179,10 +179,10 @@ module MalawiHivProgramReports
|
|
179
179
|
) AS max_registration_encounter
|
180
180
|
ON max_registration_encounter.patient_id = registration_encounter.patient_id
|
181
181
|
AND max_registration_encounter.encounter_datetime = registration_encounter.encounter_datetime
|
182
|
-
INNER JOIN obs AS patient_type_obs
|
182
|
+
INNER JOIN obs #{current_partition} AS patient_type_obs
|
183
183
|
ON patient_type_obs.encounter_id = registration_encounter.encounter_id
|
184
|
-
AND patient_type_obs.concept_id IN (SELECT concept_id FROM concept_name WHERE name = 'Type of patient' AND voided = 0)
|
185
|
-
AND patient_type_obs.value_coded IN (SELECT concept_id FROM concept_name WHERE name IN ('Drug refill', 'External consultation') AND voided = 0)
|
184
|
+
AND patient_type_obs.concept_id IN (SELECT concept_id FROM concept_name #{current_partition} WHERE name = 'Type of patient' AND voided = 0)
|
185
|
+
AND patient_type_obs.value_coded IN (SELECT concept_id FROM concept_name #{current_partition} WHERE name IN ('Drug refill', 'External consultation') AND voided = 0)
|
186
186
|
AND patient_type_obs.voided = 0
|
187
187
|
WHERE patient_program.voided = 0
|
188
188
|
)
|
@@ -129,29 +129,29 @@ module MalawiHivProgramReports
|
|
129
129
|
person.gender,
|
130
130
|
person.birthdate,
|
131
131
|
#{function_manager(function: 'disaggregated_age_group', location: @location, args: "person.birthdate::date, #{@end_date}::date")} AS age_group
|
132
|
-
FROM person
|
133
|
-
LEFT JOIN patient_identifier
|
132
|
+
FROM person #{current_partition}
|
133
|
+
LEFT JOIN patient_identifier #{current_partition}
|
134
134
|
ON patient_identifier.patient_id = person.person_id
|
135
135
|
AND patient_identifier.voided = 0
|
136
|
-
AND #{in_manager(column: 'patient_identifier.identifier_type', values: "(SELECT patient_identifier_type_id FROM patient_identifier_type WHERE name = 'ARV Number')")}
|
136
|
+
AND #{in_manager(column: 'patient_identifier.identifier_type', values: "(SELECT patient_identifier_type_id FROM patient_identifier_type #{current_partition} WHERE name = 'ARV Number')")}
|
137
137
|
#{site_manager(operator: 'AND', column: 'patient_identifier.site_id', location: @location)}
|
138
138
|
LEFT JOIN (#{current_occupation_query}) AS current_occupation ON current_occupation.person_id = person.person_id
|
139
139
|
#{site_manager(operator: 'AND', column: 'current_occupation.site_id', location: @location)}
|
140
140
|
INNER JOIN(
|
141
141
|
SELECT denominator_encounter.patient_id AS patient_id, patient_state.start_date AS start_date
|
142
|
-
FROM person
|
143
|
-
INNER JOIN patient_program
|
142
|
+
FROM person #{current_partition}
|
143
|
+
INNER JOIN patient_program #{current_partition}
|
144
144
|
ON patient_program.patient_id = person.person_id
|
145
|
-
AND #{in_manager(column: 'patient_program.program_id', values: "(SELECT program_id FROM program WHERE name = 'HIV PROGRAM')")}
|
145
|
+
AND #{in_manager(column: 'patient_program.program_id', values: "(SELECT program_id FROM program #{current_partition} WHERE name = 'HIV PROGRAM')")}
|
146
146
|
AND patient_program.voided = 0
|
147
|
-
INNER JOIN patient_state
|
147
|
+
INNER JOIN patient_state #{current_partition}
|
148
148
|
ON patient_state.patient_program_id = patient_program.patient_program_id
|
149
149
|
AND patient_state.state = 7 /* State: 7 == On antiretrovirals */
|
150
150
|
AND patient_state.start_date < DATE(#{start_date})
|
151
151
|
AND patient_state.voided = 0
|
152
|
-
INNER JOIN encounter AS denominator_encounter
|
152
|
+
INNER JOIN encounter #{current_partition} AS denominator_encounter
|
153
153
|
ON denominator_encounter.patient_id = patient_program.patient_id
|
154
|
-
AND #{in_manager(column: 'denominator_encounter.program_id', values: "(SELECT program_id FROM program WHERE name = 'HIV PROGRAM')")}
|
154
|
+
AND #{in_manager(column: 'denominator_encounter.program_id', values: "(SELECT program_id FROM program #{current_partition} WHERE name = 'HIV PROGRAM')")}
|
155
155
|
AND #{in_manager(column: 'denominator_encounter.encounter_type', values: "(SELECT encounter_type_id FROM encounter_type WHERE name = 'Treatment')")}
|
156
156
|
AND denominator_encounter.encounter_datetime >= #{interval_manager(date: start_date, value: 6, interval: 'MONTH', operator: '-')}
|
157
157
|
AND denominator_encounter.encounter_datetime <= DATE(#{start_date})
|
@@ -159,23 +159,23 @@ module MalawiHivProgramReports
|
|
159
159
|
#{site_manager(operator: 'AND', column: 'patient_program.site_id', location: @location)}
|
160
160
|
GROUP BY denominator_encounter.patient_id, patient_state.start_date
|
161
161
|
) AS denominator_patient ON denominator_patient.patient_id = person.person_id
|
162
|
-
INNER JOIN encounter AS prescription_encounter
|
162
|
+
INNER JOIN encounter #{current_partition} AS prescription_encounter
|
163
163
|
ON prescription_encounter.patient_id = denominator_patient.patient_id
|
164
164
|
AND prescription_encounter.program_id = 1
|
165
165
|
AND #{in_manager(column: 'prescription_encounter.encounter_type', values: "(SELECT encounter_type_id FROM encounter_type WHERE name = 'Treatment')")}
|
166
166
|
AND prescription_encounter.encounter_datetime >= #{interval_manager(date: start_date, value: 6, interval: 'MONTH', operator: '-')}
|
167
167
|
AND prescription_encounter.encounter_datetime <= DATE(#{end_date})
|
168
168
|
AND prescription_encounter.voided = 0
|
169
|
-
INNER JOIN orders
|
169
|
+
INNER JOIN orders #{current_partition}
|
170
170
|
ON orders.encounter_id = prescription_encounter.encounter_id
|
171
|
-
AND #{in_manager(column: 'orders.order_type_id', values: "(SELECT order_type_id FROM order_type WHERE name = 'Drug order')")}
|
171
|
+
AND #{in_manager(column: 'orders.order_type_id', values: "(SELECT order_type_id FROM order_type #{current_partition} WHERE name = 'Drug order')")}
|
172
172
|
AND orders.start_date >= #{interval_manager(date: start_date, value: 6, interval: 'MONTH', operator: '-')}
|
173
173
|
AND orders.start_date <= CAST(#{end_date} as DATE)
|
174
174
|
AND orders.voided = 0
|
175
|
-
INNER JOIN concept_name
|
175
|
+
INNER JOIN concept_name #{current_partition}
|
176
176
|
ON concept_name.concept_id = orders.concept_id
|
177
177
|
AND #{in_manager(column: 'concept_name.name', values: "'Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine'" )}
|
178
|
-
INNER JOIN drug_order
|
178
|
+
INNER JOIN drug_order #{current_partition}
|
179
179
|
ON drug_order.order_id = orders.order_id
|
180
180
|
AND drug_order.quantity > 0
|
181
181
|
WHERE person.voided = 0 #{%w[Military Civilian].include?(@occupation) ? 'AND' : ''} #{occupation_filter(occupation: @occupation, field_name: 'value', table_name: 'current_occupation', include_clause: false)}
|
@@ -183,20 +183,20 @@ module MalawiHivProgramReports
|
|
183
183
|
AND person.person_id NOT IN (
|
184
184
|
/* External consultations */
|
185
185
|
SELECT DISTINCT registration_encounter.patient_id
|
186
|
-
FROM patient_program pp
|
187
|
-
INNER JOIN program p ON p.program_id = pp.program_id AND p.name = 'HIV PROGRAM' AND p.retired = 0
|
188
|
-
INNER JOIN encounter AS registration_encounter
|
186
|
+
FROM patient_program #{current_partition} pp
|
187
|
+
INNER JOIN program #{current_partition} p ON p.program_id = pp.program_id AND p.name = 'HIV PROGRAM' AND p.retired = 0
|
188
|
+
INNER JOIN encounter #{current_partition} AS registration_encounter
|
189
189
|
ON registration_encounter.patient_id = pp.patient_id
|
190
190
|
AND registration_encounter.program_id = pp.program_id
|
191
191
|
AND registration_encounter.encounter_datetime < #{interval_manager(date: end_date, value: 1, interval: 'MONTH', operator: '+')}
|
192
192
|
AND registration_encounter.voided = 0
|
193
193
|
INNER JOIN (
|
194
194
|
SELECT MAX(encounter.encounter_datetime) AS encounter_datetime, encounter.patient_id
|
195
|
-
FROM encounter
|
195
|
+
FROM encounter #{current_partition}
|
196
196
|
INNER JOIN encounter_type
|
197
197
|
ON encounter_type.encounter_type_id = encounter.encounter_type
|
198
198
|
AND encounter_type.name = 'Registration'
|
199
|
-
INNER JOIN program
|
199
|
+
INNER JOIN program #{current_partition}
|
200
200
|
ON program.program_id = encounter.program_id
|
201
201
|
AND program.name = 'HIV PROGRAM'
|
202
202
|
WHERE encounter.encounter_datetime < CAST(#{end_date} AS DATE) AND encounter.voided = 0
|
@@ -204,10 +204,10 @@ module MalawiHivProgramReports
|
|
204
204
|
) AS max_registration_encounter
|
205
205
|
ON max_registration_encounter.patient_id = registration_encounter.patient_id
|
206
206
|
AND max_registration_encounter.encounter_datetime = registration_encounter.encounter_datetime
|
207
|
-
INNER JOIN obs AS patient_type_obs
|
207
|
+
INNER JOIN obs #{current_partition} AS patient_type_obs
|
208
208
|
ON patient_type_obs.encounter_id = registration_encounter.encounter_id
|
209
|
-
AND #{in_manager(column: 'patient_type_obs.concept_id', values: "(SELECT concept_id FROM concept_name WHERE name = 'Type of patient' AND voided = 0)")}
|
210
|
-
AND #{in_manager(column: 'patient_type_obs.value_coded', values: "(SELECT concept_id FROM concept_name WHERE name IN ('Drug refill', 'External consultation') AND voided = 0)")}
|
209
|
+
AND #{in_manager(column: 'patient_type_obs.concept_id', values: "(SELECT concept_id FROM concept_name #{current_partition} WHERE name = 'Type of patient' AND voided = 0)")}
|
210
|
+
AND #{in_manager(column: 'patient_type_obs.value_coded', values: "(SELECT concept_id FROM concept_name #{current_partition} WHERE name IN ('Drug refill', 'External consultation') AND voided = 0)")}
|
211
211
|
AND patient_type_obs.voided = 0
|
212
212
|
WHERE pp.voided = 0
|
213
213
|
)
|
@@ -236,22 +236,22 @@ module MalawiHivProgramReports
|
|
236
236
|
END AS transfer_in,
|
237
237
|
MAX(o.start_date) AS last_dispensed_date,
|
238
238
|
MAX(o.auto_expire_date) AS auto_expire_date
|
239
|
-
FROM orders o
|
240
|
-
INNER JOIN concept_name cn
|
239
|
+
FROM orders #{current_partition} o
|
240
|
+
INNER JOIN concept_name #{current_partition} cn
|
241
241
|
ON cn.concept_id = o.concept_id
|
242
242
|
AND cn.name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')
|
243
243
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
244
|
-
LEFT JOIN obs tpt_transfer_in_obs
|
244
|
+
LEFT JOIN obs #{current_partition} tpt_transfer_in_obs
|
245
245
|
ON tpt_transfer_in_obs.person_id = o.patient_id
|
246
246
|
AND tpt_transfer_in_obs.concept_id = #{::ConceptName.find_by_name('TPT Drugs Received').concept_id}
|
247
247
|
AND tpt_transfer_in_obs.voided = 0
|
248
248
|
#{site_manager(operator: 'AND', column: 'tpt_transfer_in_obs.site_id', location: @location)}
|
249
|
-
AND tpt_transfer_in_obs.value_drug IN (SELECT drug_id FROM drug WHERE concept_id IN (SELECT concept_id FROM concept_name WHERE name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')))
|
250
|
-
INNER JOIN drug_order dor
|
249
|
+
AND tpt_transfer_in_obs.value_drug IN (SELECT drug_id FROM drug #{current_partition} WHERE concept_id IN (SELECT concept_id FROM concept_name #{current_partition} WHERE name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')))
|
250
|
+
INNER JOIN drug_order #{current_partition} dor
|
251
251
|
ON dor.order_id = o.order_id
|
252
252
|
AND dor.quantity > 0
|
253
253
|
WHERE DATE(o.start_date) BETWEEN DATE(#{c_start_date}) AND DATE(#{c_end_date})
|
254
|
-
AND o.order_type_id IN (SELECT order_type_id FROM order_type WHERE name = 'Drug order')
|
254
|
+
AND o.order_type_id IN (SELECT order_type_id FROM order_type #{current_partition} WHERE name = 'Drug order')
|
255
255
|
AND o.voided = 0
|
256
256
|
AND o.patient_id = #{patient_id}
|
257
257
|
GROUP BY o.patient_id
|
@@ -291,11 +291,11 @@ module MalawiHivProgramReports
|
|
291
291
|
WHEN o.value_drug = #{isoniazid_rifapentine_drug.drug_id} THEN '3HP'
|
292
292
|
ELSE '6H'
|
293
293
|
END AS course
|
294
|
-
FROM obs o
|
294
|
+
FROM obs #{current_partition} o
|
295
295
|
WHERE o.concept_id = #{::ConceptName.find_by_name('TPT Drugs Received').concept_id}
|
296
296
|
AND o.voided = 0
|
297
297
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
298
|
-
AND o.value_drug IN (SELECT drug_id FROM drug WHERE concept_id IN (SELECT concept_id FROM concept_name WHERE name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')))
|
298
|
+
AND o.value_drug IN (SELECT drug_id FROM drug #{current_partition} WHERE concept_id IN (SELECT concept_id FROM concept_name #{current_partition} WHERE name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')))
|
299
299
|
AND o.person_id = #{patient_id}
|
300
300
|
AND o.value_numeric IS NOT NULL
|
301
301
|
AND DATE(o.obs_datetime) <= DATE(#{start_date})
|
@@ -312,10 +312,10 @@ module MalawiHivProgramReports
|
|
312
312
|
WHEN o.concept_id = #{isoniazid_rifapentine_concept.concept_id} THEN '3HP'
|
313
313
|
ELSE '6H'
|
314
314
|
END AS course
|
315
|
-
FROM orders o
|
316
|
-
INNER JOIN encounter e ON e.encounter_id = o.encounter_id AND e.voided = 0 AND e.program_id = 1 /* HIV PROGRAM */
|
317
|
-
INNER JOIN drug_order dor ON dor.order_id = o.order_id AND dor.quantity > 0
|
318
|
-
WHERE o.order_type_id IN (SELECT order_type_id FROM order_type WHERE name = 'Drug order')
|
315
|
+
FROM orders #{current_partition} o
|
316
|
+
INNER JOIN encounter #{current_partition} e ON e.encounter_id = o.encounter_id AND e.voided = 0 AND e.program_id = 1 /* HIV PROGRAM */
|
317
|
+
INNER JOIN drug_order #{current_partition} dor ON dor.order_id = o.order_id AND dor.quantity > 0
|
318
|
+
WHERE o.order_type_id IN (SELECT order_type_id FROM order_type #{current_partition} WHERE name = 'Drug order')
|
319
319
|
AND o.voided = 0
|
320
320
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
321
321
|
AND o.concept_id IN (#{::ConceptName.where(name: ['Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine']).select(:concept_id).to_sql})
|
@@ -340,11 +340,11 @@ module MalawiHivProgramReports
|
|
340
340
|
WHEN o.value_drug = #{isoniazid_rifapentine_drug.drug_id} THEN '3HP'
|
341
341
|
ELSE '6H'
|
342
342
|
END AS course
|
343
|
-
FROM obs o
|
343
|
+
FROM obs #{current_partition} o
|
344
344
|
WHERE o.concept_id = #{::ConceptName.find_by_name('TPT Drugs Received').concept_id}
|
345
345
|
AND o.voided = 0
|
346
346
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
347
|
-
AND o.value_drug IN (SELECT drug_id FROM drug WHERE concept_id IN (SELECT concept_id FROM concept_name WHERE name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')))
|
347
|
+
AND o.value_drug IN (SELECT drug_id FROM drug #{current_partition} WHERE concept_id IN (SELECT concept_id FROM concept_name #{current_partition} WHERE name IN ('Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine')))
|
348
348
|
AND o.person_id = #{patient_id}
|
349
349
|
AND o.value_numeric IS NOT NULL
|
350
350
|
AND DATE(o.obs_datetime) BETWEEN DATE(#{start_date}) AND DATE(#{end_date})
|
@@ -361,10 +361,10 @@ module MalawiHivProgramReports
|
|
361
361
|
WHEN o.concept_id = #{isoniazid_rifapentine_concept.concept_id} THEN '3HP'
|
362
362
|
ELSE '6H'
|
363
363
|
END AS course
|
364
|
-
FROM orders o
|
365
|
-
INNER JOIN encounter e ON e.encounter_id = o.encounter_id AND e.voided = 0 AND e.program_id = 1 /* HIV PROGRAM */
|
366
|
-
INNER JOIN drug_order dor ON dor.order_id = o.order_id AND dor.quantity > 0
|
367
|
-
WHERE o.order_type_id IN (SELECT order_type_id FROM order_type WHERE name = 'Drug order')
|
364
|
+
FROM orders #{current_partition} o
|
365
|
+
INNER JOIN encounter #{current_partition} e ON e.encounter_id = o.encounter_id AND e.voided = 0 AND e.program_id = 1 /* HIV PROGRAM */
|
366
|
+
INNER JOIN drug_order #{current_partition} dor ON dor.order_id = o.order_id AND dor.quantity > 0
|
367
|
+
WHERE o.order_type_id IN (SELECT order_type_id FROM order_type #{current_partition} WHERE name = 'Drug order')
|
368
368
|
AND o.voided = 0
|
369
369
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
370
370
|
AND o.concept_id IN (#{::ConceptName.where(name: ['Rifapentine', 'Isoniazid', 'Isoniazid/Rifapentine']).select(:concept_id).to_sql})
|
@@ -60,7 +60,7 @@ module MalawiHivProgramReports
|
|
60
60
|
p.person_id patient_id, birthdate, gender,
|
61
61
|
#{function_manager(function: 'pepfar_patient_outcome', location: @location, args: "p.person_id::int, '#{end_date.to_date}'::date, #{@location}::int")} outcome,
|
62
62
|
#{function_manager(function: 'disaggregated_age_group', location: @location, args: "p.birthdate::date, '#{end_date.to_date}::date'")} age_group
|
63
|
-
FROM person p
|
63
|
+
FROM person #{current_partition} p
|
64
64
|
WHERE #{in_manager(column: 'p.person_id', values: patient_ids)}
|
65
65
|
#{site_manager(operator: 'AND', column: 'p.site_id', location: @location)}
|
66
66
|
GROUP BY p.person_id #{group_by_columns('p.birthdate, p.gender')}
|
@@ -117,10 +117,10 @@ module MalawiHivProgramReports
|
|
117
117
|
pe.gender,
|
118
118
|
#{function_manager(function: 'patient_date_enrolled', location: @location, args: "p.patient_id::int, #{@location}::int")} AS date_enrolled,
|
119
119
|
#{function_manager(function: 'date_antiretrovirals_started', location: @location, args: "p.patient_id::int, MIN(s.start_date)::date, #{@location}::int")} AS earliest_start_date
|
120
|
-
FROM patient_program p
|
121
|
-
INNER JOIN person pe ON pe.person_id = p.patient_id AND pe.voided = 0
|
120
|
+
FROM patient_program #{current_partition} p
|
121
|
+
INNER JOIN person #{current_partition} pe ON pe.person_id = p.patient_id AND pe.voided = 0
|
122
122
|
#{site_manager(operator: 'AND', column: 'pe.site_id', location: @location)}
|
123
|
-
INNER JOIN patient_state s ON p.patient_program_id = s.patient_program_id AND s.voided = 0 AND s.state = 7
|
123
|
+
INNER JOIN patient_state #{current_partition} s ON p.patient_program_id = s.patient_program_id AND s.voided = 0 AND s.state = 7
|
124
124
|
#{site_manager(operator: 'AND', column: 's.site_id', location: @location)}
|
125
125
|
LEFT JOIN (#{current_occupation_query}) a ON a.person_id = p.patient_id
|
126
126
|
#{site_manager(operator: 'AND', column: 'a.site_id', location: @location)}
|
@@ -142,10 +142,10 @@ module MalawiHivProgramReports
|
|
142
142
|
pe.gender,
|
143
143
|
#{function_manager(function: 'patient_date_enrolled', location: @location, args: "p.patient_id::int, #{@location}::int")} AS date_enrolled,
|
144
144
|
#{function_manager(function: 'date_antiretrovirals_started', location: @location, args: "p.patient_id::int, MIN(s.start_date)::date, #{@location}::int")} AS earliest_start_date
|
145
|
-
FROM patient_program p
|
146
|
-
INNER JOIN person pe ON pe.person_id = p.patient_id AND pe.voided = 0
|
145
|
+
FROM patient_program #{current_partition} p
|
146
|
+
INNER JOIN person #{current_partition} pe ON pe.person_id = p.patient_id AND pe.voided = 0
|
147
147
|
#{site_manager(operator: 'AND', column: 'pe.site_id', location: @location)}
|
148
|
-
INNER JOIN patient_state s ON p.patient_program_id = s.patient_program_id AND s.voided = 0 AND s.state = 7
|
148
|
+
INNER JOIN patient_state #{current_partition} s ON p.patient_program_id = s.patient_program_id AND s.voided = 0 AND s.state = 7
|
149
149
|
#{site_manager(operator: 'AND', column: 's.site_id', location: @location)}
|
150
150
|
LEFT JOIN (#{current_occupation_query}) a ON a.person_id = p.patient_id
|
151
151
|
#{site_manager(operator: 'AND', column: 'a.site_id', location: @location)}
|
@@ -164,32 +164,32 @@ module MalawiHivProgramReports
|
|
164
164
|
pp.earliest_start_date,
|
165
165
|
preg_or_breast.name AS maternal_status,
|
166
166
|
DATE(MIN(pregnant_or_breastfeeding.obs_datetime)) AS maternal_status_date
|
167
|
-
FROM
|
168
|
-
INNER JOIN person pe ON pe.person_id = pp.patient_id AND pe.voided = 0
|
167
|
+
FROM cdr_temp_cohort_members pp
|
168
|
+
INNER JOIN person #{current_partition} pe ON pe.person_id = pp.patient_id AND pe.voided = 0
|
169
169
|
#{site_manager(operator: 'AND', column: 'pe.site_id', location: @location)}
|
170
170
|
LEFT JOIN (
|
171
171
|
SELECT max(o.obs_datetime) AS obs_datetime, o.person_id
|
172
|
-
FROM obs o
|
172
|
+
FROM obs #{current_partition} o
|
173
173
|
INNER JOIN concept_name cn ON cn.concept_id = o.concept_id AND cn.name = 'CD4 count' AND cn.voided = 0
|
174
|
-
INNER JOIN patient_program pp ON pp.patient_id = o.person_id
|
174
|
+
INNER JOIN patient_program #{current_partition} pp ON pp.patient_id = o.person_id
|
175
175
|
AND pp.program_id = #{program('HIV PROGRAM').id}
|
176
176
|
AND pp.voided = 0
|
177
|
-
INNER JOIN patient_state ps ON ps.patient_program_id = pp.patient_program_id AND ps.voided = 0 AND ps.state = 7 AND ps.start_date <= DATE('#{end_date}')
|
177
|
+
INNER JOIN patient_state #{current_partition} ps ON ps.patient_program_id = pp.patient_program_id AND ps.voided = 0 AND ps.state = 7 AND ps.start_date <= DATE('#{end_date}')
|
178
178
|
WHERE o.concept_id = #{concept_name('CD4 count').concept_id} AND o.voided = 0
|
179
179
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}#{' '}
|
180
180
|
AND o.obs_datetime <= '#{end_date}' AND o.obs_datetime >= '#{start_date}'
|
181
181
|
GROUP BY o.person_id
|
182
182
|
) current_cd4 ON current_cd4.person_id = pp.patient_id
|
183
|
-
LEFT JOIN obs o ON o.person_id = pp.patient_id AND o.concept_id = #{concept_name('CD4 count').concept_id} AND o.voided = 0 AND o.obs_datetime = current_cd4.obs_datetime
|
183
|
+
LEFT JOIN obs #{current_partition} o ON o.person_id = pp.patient_id AND o.concept_id = #{concept_name('CD4 count').concept_id} AND o.voided = 0 AND o.obs_datetime = current_cd4.obs_datetime
|
184
184
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
185
|
-
LEFT JOIN obs transfer_in ON transfer_in.person_id = pp.patient_id
|
185
|
+
LEFT JOIN obs #{current_partition} transfer_in ON transfer_in.person_id = pp.patient_id
|
186
186
|
AND transfer_in.concept_id = #{concept_name('Ever registered at ART clinic').concept_id}
|
187
187
|
AND transfer_in.voided = 0
|
188
188
|
AND transfer_in.value_coded = #{concept_name('Yes').concept_id}
|
189
189
|
AND transfer_in.obs_datetime <= '#{end_date}'
|
190
190
|
AND transfer_in.obs_datetime >= '#{start_date}'
|
191
191
|
#{site_manager(operator: 'AND', column: 'transfer_in.site_id', location: @location)}
|
192
|
-
LEFT JOIN obs pregnant_or_breastfeeding ON pregnant_or_breastfeeding.person_id = pp.patient_id
|
192
|
+
LEFT JOIN obs #{current_partition} pregnant_or_breastfeeding ON pregnant_or_breastfeeding.person_id = pp.patient_id
|
193
193
|
AND pregnant_or_breastfeeding.concept_id IN (SELECT concept_id FROM concept_name WHERE name IN ('Breast feeding?', 'Breast feeding', 'Breastfeeding', 'Is patient pregnant?', 'patient pregnant') AND voided = 0)
|
194
194
|
AND pregnant_or_breastfeeding.voided = 0
|
195
195
|
AND pregnant_or_breastfeeding.value_coded = #{concept_name('Yes').concept_id}
|
@@ -163,11 +163,11 @@ module MalawiHivProgramReports
|
|
163
163
|
WHEN cd4_result.value_numeric > 200 THEN 'cd4_greater_than_or_equal_to_200'
|
164
164
|
ELSE 'unknown_cd4_count'
|
165
165
|
END cd4_count_group
|
166
|
-
FROM patient_program
|
167
|
-
INNER JOIN person ON person.person_id = patient_program.patient_id
|
166
|
+
FROM patient_program #{current_partition}
|
167
|
+
INNER JOIN person #{current_partition} ON person.person_id = patient_program.patient_id
|
168
168
|
#{site_manager(operator: 'AND', column: 'person.site_id', location: @location)}
|
169
169
|
/* Select patients that were on treatment before start of reporting period */
|
170
|
-
INNER JOIN patient_state AS patient_ever_on_treatment
|
170
|
+
INNER JOIN patient_state #{current_partition} AS patient_ever_on_treatment
|
171
171
|
ON patient_ever_on_treatment.patient_program_id = patient_program.patient_program_id
|
172
172
|
AND patient_ever_on_treatment.state = 7
|
173
173
|
AND patient_ever_on_treatment.start_date < DATE(#{start_date})
|
@@ -175,8 +175,8 @@ module MalawiHivProgramReports
|
|
175
175
|
/* Get patient's state at the start of the quarter. */
|
176
176
|
INNER JOIN (
|
177
177
|
SELECT patient_program_id, MAX(patient_state.date_created) AS date_created
|
178
|
-
FROM patient_state
|
179
|
-
INNER JOIN patient_program USING (patient_program_id)
|
178
|
+
FROM patient_state #{current_partition}
|
179
|
+
INNER JOIN patient_program #{current_partition} USING (patient_program_id)
|
180
180
|
WHERE patient_state.voided = 0
|
181
181
|
AND patient_program.voided = 0
|
182
182
|
AND patient_program.program_id = 1
|
@@ -184,7 +184,7 @@ module MalawiHivProgramReports
|
|
184
184
|
GROUP BY patient_program_id
|
185
185
|
) AS date_of_last_patient_state_before_quarter
|
186
186
|
ON date_of_last_patient_state_before_quarter.patient_program_id = patient_program.patient_program_id
|
187
|
-
LEFT JOIN patient_state AS patient_state_at_start_of_quarter
|
187
|
+
LEFT JOIN patient_state #{current_partition} AS patient_state_at_start_of_quarter
|
188
188
|
ON patient_state_at_start_of_quarter.patient_program_id = date_of_last_patient_state_before_quarter.patient_program_id
|
189
189
|
#{site_manager(operator: 'AND', column: 'patient_state_at_start_of_quarter.site_id', location: @location)}
|
190
190
|
AND patient_state_at_start_of_quarter.date_created = date_of_last_patient_state_before_quarter.date_created
|
@@ -192,15 +192,15 @@ module MalawiHivProgramReports
|
|
192
192
|
/* Select patients who received ART within the reporting period. */
|
193
193
|
INNER JOIN (
|
194
194
|
SELECT DISTINCT encounter.patient_id, orders.start_date
|
195
|
-
FROM encounter
|
196
|
-
INNER JOIN orders
|
195
|
+
FROM encounter #{current_partition}
|
196
|
+
INNER JOIN orders #{current_partition}
|
197
197
|
ON orders.encounter_id = encounter.encounter_id
|
198
198
|
AND DATE(orders.start_date) BETWEEN DATE(#{start_date}) AND DATE(#{end_date})
|
199
199
|
AND orders.voided = 0
|
200
|
-
INNER JOIN drug_order
|
200
|
+
INNER JOIN drug_order #{current_partition}
|
201
201
|
ON drug_order.order_id = orders.order_id
|
202
202
|
AND drug_order.quantity > 0
|
203
|
-
AND drug_order.drug_inventory_id IN (SELECT DISTINCT drug_id FROM arv_drug)
|
203
|
+
AND drug_order.drug_inventory_id IN (SELECT DISTINCT drug_id FROM arv_drug #{current_partition})
|
204
204
|
WHERE encounter.voided = 0
|
205
205
|
AND encounter.program_id = 1
|
206
206
|
AND DATE(encounter.encounter_datetime) BETWEEN DATE(#{start_date}) AND DATE(#{end_date})
|
@@ -209,8 +209,8 @@ module MalawiHivProgramReports
|
|
209
209
|
/* Ensure that patients are on ART at the end of the quarter */
|
210
210
|
INNER JOIN (
|
211
211
|
SELECT patient_program_id, MAX(patient_state.date_created) AS date_created
|
212
|
-
FROM patient_state
|
213
|
-
INNER JOIN patient_program USING (patient_program_id)
|
212
|
+
FROM patient_state #{current_partition}
|
213
|
+
INNER JOIN patient_program #{current_partition} USING (patient_program_id)
|
214
214
|
WHERE patient_state.voided = 0
|
215
215
|
AND patient_program.voided = 0
|
216
216
|
AND patient_program.program_id = 1
|
@@ -220,7 +220,7 @@ module MalawiHivProgramReports
|
|
220
220
|
ON date_of_last_patient_state_in_quarter.patient_program_id = patient_program.patient_program_id
|
221
221
|
|
222
222
|
/*Not sure why Walter had this section in but I believe its not neccessary*/
|
223
|
-
/*INNER JOIN patient_state AS patient_state_at_end_of_quarter
|
223
|
+
/*INNER JOIN patient_state #{current_partition} AS patient_state_at_end_of_quarter
|
224
224
|
ON patient_state_at_end_of_quarter.patient_program_id = patient_program.patient_program_id
|
225
225
|
AND patient_state_at_end_of_quarter.date_created = date_of_last_patient_state_before_quarter.date_created
|
226
226
|
AND patient_state_at_end_of_quarter.state = 7*/
|
@@ -231,17 +231,17 @@ module MalawiHivProgramReports
|
|
231
231
|
the current_defaulter function. */
|
232
232
|
LEFT JOIN (
|
233
233
|
SELECT DISTINCT encounter.patient_id
|
234
|
-
FROM encounter
|
235
|
-
INNER JOIN orders
|
234
|
+
FROM encounter #{current_partition}
|
235
|
+
INNER JOIN orders #{current_partition}
|
236
236
|
ON orders.encounter_id = encounter.encounter_id
|
237
237
|
AND orders.voided = 0
|
238
238
|
#{site_manager(operator: 'AND', column: 'orders.site_id', location: @location)}
|
239
239
|
AND DATE(orders.start_date) BETWEEN DATE(#{start_date}) AND DATE(#{end_date})
|
240
240
|
AND DATE(orders.auto_expire_date) >= (DATE(#{end_date}) - INTERVAL 30 DAY)
|
241
|
-
INNER JOIN drug_order
|
241
|
+
INNER JOIN drug_order #{current_partition}
|
242
242
|
ON drug_order.order_id = orders.order_id
|
243
243
|
AND drug_order.quantity > 0
|
244
|
-
AND drug_order.drug_inventory_id IN (SELECT DISTINCT drug_id FROM arv_drug)
|
244
|
+
AND drug_order.drug_inventory_id IN (SELECT DISTINCT drug_id FROM arv_drug #{current_partition})
|
245
245
|
WHERE encounter.program_id = 1
|
246
246
|
AND DATE(encounter.encounter_datetime) BETWEEN DATE(#{start_date}) AND DATE(#{end_date})
|
247
247
|
AND encounter.voided = 0
|
@@ -249,14 +249,14 @@ module MalawiHivProgramReports
|
|
249
249
|
ON patients_with_orders_at_end_of_quarter.patient_id = patient_program.patient_id
|
250
250
|
LEFT JOIN (
|
251
251
|
SELECT max(o.obs_datetime) AS obs_datetime, o.person_id
|
252
|
-
FROM obs o
|
252
|
+
FROM obs #{current_partition} o
|
253
253
|
INNER JOIN concept_name cn ON cn.concept_id = o.concept_id AND cn.name = 'CD4 count'
|
254
254
|
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
255
255
|
WHERE o.concept_id = #{concept('CD4 count').concept_id} AND o.voided = 0
|
256
256
|
AND o.obs_datetime <= #{end_date} AND o.obs_datetime >= #{start_date}
|
257
257
|
GROUP BY o.person_id
|
258
258
|
) current_cd4 ON current_cd4.person_id = patient_program.patient_id
|
259
|
-
LEFT JOIN obs cd4_result ON cd4_result.person_id = patient_program.patient_id AND cd4_result.concept_id = #{concept('CD4 count').concept_id} AND cd4_result.voided = 0
|
259
|
+
LEFT JOIN obs #{current_partition} cd4_result ON cd4_result.person_id = patient_program.patient_id AND cd4_result.concept_id = #{concept('CD4 count').concept_id} AND cd4_result.voided = 0
|
260
260
|
#{site_manager(operator: 'AND', column: 'cd4_result.site_id', location: @location)}
|
261
261
|
# Not sure why we are matching the two dates but the result was excluding cd4 results for patients.
|
262
262
|
# AND cd4_result.obs_datetime = current_cd4.obs_datetime
|
@@ -266,10 +266,10 @@ module MalawiHivProgramReports
|
|
266
266
|
before the start of the reporting period */
|
267
267
|
AND patient_program.patient_id NOT IN (
|
268
268
|
SELECT DISTINCT orders.patient_id
|
269
|
-
FROM orders
|
270
|
-
INNER JOIN drug_order USING (order_id)
|
269
|
+
FROM orders #{current_partition}
|
270
|
+
INNER JOIN drug_order #{current_partition} USING (order_id)
|
271
271
|
INNER JOIN arv_drug ON arv_drug.drug_id = drug_inventory_id
|
272
|
-
INNER JOIN patient_program
|
272
|
+
INNER JOIN patient_program #{current_partition}
|
273
273
|
ON patient_program.patient_id = orders.patient_id
|
274
274
|
AND patient_program.program_id = 1
|
275
275
|
#{site_manager(operator: 'AND', column: 'orders.site_id', location: @location)}
|