emr_ohsp_interface 1.1.0 → 1.2.0

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: 649cb3e2144f053db93789503c1cd14bb48263a93c31d9fa92eb3edb30a54e42
4
- data.tar.gz: 8f80cd97e51363c047610f2ac3661ca2cc967d81d1a475c157d9a402d3f009aa
3
+ metadata.gz: 73b9145df1d352e5e6df1cbf8983b7a28a15a3a91cc86ee06341141fb0c0dfee
4
+ data.tar.gz: 60069ab8d7ef564129e656e25bd41ba598639cdf07b4f90a317823e8ec9042ba
5
5
  SHA512:
6
- metadata.gz: 7a965d0f5e3d1bbbf830bdba32faad6426ca5a34970b908808b7165e8fa5a1851688e54f1a16b6c38ee545a3e59440c74c5d074642009f648258a600e264977f
7
- data.tar.gz: 483de992deb8ab577a65821ebb60b8f6aaeaeb209d5d570eccf27aa996eb13c2dd7f59a948b847bbaa1d1ced9c6c9dc5398edd6c7e1a136fd9ea3cec24726bec
6
+ metadata.gz: 84c0c258dd74dc53322b73b85b88fdef01232cf3fc76f6e989e25e0d141fc7a16a62386465a73471992222d2a7f2f37ce30c34198fb69f4535d9b8159b8b4369
7
+ data.tar.gz: 7497b891e1aaa5715457509ed5606baa8af6df7b948a94c51ec855f4d9f0485f10999709b2c9162043ed477e562110565d3f546bb04872f070f3e9adb9004aa7
@@ -11,6 +11,10 @@ module EmrOhspInterface
11
11
  config = JSON.parse(file)
12
12
  end
13
13
 
14
+ def server_config
15
+ config =YAML.load_file("#{Rails.root}/config/application.yml")
16
+ end
17
+
14
18
  def get_ohsp_facility_id
15
19
  file = File.open(Rails.root.join("db","idsr_metadata","emr_ohsp_facility_map.csv"))
16
20
  data = CSV.parse(file,headers: true)
@@ -129,11 +133,11 @@ module EmrOhspInterface
129
133
 
130
134
  #under_five
131
135
  under_five = data.select{|record| calculate_age(record["birthdate"]) < 5}.\
132
- collect{|record| record.person_id}
136
+ collect{|record| record.person_id}.uniq
133
137
  options["<5yrs"] = under_five
134
138
  #above 5 years
135
139
  over_five = data.select{|record| calculate_age(record["birthdate"]) >=5 }.\
136
- collect{|record| record.person_id}
140
+ collect{|record| record.person_id}.uniq
137
141
 
138
142
  options[">=5yrs"] = over_five
139
143
 
@@ -450,7 +454,8 @@ module EmrOhspInterface
450
454
  "Referals from other institutions",
451
455
  "OPD total attendance",
452
456
  "Referal to other institutions",
453
- "Malaria 5 years and older - new"
457
+ "Malaria 5 years and older - new",
458
+ "HIV/AIDS - new"
454
459
  ]
455
460
 
