malawi_hiv_program_reports 1.0.2 → 1.0.3
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/clinic/patients_alive_and_on_treatment.rb +1 -1
- data/app/services/malawi_hiv_program_reports/moh/cohort_builder.rb +5 -8
- data/app/services/malawi_hiv_program_reports/pepfar/tx_ml.rb +2 -2
- data/app/services/malawi_hiv_program_reports/pepfar/tx_new.rb +17 -14
- data/lib/malawi_hiv_program_reports/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f760361da4c9737b3c6e1a656bc241a2b00b293bb55a8ea87140b80b17791944
|
4
|
+
data.tar.gz: 38d1370e27a37f4cf05c1693aeb2520cededf24def54ff9dc9aacc2a37058b54
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44185581748db309173379260ff86ad76c64dcae1689c7e4d306b4930d80e0f6e0f670382fdc931c171da06bc18debd657ce149ebc848aa455aa5edfb3a758ca
|
7
|
+
data.tar.gz: 19693969f34e6401039883a0c4974d2426e77262420b465db8123293a5f0ba086e91798b5cc06d14ef6263aaccb4df9b3c4c982cb1187ebbeb8d69fd876c37f2
|
@@ -25,7 +25,7 @@ module MalawiHivProgramReports
|
|
25
25
|
# with various outcomes.
|
26
26
|
def refresh_outcomes_table
|
27
27
|
logger.debug('Initialising cohort temporary tables...')
|
28
|
-
MalawiHivProgramReports::Moh::CohortBuilder.new(outcomes_definition: @outcomes_definition, location
|
28
|
+
MalawiHivProgramReports::Moh::CohortBuilder.new(outcomes_definition: @outcomes_definition, location: @location)
|
29
29
|
.init_temporary_tables(@start_date, @end_date, @occupation)
|
30
30
|
end
|
31
31
|
|
@@ -871,7 +871,7 @@ module MalawiHivProgramReports
|
|
871
871
|
SQL
|
872
872
|
end
|
873
873
|
|
874
|
-
def create_temp_register_start_date_table(
|
874
|
+
def create_temp_register_start_date_table(end_date)
|
875
875
|
type_of_patient_concept = concept('Type of patient').concept_id
|
876
876
|
new_patient_concept = concept('New patient').concept_id
|
877
877
|
exe_temp_register_start_date_table(adapter: @adapter)
|
@@ -879,14 +879,11 @@ module MalawiHivProgramReports
|
|
879
879
|
INSERT INTO temp_register_start_date (patient_id, start_date, site_id)
|
880
880
|
SELECT pp.patient_id as patient_id, MIN(o.obs_datetime) AS start_date, pp.site_id as site_id
|
881
881
|
FROM patient_program pp
|
882
|
-
INNER JOIN temp_other_patient_types tmp ON tmp.patient_id = pp.patient_id
|
883
|
-
#{site_manager(operator: 'AND', column: '
|
884
|
-
INNER JOIN obs o ON pp.patient_id = o.person_id AND o.concept_id = #{type_of_patient_concept}
|
885
|
-
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
882
|
+
INNER JOIN temp_other_patient_types tmp ON tmp.patient_id = pp.patient_id #{site_manager(operator: 'AND', column: 'pp.site_id', location: @location)}
|
883
|
+
INNER JOIN obs o ON pp.patient_id = o.person_id AND o.concept_id = #{type_of_patient_concept} #{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
886
884
|
AND o.value_coded = #{new_patient_concept}
|
887
|
-
AND o.voided = 0
|
888
|
-
WHERE pp.program_id = 1
|
889
|
-
#{site_manager(operator: 'AND', column: 'pp.site_id', location: @location)}
|
885
|
+
AND o.voided = 0 AND o.obs_datetime < DATE(#{end_date}) + INTERVAL 1 DAY
|
886
|
+
WHERE pp.program_id = 1 #{site_manager(operator: 'AND', column: 'pp.site_id', location: @location)}
|
890
887
|
GROUP BY pp.patient_id #{@adapter == 'mysql2' ? '' : ', pp.site_id'}
|
891
888
|
SQL
|
892
889
|
end
|
@@ -130,7 +130,7 @@ module MalawiHivProgramReports
|
|
130
130
|
AND pe.person_id NOT IN (#{drug_refills_and_external_consultation_list})
|
131
131
|
GROUP BY p.patient_id
|
132
132
|
HAVING date_enrolled IS NOT NULL AND DATE(date_enrolled) < '#{start_date.to_date}';
|
133
|
-
|
133
|
+
SQL
|
134
134
|
end
|
135
135
|
|
136
136
|
def new_potential_tx_ml_clients
|
@@ -153,7 +153,7 @@ module MalawiHivProgramReports
|
|
153
153
|
#{site_manager(operator: 'AND', column: 'p.site_id', location: @location)}
|
154
154
|
GROUP BY p.patient_id
|
155
155
|
HAVING date_enrolled IS NOT NULL AND date_enrolled BETWEEN DATE('#{start_date}') AND DATE('#{end_date}');
|
156
|
-
|
156
|
+
SQL
|
157
157
|
end
|
158
158
|
|
159
159
|
def defaulter_period(patient_id, earliest_start_date)
|
@@ -8,7 +8,7 @@ module MalawiHivProgramReports
|
|
8
8
|
include MalawiHivProgramReports::Utils::ModelUtils
|
9
9
|
include Pepfar::Utils
|
10
10
|
include MalawiHivProgramReports::Adapters::Moh::Custom
|
11
|
-
|
11
|
+
|
12
12
|
attr_reader :start_date, :end_date, :rebuild, :location
|
13
13
|
|
14
14
|
def initialize(start_date:, end_date:, **kwargs)
|
@@ -22,7 +22,10 @@ module MalawiHivProgramReports
|
|
22
22
|
def find_report
|
23
23
|
report = init_report
|
24
24
|
addittional_groups report
|
25
|
-
|
25
|
+
if rebuild
|
26
|
+
MalawiHivProgramReports::Moh::CohortBuilder.new(location: @location).init_temporary_tables(start_date,
|
27
|
+
end_date, '')
|
28
|
+
end
|
26
29
|
process_data report
|
27
30
|
flatten_the_report report
|
28
31
|
rescue StandardError => e
|
@@ -35,7 +38,7 @@ module MalawiHivProgramReports
|
|
35
38
|
private
|
36
39
|
|
37
40
|
GENDER = %w[M F].freeze
|
38
|
-
|
41
|
+
|
39
42
|
def init_report
|
40
43
|
pepfar_age_groups.each_with_object({}) do |age_group, report|
|
41
44
|
report[age_group] = GENDER.each_with_object({}) do |gender, age_group_report|
|
@@ -78,13 +81,14 @@ module MalawiHivProgramReports
|
|
78
81
|
indicator = new_patient.positive? ? cd4_count_group : 'transfer_in'
|
79
82
|
|
80
83
|
if new_patient.positive? && earliest_start_date.to_date >= start_date.to_date
|
81
|
-
report[age_group.to_s][gender.to_s][indicator.to_sym] << patient_id
|
84
|
+
report[age_group.to_s][gender.to_s][indicator.to_sym] << patient_id
|
82
85
|
elsif new_patient.zero?
|
83
86
|
report[age_group.to_s][gender.to_s][indicator.to_sym] << patient_id
|
84
87
|
else
|
85
88
|
next
|
86
89
|
end
|
87
|
-
process_aggreggation_rows(report
|
90
|
+
process_aggreggation_rows(report:, gender:, indicator:, start_date: date_enrolled,
|
91
|
+
patient_id:, maternal_status: row['maternal_status'], maternal_status_date: row['maternal_status_date'])
|
88
92
|
end
|
89
93
|
end
|
90
94
|
|
@@ -94,9 +98,9 @@ module MalawiHivProgramReports
|
|
94
98
|
|
95
99
|
if gender == 'M'
|
96
100
|
report['All']['Male'][indicator.to_sym] << kwargs[:patient_id]
|
97
|
-
elsif maternal_status&.match?(/pregnant/i) && maternal_status_date&.to_date
|
101
|
+
elsif maternal_status&.match?(/pregnant/i) && (maternal_status_date&.to_date&.<= start_date.to_date)
|
98
102
|
report['All']['FP'][indicator.to_sym] << kwargs[:patient_id]
|
99
|
-
elsif maternal_status&.match?(/breast/i) && maternal_status_date&.to_date
|
103
|
+
elsif maternal_status&.match?(/breast/i) && (maternal_status_date&.to_date&.<= start_date.to_date)
|
100
104
|
report['All']['FBf'][indicator.to_sym] << kwargs[:patient_id]
|
101
105
|
else
|
102
106
|
report['All']['FNP'][indicator.to_sym] << kwargs[:patient_id]
|
@@ -105,16 +109,16 @@ module MalawiHivProgramReports
|
|
105
109
|
|
106
110
|
def process_age_group_report(age_group, gender, age_group_report)
|
107
111
|
{
|
108
|
-
age_group
|
112
|
+
age_group:,
|
109
113
|
gender: if gender == 'F'
|
110
114
|
'Female'
|
111
115
|
else
|
112
116
|
(gender == 'M' ? 'Male' : gender)
|
113
117
|
end,
|
114
|
-
cd4_less_than_200: age_group_report[
|
115
|
-
cd4_greater_than_equal_to_200: age_group_report[
|
116
|
-
cd4_unknown_or_not_done: age_group_report[
|
117
|
-
transfer_in: age_group_report[
|
118
|
+
cd4_less_than_200: age_group_report[:cd4_less_than_200],
|
119
|
+
cd4_greater_than_equal_to_200: age_group_report[:cd4_greater_than_equal_to_200],
|
120
|
+
cd4_unknown_or_not_done: age_group_report[:cd4_unknown_or_not_done],
|
121
|
+
transfer_in: age_group_report[:transfer_in]
|
118
122
|
}
|
119
123
|
end
|
120
124
|
|
@@ -138,7 +142,6 @@ module MalawiHivProgramReports
|
|
138
142
|
result_scores.reject { |item| item[:age_group].match?(/unknown/i) }
|
139
143
|
end
|
140
144
|
|
141
|
-
|
142
145
|
def data
|
143
146
|
ActiveRecord::Base.connection.select_all <<~SQL
|
144
147
|
SELECT
|
@@ -173,7 +176,7 @@ module MalawiHivProgramReports
|
|
173
176
|
AND pp.voided = 0
|
174
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}')
|
175
178
|
WHERE o.concept_id = #{concept_name('CD4 count').concept_id} AND o.voided = 0
|
176
|
-
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}
|
179
|
+
#{site_manager(operator: 'AND', column: 'o.site_id', location: @location)}#{' '}
|
177
180
|
AND o.obs_datetime <= '#{end_date}' AND o.obs_datetime >= '#{start_date}'
|
178
181
|
GROUP BY o.person_id
|
179
182
|
) current_cd4 ON current_cd4.person_id = pp.patient_id
|