emr_ohsp_interface 0.5.0 → 0.5.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 474cd01fab975e0d16f3c70e36e86f5723f8e7ab41497537c9e301d8d1dcdef4
4
- data.tar.gz: d949f4630492570b5a5dee8426492e23846498a629ab24cdaa77eb100ce95321
3
+ metadata.gz: 5b0a446ac067b3e70a193019ee45c89339716467f917d8a370bcbb1a223b75b6
4
+ data.tar.gz: b281e439cc147418468af783a1896940f5aa9d5311c85616dc6f57d1945cdfc2
5
5
  SHA512:
6
- metadata.gz: b146539a2f7b8a50c6301f457d8d8f48fb3371da299ba4ea7f2e3cf327d473633d6f8cb414aa80e5f346f42d54936c2a6aa5d84664d07afe8d3c8658e286579c
7
- data.tar.gz: a5a2eb25f4c916feb96bea06bbf2160b0a86ad4d08d14169d58c8f64f89bb2011a486ac6fb64d89b9e89b6f71cfe2aec701882c1a820e482d7a2a2a4a22ed12e
6
+ metadata.gz: a76ba192164398c65368d1b9ac19b67b74696e53f1f2df83cb8155f2f50cd496f9a98d512166c8afdc61ccae88a4c14bef99b5f932072e9b5e8750be364640c8
7
+ data.tar.gz: c225131968d0b931b1e15c0c8be724d2e7e754690c998426d186aa9517bac464a99e4b75af4eae5ef012d2939ee993f8bb240f8e37e36c551eb67a2500eb07d6
@@ -14,6 +14,10 @@ class EmrOhspInterface::EmrOhspInterfaceController < ::ApplicationController
14
14
  def generate_monthly_idsr_report
15
15
  render json: service.generate_monthly_idsr_report(params[:request],params[:start_date],params[:end_date]);
16
16
  end
17
+
18
+ def generate_hmis_15_report
19
+ render json: service.generate_hmis_15_report(params[:request],params[:start_date],params[:end_date]);
20
+ end
17
21
 
18
22
  def service
19
23
  EmrOhspInterface::EmrOhspInterfaceService
@@ -180,6 +180,106 @@ module EmrOhspInterface
180
180
  return collection
181
181
  end
182
182
 
