malawi_hiv_program_reports 1.0.1 → 1.0.2

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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/services/malawi_hiv_program_reports/README.md +16 -0
  3. data/app/services/malawi_hiv_program_reports/adapters/moh/custom.rb +199 -0
  4. data/app/services/malawi_hiv_program_reports/archiving_candidates.rb +130 -0
  5. data/app/services/malawi_hiv_program_reports/arv_refill_periods.rb +311 -0
  6. data/app/services/malawi_hiv_program_reports/clinic/README.md +5 -0
  7. data/app/services/malawi_hiv_program_reports/clinic/appointments_report.rb +317 -0
  8. data/app/services/malawi_hiv_program_reports/clinic/discrepancy_report.rb +42 -0
  9. data/app/services/malawi_hiv_program_reports/clinic/docs/hypertension_report.md +31 -0
  10. data/app/services/malawi_hiv_program_reports/clinic/drug_dispensations.rb +48 -0
  11. data/app/services/malawi_hiv_program_reports/clinic/external_consultation_clients.rb +69 -0
  12. data/app/services/malawi_hiv_program_reports/clinic/hypertension_report.rb +223 -0
  13. data/app/services/malawi_hiv_program_reports/clinic/ipt_coverage.rb +112 -0
  14. data/app/services/malawi_hiv_program_reports/clinic/ipt_report.rb +69 -0
  15. data/app/services/malawi_hiv_program_reports/clinic/lims_results.rb +55 -0
  16. data/app/services/malawi_hiv_program_reports/clinic/outcome_list.rb +127 -0
  17. data/app/services/malawi_hiv_program_reports/clinic/patients_alive_and_on_treatment.rb +57 -0
  18. data/app/services/malawi_hiv_program_reports/clinic/patients_due_for_viral_load.rb +39 -0
  19. data/app/services/malawi_hiv_program_reports/clinic/patients_on_antiretrovirals.rb +44 -0
  20. data/app/services/malawi_hiv_program_reports/clinic/patients_on_dtg.rb +36 -0
  21. data/app/services/malawi_hiv_program_reports/clinic/patients_on_treatment.rb +42 -0
  22. data/app/services/malawi_hiv_program_reports/clinic/patients_with_outdated_demographics.rb +173 -0
  23. data/app/services/malawi_hiv_program_reports/clinic/pregnant_patients.rb +91 -0
  24. data/app/services/malawi_hiv_program_reports/clinic/regimen_dispensation_data.rb +282 -0
  25. data/app/services/malawi_hiv_program_reports/clinic/regimen_switch.rb +456 -0
  26. data/app/services/malawi_hiv_program_reports/clinic/regimens_and_formulations.rb +182 -0
  27. data/app/services/malawi_hiv_program_reports/clinic/regimens_by_weight_and_gender.rb +108 -0
  28. data/app/services/malawi_hiv_program_reports/clinic/retention.rb +246 -0
  29. data/app/services/malawi_hiv_program_reports/clinic/stock_card_report.rb +65 -0
  30. data/app/services/malawi_hiv_program_reports/clinic/tpt_outcome.rb +494 -0
  31. data/app/services/malawi_hiv_program_reports/clinic/tx_rtt.rb +169 -0
  32. data/app/services/malawi_hiv_program_reports/clinic/viral_load.rb +292 -0
  33. data/app/services/malawi_hiv_program_reports/clinic/viral_load_disaggregated.rb +97 -0
  34. data/app/services/malawi_hiv_program_reports/clinic/viral_load_results.rb +175 -0
  35. data/app/services/malawi_hiv_program_reports/clinic/visits_report.rb +113 -0
  36. data/app/services/malawi_hiv_program_reports/clinic/vl_collection.rb +48 -0
  37. data/app/services/malawi_hiv_program_reports/cohort/outcomes.rb +338 -0
  38. data/app/services/malawi_hiv_program_reports/cohort/regimens.rb +69 -0
  39. data/app/services/malawi_hiv_program_reports/cohort/side_effects.rb +141 -0
  40. data/app/services/malawi_hiv_program_reports/cohort/tpt.rb +172 -0
  41. data/app/services/malawi_hiv_program_reports/moh/cohort.rb +278 -0
  42. data/app/services/malawi_hiv_program_reports/moh/cohort_builder.rb +2340 -0
  43. data/app/services/malawi_hiv_program_reports/moh/cohort_disaggregated.rb +608 -0
  44. data/app/services/malawi_hiv_program_reports/moh/cohort_disaggregated_additions.rb +208 -0
  45. data/app/services/malawi_hiv_program_reports/moh/cohort_disaggregated_builder.rb +526 -0
  46. data/app/services/malawi_hiv_program_reports/moh/cohort_struct.rb +219 -0
  47. data/app/services/malawi_hiv_program_reports/moh/cohort_survival_analysis.rb +203 -0
  48. data/app/services/malawi_hiv_program_reports/moh/moh_tpt.rb +223 -0
  49. data/app/services/malawi_hiv_program_reports/moh/tpt_newly_initiated.rb +235 -0
  50. data/app/services/malawi_hiv_program_reports/pepfar/defaulter_list.rb +25 -0
  51. data/app/services/malawi_hiv_program_reports/pepfar/maternal_status.rb +29 -0
  52. data/app/services/malawi_hiv_program_reports/pepfar/patient_start_vl.rb +45 -0
  53. data/app/services/malawi_hiv_program_reports/pepfar/regimen_switch.rb +479 -0
  54. data/app/services/malawi_hiv_program_reports/pepfar/sc_arvdisp.rb +174 -0
  55. data/app/services/malawi_hiv_program_reports/pepfar/sc_curr.rb +98 -0
  56. data/app/services/malawi_hiv_program_reports/pepfar/tb_prev.rb +163 -0
  57. data/app/services/malawi_hiv_program_reports/pepfar/tb_prev2.rb +222 -0
  58. data/app/services/malawi_hiv_program_reports/pepfar/tb_prev3.rb +421 -0
  59. data/app/services/malawi_hiv_program_reports/pepfar/tpt_status.rb +181 -0
  60. data/app/services/malawi_hiv_program_reports/pepfar/tx_ml.rb +181 -0
  61. data/app/services/malawi_hiv_program_reports/pepfar/tx_new.rb +202 -0
  62. data/app/services/malawi_hiv_program_reports/pepfar/tx_rtt.rb +288 -0
  63. data/app/services/malawi_hiv_program_reports/pepfar/tx_tb.rb +283 -0
  64. data/app/services/malawi_hiv_program_reports/pepfar/utils.rb +141 -0
  65. data/app/services/malawi_hiv_program_reports/pepfar/viral_load_coverage.rb +414 -0
  66. data/app/services/malawi_hiv_program_reports/pepfar/viral_load_coverage2.rb +433 -0
  67. data/app/services/malawi_hiv_program_reports/report_map.rb +56 -0
  68. data/app/services/malawi_hiv_program_reports/utils/README.md +8 -0
  69. data/app/services/malawi_hiv_program_reports/utils/common_sql_query_utils.rb +60 -0
  70. data/app/services/malawi_hiv_program_reports/utils/concurrency_utils.rb +53 -0
  71. data/app/services/malawi_hiv_program_reports/utils/docs/common_sql_query_utils.md +53 -0
  72. data/app/services/malawi_hiv_program_reports/utils/model_utils.rb +66 -0
  73. data/app/services/malawi_hiv_program_reports/utils/parameter_utils.rb +32 -0
  74. data/app/services/malawi_hiv_program_reports/utils/time_utils.rb +52 -0
  75. data/lib/malawi_hiv_program_reports/version.rb +1 -1
  76. metadata +74 -1
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This module contains utility methods for retrieving models
4
+ module MalawiHivProgramReports
5
+ module Utils
6
+ module ModelUtils
7
+ # Retrieve concept by its name
8
+ #
9
+ # Parameters:
10
+ # name - A string repr of the concept name
11
+ def concept(name)
12
+ ::Concept.joins(:concept_names).where('LOWER(concept_name.name) = ?', name.downcase).first
13
+ end
14
+
15
+ def concept_name(name)
16
+ ::ConceptName.where('LOWER(name) = ?', name.downcase).first
17
+ end
18
+
19
+ def concept_name_to_id(name)
20
+ return nil if name.blank?
21
+
22
+ concept_name(name)&.concept_id
23
+ end
24
+
25
+ def concept_id_to_name(id)
26
+ return nil if id.blank?
27
+
28
+ concept = ::Concept.find_by_concept_id(id)
29
+ concept&.fullname
30
+ end
31
+
32
+ def program(name)
33
+ ::Program.where('LOWER(name) = ?', name.downcase).first
34
+ end
35
+
36
+ def encounter_type(name)
37
+ ::EncounterType.where('LOWER(name) = ?', name.downcase).first
38
+ end
39
+
40
+ def global_property(name)
41
+ ::GlobalProperty.where('LOWER(property) = ?', name.downcase).first
42
+ end
43
+
44
+ def user_property(name, user_id: nil)
45
+ user_id ||= ::User.current.user_id
46
+ ::UserProperty.where('user_id = ? AND LOWER(property) = ?', user_id, name).first
47
+ end
48
+
49
+ def order_type(name)
50
+ ::OrderType.where('LOWER(name) = ?', name.downcase).first
51
+ end
52
+
53
+ def report_type(name)
54
+ ::ReportType.where('LOWER(name) = ?', name.downcase).first
55
+ end
56
+
57
+ def patient_identifier_type(name)
58
+ ::PatientIdentifierType.where('LOWER(name) = ?', name.downcase).first
59
+ end
60
+
61
+ def drug(name)
62
+ ::Drug.where('LOWER(name) = ?', name.downcase).first
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ # Utility methods for dealing with ActiveSupport::Parameters objects.
6
+ module MalawiHivProgramReports
7
+ module Utils
8
+ module ParameterUtils
9
+ LOGGER = Logger.new($stdout)
10
+
11
+ # Fetches field from ActiveSupport::Parameters.
12
+ #
13
+ # This method is just a wrapper around the fetch or raise bad request
14
+ # routine for retrieving parameter values.
15
+ #
16
+ # @throws InvalidParameterError - When field is not found in stock_obs
17
+ def fetch_parameter(parameters, field)
18
+ parameters.fetch(field)
19
+ rescue KeyError => e
20
+ LOGGER.error("Failed to fetch parameter `#{field}` due to #{e}")
21
+ raise ::InvalidParameterError, "`#{field}` not found in parameters: #{parameters.to_json}"
22
+ end
23
+
24
+ def fetch_parameter_as_date(parameters, field, default = nil)
25
+ parameters.fetch(field, default)&.to_date
26
+ rescue ArgumentError => e
27
+ LOGGER.error("Failed to fetch parameter `#{field}` due to #{e}")
28
+ raise ::InvalidParameterError, "Could not parse #{field} as date from: #{parameters.to_json}"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MalawiHivProgramReports
4
+ module Utils
5
+ module TimeUtils
6
+ class << self
7
+ def time_epoch
8
+ Time.now - 120.years
9
+ end
10
+
11
+ def date_epoch
12
+ Date.today - 120.years
13
+ end
14
+
15
+ # Returns a 24 hour period (day) containing the date
16
+ def day_bounds(datetime)
17
+ datetime = datetime&.to_time || datetime
18
+ [datetime.strftime('%Y-%m-%d 00:00:00').to_time,
19
+ datetime.strftime('%Y-%m-%d 23:59:59').to_time]
20
+ end
21
+
22
+ ##
23
+ # Parses and validates start_date and end_date provided by users
24
+ #
25
+ # Returns: A pair of Date objects containing the start_date and end_date
26
+ def parse_date_range(start_date, end_date)
27
+ raise ::InvalidParameterError, 'start_date is required' if start_date.blank?
28
+ raise ::InvalidParameterError, 'end_date is required' if end_date.blank?
29
+
30
+ start_date = start_date.to_date
31
+ end_date = end_date.to_date
32
+
33
+ raise ::InvalidParameterError, "start_date can't be greater than end_date" if start_date > end_date
34
+
35
+ [start_date, end_date]
36
+ end
37
+
38
+ # Returns a time object comprising the given date plus the current time.
39
+ def retro_timestamp(date)
40
+ return nil unless date
41
+
42
+ date = date.to_time
43
+ "#{date.strftime('%Y-%m-%d')} #{Time.now.strftime('%H:%M:%S')}".to_time
44
+ end
45
+
46
+ def get_person_age(birthdate:)
47
+ ((Time.zone.now - birthdate.to_time) / 1.year.seconds).floor
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MalawiHivProgramReports
4
- VERSION = '1.0.1'
4
+ VERSION = '1.0.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: malawi_hiv_program_reports
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roy Chanunkha
@@ -90,6 +90,79 @@ files:
90
90
  - MIT-LICENSE
