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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cc821a0690dfaa750fb0dd36f1409a8a20054486318166f708bd8a266ff5c7a
4
- data.tar.gz: 424486397d7ae838ee6af769155deef6a8b5bff76309291470a295c10eb58389
3
+ metadata.gz: 693ce96464262bed3bdbba9a9d38cc91aaaba9620c270e49994b4c0537c21b4d
4
+ data.tar.gz: 74711ef35d3caf83aa5b210ad0665b152275224fbc571349b686432d0fed0e10
5
5
  SHA512:
6
- metadata.gz: 172c72400334ad1e9ca73b37fd7c77c7227386336e44e5d751c69d1bf40e021664ac0ceeeb835361924d6ddaff6cc0898420e07f5088fe72925821fdfa35bf11
7
- data.tar.gz: 1ee834f1abd93c7cb9dc19453a7afd111a39f5745ad12d3d6345bae406805c9fb837fa3aacb80ecc03e9fe81c1cfe6d36d36b6790be2ed657aa0596e147f624d
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
@@ -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
- def initialize(base_url:, timeout: 30, max_retries: 3, retry_delay: 1, logger: nil)
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.info("ICE service response: #{response_body}")
252
+ logger.debug("ICE service response: #{response_body}") if log_payloads
249
253
 
250
254
  result = JSON.parse(response_body)
251
255
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HlnIce
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
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.1.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: 2026-06-22 00:00:00.000000000 Z
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: 3.5.3
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: []