hln_ice 0.1.0 → 0.2.0
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/CHANGELOG.md +5 -0
- data/README.md +1 -0
- data/hln_ice.gemspec +42 -0
- data/lib/hln_ice/client.rb +9 -5
- data/lib/hln_ice/version.rb +1 -1
- metadata +4 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 693ce96464262bed3bdbba9a9d38cc91aaaba9620c270e49994b4c0537c21b4d
|
|
4
|
+
data.tar.gz: 74711ef35d3caf83aa5b210ad0665b152275224fbc571349b686432d0fed0e10
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6f47f5f31184385ebf20e319a415720094a792fe2e91b3e35218771e7ff15f80ecac1956771eab2bbd773c820ae2e54b5df6dc774f1bffc97786ad7814419918
|
|
7
|
+
data.tar.gz: ac317607ab177277cba5c32c458d3f5ddb583a6e84f0e98ab70d774128986db2c393d1a2d783f50386d93ae74ad0800967443024f20a93cd5f6e0a9eedaa9405
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [0.2.0] - 2026-07-02
|
|
4
|
+
|
|
5
|
+
- Stop logging PHI by default. The ICE input data, generated request XML, and raw service response are no longer logged unless the new `log_payloads:` option is set to `true`. Warnings and errors are still logged.
|
|
6
|
+
- The service response is now logged at `debug` (was `info`), matching the input data and generated XML, so all payload logging behaves uniformly and stays out of `info`-level logs.
|
|
7
|
+
|
|
3
8
|
## [0.1.0] - 2026-06-22
|
|
4
9
|
|
|
5
10
|
- Initial release
|
data/README.md
CHANGED
|
@@ -49,6 +49,7 @@ All options:
|
|
|
49
49
|
| `max_retries:`| `3` | Number of retries on a failed evaluation request. |
|
|
50
50
|
| `retry_delay:`| `1` | Seconds to wait between retries. |
|
|
51
51
|
| `logger:` | `Logger.new($stdout)` | Any `Logger`-compatible object. In Rails, pass `Rails.logger`. |
|
|
52
|
+
| `log_payloads:`| `false` | When `true`, logs the ICE input data, generated request XML, and raw service response. These contain patient PHI, so keep this off outside local debugging. |
|
|
52
53
|
|
|
53
54
|
```ruby
|
|
54
55
|
# In a Rails app, reuse the application logger:
|
data/hln_ice.gemspec
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/hln_ice/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "hln_ice"
|
|
7
|
+
spec.version = HlnIce::VERSION
|
|
8
|
+
spec.authors = ["Sam Sohn"]
|
|
9
|
+
spec.email = ["sam@primary.health"]
|
|
10
|
+
|
|
11
|
+
spec.summary = "Ruby client for the HLN ICE (Immunization Calculation Engine) OpenCDS service."
|
|
12
|
+
spec.description = "Evaluates a patient's immunization history against the HLN ICE forecasting " \
|
|
13
|
+
"rules and returns both the raw recommendations and a simplified status mapping."
|
|
14
|
+
spec.homepage = "https://github.com/PrimaryDotHealth/hln_ice"
|
|
15
|
+
spec.license = "MIT"
|
|
16
|
+
spec.required_ruby_version = ">= 3.1.0"
|
|
17
|
+
|
|
18
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
19
|
+
|
|
20
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
21
|
+
spec.metadata["source_code_uri"] = spec.homepage
|
|
22
|
+
spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
|
|
23
|
+
|
|
24
|
+
# Specify which files should be added to the gem when it is released.
|
|
25
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
26
|
+
spec.files = Dir.chdir(__dir__) do
|
|
27
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
28
|
+
(File.expand_path(f) == __FILE__) ||
|
|
29
|
+
f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
spec.bindir = "exe"
|
|
33
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
34
|
+
spec.require_paths = ["lib"]
|
|
35
|
+
|
|
36
|
+
spec.add_dependency "base64", "~> 0.2"
|
|
37
|
+
spec.add_dependency "httparty", "~> 0.21"
|
|
38
|
+
spec.add_dependency "nokogiri", "~> 1.15"
|
|
39
|
+
|
|
40
|
+
# For more information and examples about making a new gem, check out our
|
|
41
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
|
42
|
+
end
|
data/lib/hln_ice/client.rb
CHANGED
|
@@ -37,14 +37,18 @@ module HlnIce
|
|
|
37
37
|
"Varicella Vaccine Group" => :var,
|
|
38
38
|
}.freeze
|
|
39
39
|
|
|
40
|
-
attr_reader :base_url, :timeout, :max_retries, :retry_delay, :logger
|
|
40
|
+
attr_reader :base_url, :timeout, :max_retries, :retry_delay, :logger, :log_payloads
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
# log_payloads: when false (default), the ICE input data, generated request
|
|
43
|
+
# XML, and raw service response are NOT logged. These contain patient PHI, so
|
|
44
|
+
# logging stays off unless a caller explicitly opts in (e.g. local debugging).
|
|
45
|
+
def initialize(base_url:, timeout: 30, max_retries: 3, retry_delay: 1, logger: nil, log_payloads: false)
|
|
43
46
|
@base_url = base_url
|
|
44
47
|
@timeout = timeout
|
|
45
48
|
@max_retries = max_retries
|
|
46
49
|
@retry_delay = retry_delay
|
|
47
50
|
@logger = logger || Logger.new($stdout)
|
|
51
|
+
@log_payloads = log_payloads
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
# Check if the ICE service is available
|
|
@@ -127,7 +131,7 @@ module HlnIce
|
|
|
127
131
|
gender = "U" if blank?(gender) # Set default to 'U' if blank
|
|
128
132
|
|
|
129
133
|
# Log input data for debugging
|
|
130
|
-
logger.debug("ICE Input Data: #{JSON.pretty_generate(patient_data)}")
|
|
134
|
+
logger.debug("ICE Input Data: #{JSON.pretty_generate(patient_data)}") if log_payloads
|
|
131
135
|
|
|
132
136
|
# Build the VMR XML
|
|
133
137
|
xml_payload = <<~XML
|
|
@@ -196,7 +200,7 @@ module HlnIce
|
|
|
196
200
|
XML
|
|
197
201
|
|
|
198
202
|
# Log the generated XML for debugging
|
|
199
|
-
logger.debug("Generated ICE XML: #{xml_payload}")
|
|
203
|
+
logger.debug("Generated ICE XML: #{xml_payload}") if log_payloads
|
|
200
204
|
|
|
201
205
|
# Base64 encode the XML
|
|
202
206
|
base64_encoded_payload = Base64.strict_encode64(xml_payload)
|
|
@@ -245,7 +249,7 @@ module HlnIce
|
|
|
245
249
|
end
|
|
246
250
|
|
|
247
251
|
def parse_ice_response(response_body)
|
|
248
|
-
logger.
|
|
252
|
+
logger.debug("ICE service response: #{response_body}") if log_payloads
|
|
249
253
|
|
|
250
254
|
result = JSON.parse(response_body)
|
|
251
255
|
|
data/lib/hln_ice/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hln_ice
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sam Sohn
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: base64
|
|
@@ -66,6 +65,7 @@ files:
|
|
|
66
65
|
- LICENSE.txt
|
|
67
66
|
- README.md
|
|
68
67
|
- Rakefile
|
|
68
|
+
- hln_ice.gemspec
|
|
69
69
|
- lib/hln_ice.rb
|
|
70
70
|
- lib/hln_ice/client.rb
|
|
71
71
|
- lib/hln_ice/version.rb
|
|
@@ -78,7 +78,6 @@ metadata:
|
|
|
78
78
|
homepage_uri: https://github.com/PrimaryDotHealth/hln_ice
|
|
79
79
|
source_code_uri: https://github.com/PrimaryDotHealth/hln_ice
|
|
80
80
|
changelog_uri: https://github.com/PrimaryDotHealth/hln_ice/blob/main/CHANGELOG.md
|
|
81
|
-
post_install_message:
|
|
82
81
|
rdoc_options: []
|
|
83
82
|
require_paths:
|
|
84
83
|
- lib
|
|
@@ -93,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
93
92
|
- !ruby/object:Gem::Version
|
|
94
93
|
version: '0'
|
|
95
94
|
requirements: []
|
|
96
|
-
rubygems_version:
|
|
97
|
-
signing_key:
|
|
95
|
+
rubygems_version: 4.0.15
|
|
98
96
|
specification_version: 4
|
|
99
97
|
summary: Ruby client for the HLN ICE (Immunization Calculation Engine) OpenCDS service.
|
|
100
98
|
test_files: []
|