91
91
  - README.md
92
92
  - Rakefile
93
+ - app/services/malawi_hiv_program_reports/README.md
94
+ - app/services/malawi_hiv_program_reports/adapters/moh/custom.rb
95
+ - app/services/malawi_hiv_program_reports/archiving_candidates.rb
96
+ - app/services/malawi_hiv_program_reports/arv_refill_periods.rb
97
+ - app/services/malawi_hiv_program_reports/clinic/README.md
98
+ - app/services/malawi_hiv_program_reports/clinic/appointments_report.rb
99
+ - app/services/malawi_hiv_program_reports/clinic/discrepancy_report.rb
100
+ - app/services/malawi_hiv_program_reports/clinic/docs/hypertension_report.md
101
+ - app/services/malawi_hiv_program_reports/clinic/drug_dispensations.rb
102
+ - app/services/malawi_hiv_program_reports/clinic/external_consultation_clients.rb
103
+ - app/services/malawi_hiv_program_reports/clinic/hypertension_report.rb
104
+ - app/services/malawi_hiv_program_reports/clinic/ipt_coverage.rb
105
+ - app/services/malawi_hiv_program_reports/clinic/ipt_report.rb
106
+ - app/services/malawi_hiv_program_reports/clinic/lims_results.rb
107
+ - app/services/malawi_hiv_program_reports/clinic/outcome_list.rb
108
+ - app/services/malawi_hiv_program_reports/clinic/patients_alive_and_on_treatment.rb
109
+ - app/services/malawi_hiv_program_reports/clinic/patients_due_for_viral_load.rb
110
+ - app/services/malawi_hiv_program_reports/clinic/patients_on_antiretrovirals.rb
111
+ - app/services/malawi_hiv_program_reports/clinic/patients_on_dtg.rb
112
+ - app/services/malawi_hiv_program_reports/clinic/patients_on_treatment.rb
113
+ - app/services/malawi_hiv_program_reports/clinic/patients_with_outdated_demographics.rb
114
+ - app/services/malawi_hiv_program_reports/clinic/pregnant_patients.rb
115
+ - app/services/malawi_hiv_program_reports/clinic/regimen_dispensation_data.rb
116
+ - app/services/malawi_hiv_program_reports/clinic/regimen_switch.rb
117
+ - app/services/malawi_hiv_program_reports/clinic/regimens_and_formulations.rb
118
+ - app/services/malawi_hiv_program_reports/clinic/regimens_by_weight_and_gender.rb
119
+ - app/services/malawi_hiv_program_reports/clinic/retention.rb
120
+ - app/services/malawi_hiv_program_reports/clinic/stock_card_report.rb
121
+ - app/services/malawi_hiv_program_reports/clinic/tpt_outcome.rb
122
+ - app/services/malawi_hiv_program_reports/clinic/tx_rtt.rb
123
+ - app/services/malawi_hiv_program_reports/clinic/viral_load.rb
124
+ - app/services/malawi_hiv_program_reports/clinic/viral_load_disaggregated.rb
125
+ - app/services/malawi_hiv_program_reports/clinic/viral_load_results.rb
126
+ - app/services/malawi_hiv_program_reports/clinic/visits_report.rb
127
+ - app/services/malawi_hiv_program_reports/clinic/vl_collection.rb
128
+ - app/services/malawi_hiv_program_reports/cohort/outcomes.rb
129
+ - app/services/malawi_hiv_program_reports/cohort/regimens.rb
130
+ - app/services/malawi_hiv_program_reports/cohort/side_effects.rb
131
+ - app/services/malawi_hiv_program_reports/cohort/tpt.rb
132
+ - app/services/malawi_hiv_program_reports/moh/cohort.rb
133
+ - app/services/malawi_hiv_program_reports/moh/cohort_builder.rb
134
+ - app/services/malawi_hiv_program_reports/moh/cohort_disaggregated.rb
135
+ - app/services/malawi_hiv_program_reports/moh/cohort_disaggregated_additions.rb
136
+ - app/services/malawi_hiv_program_reports/moh/cohort_disaggregated_builder.rb
137
+ - app/services/malawi_hiv_program_reports/moh/cohort_struct.rb
138
+ - app/services/malawi_hiv_program_reports/moh/cohort_survival_analysis.rb
139
+ - app/services/malawi_hiv_program_reports/moh/moh_tpt.rb
140
+ - app/services/malawi_hiv_program_reports/moh/tpt_newly_initiated.rb
141
+ - app/services/malawi_hiv_program_reports/pepfar/defaulter_list.rb
142
+ - app/services/malawi_hiv_program_reports/pepfar/maternal_status.rb
143
+ - app/services/malawi_hiv_program_reports/pepfar/patient_start_vl.rb
144
+ - app/services/malawi_hiv_program_reports/pepfar/regimen_switch.rb
145
+ - app/services/malawi_hiv_program_reports/pepfar/sc_arvdisp.rb
146
+ - app/services/malawi_hiv_program_reports/pepfar/sc_curr.rb
147
+ - app/services/malawi_hiv_program_reports/pepfar/tb_prev.rb
148
+ - app/services/malawi_hiv_program_reports/pepfar/tb_prev2.rb
149
+ - app/services/malawi_hiv_program_reports/pepfar/tb_prev3.rb
150
+ - app/services/malawi_hiv_program_reports/pepfar/tpt_status.rb
151
+ - app/services/malawi_hiv_program_reports/pepfar/tx_ml.rb
152
+ - app/services/malawi_hiv_program_reports/pepfar/tx_new.rb
153
+ - app/services/malawi_hiv_program_reports/pepfar/tx_rtt.rb
154
+ - app/services/malawi_hiv_program_reports/pepfar/tx_tb.rb
155
+ - app/services/malawi_hiv_program_reports/pepfar/utils.rb
156
+ - app/services/malawi_hiv_program_reports/pepfar/viral_load_coverage.rb
157
+ - app/services/malawi_hiv_program_reports/pepfar/viral_load_coverage2.rb
158
+ - app/services/malawi_hiv_program_reports/report_map.rb
159
+ - app/services/malawi_hiv_program_reports/utils/README.md
160
+ - app/services/malawi_hiv_program_reports/utils/common_sql_query_utils.rb
161
+ - app/services/malawi_hiv_program_reports/utils/concurrency_utils.rb
162
+ - app/services/malawi_hiv_program_reports/utils/docs/common_sql_query_utils.md
163
+ - app/services/malawi_hiv_program_reports/utils/model_utils.rb
164
+ - app/services/malawi_hiv_program_reports/utils/parameter_utils.rb
165
+ - app/services/malawi_hiv_program_reports/utils/time_utils.rb
93
166
  - lib/malawi_hiv_program_reports.rb
94
167
  - lib/malawi_hiv_program_reports/engine.rb
95
168
  - lib/malawi_hiv_program_reports/version.rb