456
461
  special_under_five_indicators = [
@@ -504,27 +509,18 @@ module EmrOhspInterface
504
509
  end
505
510
 
506
511
  if key.eql?("OPD total attendance")
507
- _type = EncounterType.find_by_name 'PATIENT REGISTRATION'
508
- visit_type = ConceptName.find_by_name 'Type of visit'
509
-
510
- data = Encounter.where('encounter_datetime BETWEEN ? AND ?
511
- AND encounter_type = ? AND value_coded IS NOT NULL
512
- AND obs.concept_id = ?', start_date.to_date.strftime('%Y-%m-%d 00:00:00'),
513
- end_date.to_date.strftime('%Y-%m-%d 23:59:59'),_type.id, visit_type.concept_id).\
514
- joins('INNER JOIN obs ON obs.encounter_id = encounter.encounter_id
515
- INNER JOIN person p ON p.person_id = encounter.patient_id
516
- INNER JOIN concept_name c ON c.concept_id = obs.value_coded
517
- LEFT JOIN person_name n ON n.person_id = encounter.patient_id AND n.voided = 0
518
- RIGHT JOIN person_address a ON a.person_id = encounter.patient_id').\
519
- select('encounter.encounter_type, n.family_name, n.given_name,
520
- obs.value_coded, obs.obs_datetime, p.*, c.name visit_type,
521
- a.state_province district, a.township_division ta, a.city_village village').\
522
- order('n.date_created DESC').group('n.person_id, encounter.encounter_id')
523
-
524
- all = data.collect{|record| record.person_id}
525
-
526
- options["ids"] = all
527
-
512
+ programID = Program.find_by_name 'OPD Program'
513
+ data = Encounter.find_by_sql(
514
+ "SELECT patient_id, DATE_FORMAT(encounter_datetime,'%Y-%m-%d') enc_date
515
+ FROM encounter e
516
+ LEFT OUTER JOIN person p ON p.person_id = e.patient_id
517
+ WHERE e.voided = 0 AND encounter_datetime BETWEEN '" + start_date.to_date.strftime('%Y-%m-%d 00:00:00') +"'
518
+ AND '" + end_date.to_date.strftime('%Y-%m-%d 23:59:59') + "'
519
+ AND program_id ='" + programID.program_id.to_s + "'
520
+ GROUP BY enc_date"
521
+ ).map{|e| e. patient_id}
522
+
523
+ options["ids"] = data
528
524
  collection[key] = options
529
525
  end
530
526
 
@@ -534,11 +530,19 @@ module EmrOhspInterface
534
530
  end_date.to_date.strftime('%Y-%m-%d 23:59:59'),'7414').\
535
531
  joins('LEFT JOIN location l ON l.location_id = obs.value_text').\
536
532
  select('obs.person_id').order('obs_datetime DESC')
537
-
538
533
  all = data.collect{|record| record.person_id}
534
+ options["ids"] = all
535
+ collection[key] = options
536
+ end
539
537
 
538
+ if key.eql?("HIV/AIDS - new")
539
+ data = ActiveRecord::Base.connection.select_all(
540
+ "SELECT * FROM temp_earliest_start_date
541
+ WHERE date_enrolled BETWEEN '#{start_date}' AND '#{end_date}'
542
+ AND date_enrolled = earliest_start_date
543
+ GROUP BY patient_id" ).to_hash
544
+ all = data.collect{|record| record["patient_id"]}
540
545
  options["ids"] = all
541
-
542
546
  collection[key] = options
543
547
  end
544
548
 
@@ -632,7 +636,7 @@ module EmrOhspInterface
632
636
  def weeks_generator
633
637
 
634
638
  weeks = Hash.new
635
- first_day = ((Date.today.year.to_s)+"-01-01").to_date
639
+ first_day = (Date.today - (11).month).at_beginning_of_month
636
640
  wk_of_first_day = first_day.cweek
637
641
 
638
642
  if wk_of_first_day > 1
@@ -671,7 +675,7 @@ module EmrOhspInterface
671
675
  def send_data(data,type)
672
676
  # method used to post data to the server
673
677
  #prepare payload here
674
- conn = settings["headers"]
678
+ conn = server_config['ohsp']
675
679
  payload = {
676
680
  "dataSet" =>get_data_set_id(type),
677
681
  "period"=>(type.eql?("weekly") ? weeks_generator.last[0] : months_generator.first[0]),
@@ -733,18 +737,18 @@ module EmrOhspInterface
733
737
  headers:{'Content-Type'=> 'application/json'},
734
738
  payload: payload.to_json,
735
739
  #headers: {accept: :json},
736
- user: conn["user"],
737
- password: conn["pass"])
740
+ user: conn["username"],
741
+ password: conn["password"])
738
742
 
739
743
  puts send
740
744
  end
741
745
 
742
746
  def send_data_to_sms_portal(data, concept_name_collection)
743
- conn2 = settings["sms_server"]
747
+ conn2 = server_config['idsr_sms']
744
748
  data = data.select {|k,v| v.select {|kk,vv| vv.length > 0}.length > 0}
745
749
  payload = {
746
- "email"=> conn2["user"],
747
- "password" => conn2["pass"],
750
+ "email"=> conn2["username"],
751
+ "password" => conn2["password"],
748
752
  "emr_facility_id" => Location.current_health_center.id,
749
753
  "emr_facility_name" => Location.current_health_center.name,
750
754
  "payload" => data,
@@ -1,3 +1,3 @@
1
1
  module EmrOhspInterface
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
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: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Manda, Petros Kayange, and Dominic Kasanga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-01 00:00:00.000000000 Z
11
+ date: 2023-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -72,6 +72,26 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sqlite3
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.3.6
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '1.3'
85
+ type: :development
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.3.6
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.3'
75
95
  description:
76
96
  email:
77
97
  - justinmandah@gmail.com, kayangepetros@gmail.com, dominickasanga@gmail.com
@@ -120,7 +140,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
140
  - !ruby/object:Gem::Version
121
141
  version: '0'
122
142
  requirements: []
123
- rubygems_version: 3.0.9
143
+ rubyforge_project:
144
+ rubygems_version: 2.7.6
124
145
  signing_key:
125
146
  specification_version: 4
126
147
  summary: This in a gem that facilitates interfacing of EMR, One Health Surveillance