183
+ def generate_hmis_15_report(start_date=nil,end_date=nil)
184
+
185
+ diag_map = settings["hmis_15_map"]
186
+
187
+ #pull the data
188
+ type = EncounterType.find_by_name 'Outpatient diagnosis'
189
+ collection = {}
190
+
191
+ special_indicators = ["Malaria - new cases (under 5)",
192
+ "Malaria - new cases (5 & over)",
193
+ "HIV confirmed positive (15-49 years) new cases"
194
+ ]
195
+
196
+ diag_map.each do |key,value|
197
+ options = {"ids"=>nil}
198
+ concept_ids = ConceptName.where(name: value).collect{|cn| cn.concept_id}
199
+
200
+ if !special_indicators.include?(key)
201
+ data = Encounter.where('encounter_datetime BETWEEN ? AND ?
202
+ AND encounter_type = ? AND value_coded IN (?)
203
+ AND concept_id IN(6543, 6542)',
204
+ start_date.to_date.strftime('%Y-%m-%d 00:00:00'),
205
+ end_date.to_date.strftime('%Y-%m-%d 23:59:59'),type.id,concept_ids).\
206
+ joins('INNER JOIN obs ON obs.encounter_id = encounter.encounter_id
207
+ INNER JOIN person p ON p.person_id = encounter.patient_id').\
208
+ select('encounter.encounter_type, obs.value_coded, p.*')
209
+
210
+ # #under_five
211
+ # under_five = data.select{|record| calculate_age(record["birthdate"]) < 5}.\
212
+ # collect{|record| record.person_id}
213
+ # options["<5yrs"] = under_five
214
+ # #above 5 years
215
+ # over_five = data.select{|record| calculate_age(record["birthdate"]) >=5 }.\
216
+ # collect{|record| record.person_id}
217
+
218
+ # options[">=5yrs"] = over_five
219
+
220
+ all = data.collect{|record| record.person_id}
221
+
222
+
223
+ options["ids"] = all
224
+
225
+ collection[key] = options
226
+ else
227
+ if key.eql?("Malaria - new cases (under 5)")
228
+ data = Encounter.where('encounter_datetime BETWEEN ? AND ?
229
+ AND encounter_type = ? AND value_coded IN (?)
230
+ AND concept_id IN(6543, 6542)',
231
+ start_date.to_date.strftime('%Y-%m-%d 00:00:00'),
232
+ end_date.to_date.strftime('%Y-%m-%d 23:59:59'),type.id,concept_ids).\
233
+ joins('INNER JOIN obs ON obs.encounter_id = encounter.encounter_id
234
+ INNER JOIN person p ON p.person_id = encounter.patient_id').\
235
+ select('encounter.encounter_type, obs.value_coded, p.*')
236
+
237
+ under_five = data.select{|record| calculate_age(record["birthdate"]) < 5 }.\
238
+ collect{|record| record["person_id"]}
239
+
240
+ options["ids"] = under_five
241
+
242
+ collection[key] = options
243
+
244
+ end
245
+
246
+ if key.eql?("Malaria - new cases (5 & over)")
247
+ data = Encounter.where('encounter_datetime BETWEEN ? AND ?
248
+ AND encounter_type = ? AND value_coded IN (?)
249
+ AND concept_id IN(6543, 6542)',
250
+ start_date.to_date.strftime('%Y-%m-%d 00:00:00'),
251
+ end_date.to_date.strftime('%Y-%m-%d 23:59:59'),type.id,concept_ids).\
252
+ joins('INNER JOIN obs ON obs.encounter_id = encounter.encounter_id
253
+ INNER JOIN person p ON p.person_id = encounter.patient_id').\
254
+ select('encounter.encounter_type, obs.value_coded, p.*')
255
+
256
+ over_and_five = data.select{|record| calculate_age(record["birthdate"]) >= 5 }.\
257
+ collect{|record| record["person_id"]}
258
+
259
+ options["ids"] = over_and_five
260
+
261
+ collection[key] = options
262
+ end
263
+
264
+ if key.eql?("HIV confirmed positive (15-49 years) new cases")
265
+ data = ActiveRecord::Base.connection.select_all(
266
+ "SELECT * FROM temp_earliest_start_date
267
+ WHERE date_enrolled BETWEEN '#{start_date}' AND '#{end_date}'
268
+ AND date_enrolled = earliest_start_date
269
+ GROUP BY patient_id" ).to_hash
270
+
271
+ over_and_15_49 = data.select{|record| calculate_age(record["birthdate"]) >= 15 && calculate_age(record["birthdate"]) <=49 }.\
272
+ collect{|record| record["patient_id"]}
273
+
274
+ options["ids"] = over_and_15_49
275
+
276
+ collection[key] = options
277
+ end
278
+ end
279
+ end
280
+ collection
281
+ end
282
+
183
283
  # helper menthod
184
284
  def months_generator
185
285
  months = Hash.new
data/config/routes.rb CHANGED
@@ -5,4 +5,5 @@ EmrOhspInterface::Engine.routes.draw do
5
5
  get '/get_months', to: 'emr_ohsp_interface#months_generator'
6
6
  get '/generate_weekly_idsr_report', to: 'emr_ohsp_interface#generate_weekly_idsr_report'
7
7
  get '/generate_monthly_idsr_report', to: 'emr_ohsp_interface#generate_monthly_idsr_report'
8
+ get '/generate_hmis_15_report', to: 'emr_ohsp_interface#generate_hmis_15_report'
8
9
  end
@@ -1,3 +1,3 @@
1
1
  module EmrOhspInterface
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emr_ohsp_interface
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Manda and Petros Kayange
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-02 00:00:00.000000000 Z
11
+ date: 2022-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails