emr_ohsp_interface 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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