healthcare_phony 0.3.0 → 0.4.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: dd82a9bb551ceeeafe3a73126f9b09de624303e71abc98b26e1d5510fe226690
4
- data.tar.gz: ac7a04cb59c0aca105b391a1db38f4492d4b220588273b604b36156df3ff9102
3
+ metadata.gz: 1de41607d3c9609a86c5cfdefd9562d07c17b30e316d24ea238324c882627d85
4
+ data.tar.gz: 353036ecec7fb8c01bf417fcb39d22dfbaec87645d3e500bc00ea47111ad6e62
5
5
  SHA512:
6
- metadata.gz: 3ca23f7f3eb78eaa6a3c89ba444f7293a1879852ba9b44a64b56bf2d9b3386f27cdc1640513cac0603c0f9392c808667109a5d65bd75da4b91cd9b340af3a718
7
- data.tar.gz: 7a03f56fb3d5ff4a6c9942148fd94f16c57bbdfd2a7288ebd1a21250bcf28159df91feec6de7157fca81c1f44a0a83df2544fd200b9eff01ce24744712a780ed
6
+ metadata.gz: 0b6064c6bc6770d87cfec29a3ca6539131b80583a2108944ed74bc361a8576aa5d7d46dcf2858e1e62acd8a0bf931a18cef04d464468e623463dad1b60326649
7
+ data.tar.gz: 29d10f206bc1b7190a9f08fed733c998919b77c7ece24a282d6bb58a7ef21df1e1ebc287a45bce3305cd71597fd5f477e0865257a471427559a3d78b8f2a8d39
data/README.md CHANGED
@@ -272,6 +272,43 @@ The creation of the PatientVisit can be customized by sending the following para
272
272
  * discharge_location → Array of discharge locations to randomly choose from. Specified as comma separated String or Ruby array. Otherwise a string of data is generated with Faker::Lorem.sentence
273
273
  * admit_datetime → The admit date/time associated with this visit. If not specified the current date/time is used.
274
274
 
275
+ ### Hl7 Message
276
+
277
+ ```ruby
278
+ hl7 = HealthcarePhony::Hl7Message.new
279
+ ```
280
+
281
+ The above will give you a default Hl7Message object:
282
+
283
+ ```
284
+ #<HealthcarePhony::Hl7Message:0x00007f81979beb58
285
+ @message_type="MDM",
286
+ @trigger_event="T04",
287
+ @message_control_id="PHONY8408942134",
288
+ @version="2.5.1", @sending_facility="",
289
+ @sending_application="",
290
+ @receiving_application="",
291
+ @receiving_facility="",
292
+ @message_datetime=2021-01-16 20:29:10 -0500,
293
+ @processing_id="P">
294
+ ```
295
+
296
+ The creation of the Hl7Message object can be customized by sending the following parameters when initializing:
297
+
298
+ * message_version - HL7v2 version (MSH.12)
299
+ * message_processing_id - Typically P or T (MSH.11)
300
+ * message_types - Array of Message Types (MSH.9.1) to randomly choose from. Specified as comma separated String or Ruby array.
301
+ * message_type_file - Location of file containing Message Types (MSH.9.1). If not specified then included [hl7_message_types.yml](https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/hl7_message_types.yml) file will be used.
302
+ * message_events - Generic array of Trigger Events (MSH.9.2) to randomly choose from. Specified as command separated String or Ruby array.
303
+ * adt_events - Array of ADT Trigger Events (MSH.9.2) to randomly choose from. Used (if specified) if the Message type for the message is ADT. ADT events from [adt_event_types.yml](https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml) will be used by default.
304
+ * oru_events - Array of ORU Trigger Events (MSH.9.2) to randomly choose from. Used (if specified) if the Message type for the message is ORU. ORU events from [oru_event_types.yml](https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml) will be used by default.
305
+ * mdm_events - Array of MDM Trigger Events (MSH.9.2) to randomly choose from. Used (if specified) if the Message type for the message is MDM. MDM events from [mdm_event_types.yml](https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml) will be used by default.
306
+ * message_control_id_pattern - Regex pattern used to randomly generate MSH.10 values. Default is PHONY\d{10} which will generate a value like: PHONY6850295805
307
+ * message_sending_facility - Array of Sending Facilities (MSH.4) to randomly choose from. Specified as comma separated String or Ruby Array.
308
+ * message_sending_application - Array of Sending Applications (MSH.3) to randomly choose from. Specified as comma separated String or Ruby Array.
309
+ * message_receiving_application - Array of Receiving Applications (MSH.5) to randomly choose from. Specified as comma separated String or Ruby Array.
310
+ * message_receiving_facility - Array of Receiving Facilities (MSH.6) to randomly choose from. Specified as comma separated String or Ruby Array.
311
+
275
312
  ## Contributing
276
313
 
277
314
  Bug reports and pull requests are welcome on GitHub at https://github.com/austinmoody/healthcare_phony. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/healthcare_phony/blob/master/CODE_OF_CONDUCT.md).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -11,21 +11,23 @@ Faker::Config.locale = 'en-US'
11
11
 
12
12
  module HealthcarePhony
13
13
  class Adt
14
- attr_reader :template_file
14
+ attr_reader :template_file, :adt_arguments
15
15
 
16
- def initialize(template_file = nil)
17
- @template_file = if template_file.nil?
16
+ def initialize(**init_args)
17
+ @adt_arguments = init_args
18
+ @adt_arguments[:message_types] = 'ADT'
19
+ @template_file = if adt_arguments[:template_file].nil?
18
20
  File.join(File.dirname(__FILE__), 'healthcare_phony', 'templates', 'adt_example.erb')
19
21
  else
20
- template_file
22
+ adt_arguments[:template_file]
21
23
  end
22
24
  end
23
25
 
24
26
  def to_s
25
27
  template = ERB.new(File.read(@template_file))
26
- message = Hl7Message.new
27
- patient = Patient.new
28
- visit = PatientVisit.new
28
+ message = Hl7Message.new(@adt_arguments)
29
+ patient = Patient.new(@adt_arguments)
30
+ visit = PatientVisit.new(@adt_arguments)
29
31
  template.result_with_hash({ patient: patient, hl7: message, visit: visit })
30
32
  end
31
33
  end
@@ -15,35 +15,38 @@ module HealthcarePhony
15
15
  :processing_id
16
16
 
17
17
  # Public: Initializes an Address. Pass in hash of different parameters, currently this includes:
18
- # version - HL7v2 version (MSH.12)
19
- # processing_id - Typically P or T (MSH.11)
20
- # types - Array of Message Types (MSH.9.1) to randomly choose from. Specified as comma separated String or
18
+ # message_version - HL7v2 version (MSH.12)
19
+ # message_processing_id - Typically P or T (MSH.11)
20
+ # message_types - Array of Message Types (MSH.9.1) to randomly choose from. Specified as comma separated String or
21
21
  # Ruby array.
22
22
  # message_type_file - Location of file containing Message Types (MSH.9.1). If not specified then included
23
23
  # {hl7_message_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/hl7_message_types.yml] file will be used.
24
- # events - Array of Trigger Events (MSH.9.2) to randomly choose from. Specified as command separated String or
25
- # Ruby array.
26
- # adt_events_file - Location of file containing ADT Trigger Events (MSH.9.2). If not specified then included
27
- # {adt_event_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml] file will be used.
28
- # oru_events_file - Location of file containing ORU Trigger Events (MSH.9.2). If not specified then included
29
- # {oru_event_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml] file will be used.
30
- # mdm_events_file - Location of file containing MDM Trigger Events (MSH.9.2). If not specified then included
31
- # {mdm_event_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml] file will be used.
32
- # control_id_pattern - Regex pattern used to randomly generate MSH.10 values. Default is PHONY\d{10} which will
24
+ # message_events - Generic array of Trigger Events (MSH.9.2) to randomly choose from. Specified as command
25
+ # separated String or Ruby array.
26
+ # adt_events - Array of ADT Trigger Events (MSH.9.2) to randomly choose from. Used (if specified) if the Message
27
+ # type for the message is ADT. ADT events from {adt_event_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml]
28
+ # will be used by default.
29
+ # oru_events - Array of ORU Trigger Events (MSH.9.2) to randomly choose from. Used (if specified) if the Message
30
+ # type for the message is ORU. ORU events from {oru_event_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml]
31
+ # will be used by default.
32
+ # mdm_events - Array of MDM Trigger Events (MSH.9.2) to randomly choose from. Used (if speciifed) if the Message
33
+ # type for the message is MDM. MDM events from {mdm_event_types.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/adt_event_types.yml]
34
+ # will be used by default.
35
+ # message_control_id_pattern - Regex pattern used to randomly generate MSH.10 values. Default is PHONY\d{10} which will
33
36
  # generate a value like: PHONY6850295805
34
- # sending_facility - Array of Sending Facilities (MSH.4) to randomly choose from. Specified as comma separated
37
+ # message_sending_facility - Array of Sending Facilities (MSH.4) to randomly choose from. Specified as comma separated
35
38
  # String or Ruby Array.
36
- # sending_application - Array of Sending Applications (MSH.3) to randomly choose from. Specified as comma
39
+ # message_sending_application - Array of Sending Applications (MSH.3) to randomly choose from. Specified as comma
37
40
  # separated String or Ruby Array.
38
- # receiving_application - Array of Receiving Applications (MSH.5) to randomly choose from. Specified as comma
41
+ # message_receiving_application - Array of Receiving Applications (MSH.5) to randomly choose from. Specified as comma
39
42
  # separated String or Ruby Array.
40
- # receiving_facility - Array of Receiving Facilities (MSH.6) to randomly choose from. Specified as comma separated
43
+ # message_receiving_facility - Array of Receiving Facilities (MSH.6) to randomly choose from. Specified as comma separated
41
44
  # String or Ruby Array.
42
45
  def initialize(**init_args)
43
46
  define_message_type(init_args)
44
47
  define_trigger_event(init_args)
45
48
  define_control_id(init_args)
46
- @version = init_args[:version].nil? ? '2.5.1' : init_args[:version]
49
+ @version = init_args[:message_version].nil? ? '2.5.1' : init_args[:message_version]
47
50
  define_sending_facility(init_args)
48
51
  define_sending_application(init_args)
49
52
  define_receiving_application(init_args)
@@ -52,7 +55,7 @@ module HealthcarePhony
52
55
  # Potential use case to allow you to provide begin/end date?
53
56
  @message_datetime = Time.now
54
57
 
55
- @processing_id = init_args[:processing_id].nil? ? 'P' : init_args[:processing_id]
58
+ @processing_id = init_args[:message_processing_id].nil? ? 'P' : init_args[:message_processing_id]
56
59
  end
57
60
 
58
61
  private
@@ -60,8 +63,8 @@ module HealthcarePhony
60
63
  def define_message_type(**init_args)
61
64
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/hl7_message_types.yml"
62
65
  file_name = init_args[:message_type_file] unless init_args[:message_type_file].nil?
63
- hl7_message_types = if !init_args[:types].nil?
64
- Helper.get_array(init_args[:types])
66
+ hl7_message_types = if !init_args[:message_types].nil?
67
+ Helper.get_array(init_args[:message_types])
65
68
  else
66
69
  Psych.load_file(file_name)
67
70
  end
@@ -69,10 +72,17 @@ module HealthcarePhony
69
72
  end
70
73
 
71
74
  def define_trigger_event(**init_args)
72
- @trigger_event = Helper.get_array(init_args[:events]).sample
73
- @trigger_event = define_adt_trigger_event(init_args) unless @message_type != 'ADT'
74
- @trigger_event = define_oru_trigger_event(init_args) unless @message_type != 'ORU'
75
- @trigger_event = define_mdm_trigger_event(init_args) unless @message_type != 'MDM'
75
+ @trigger_event = Helper.get_array(init_args[:message_events]).sample
76
+ return unless @trigger_event.nil?
77
+
78
+ case @message_type
79
+ when 'ADT'
80
+ @trigger_event = define_adt_trigger_event(init_args)
81
+ when 'ORU'
82
+ @trigger_event = define_oru_trigger_event(init_args)
83
+ when 'MDM'
84
+ @trigger_event = define_mdm_trigger_event(init_args)
85
+ end
76
86
  end
77
87
 
78
88
  def define_adt_trigger_event(**init_args)
@@ -92,44 +102,57 @@ module HealthcarePhony
92
102
 
93
103
  def get_adt_events(**init_args)
94
104
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/adt_event_types.yml"
95
- file_name = init_args[:adt_events_file] unless init_args[:adt_events_file].nil?
96
- Psych.load_file(file_name)
105
+ if init_args[:adt_events].nil?
106
+ Psych.load_file(file_name)
107
+ else
108
+ Helper.get_array(init_args[:adt_events])
109
+ end
97
110
  end
98
111
 
99
112
  def get_oru_events(**init_args)
100
113
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/oru_event_types.yml"
101
- file_name = init_args[:oru_events_file] unless init_args[:oru_events_file].nil?
102
- Psych.load_file(file_name)
114
+ if init_args[:oru_events].nil?
115
+ Psych.load_file(file_name)
116
+ else
117
+ Helper.get_array(init_args[:oru_events])
118
+ end
103
119
  end
104
120
 
105
121
  def get_mdm_events(**init_args)
106
122
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/mdm_event_types.yml"
107
- file_name = init_args[:mdm_events_file] unless init_args[:mdm_events_file].nil?
108
- Psych.load_file(file_name)
123
+ if init_args[:mdm_events].nil?
124
+ Psych.load_file(file_name)
125
+ else
126
+ Helper.get_array(init_args[:mdm_events])
127
+ end
109
128
  end
110
129
 
111
130
  def define_control_id(**init_args)
112
- control_id_pattern = init_args[:control_id_pattern].nil? ? 'PHONY\d{10}' : init_args[:control_id_pattern]
131
+ control_id_pattern = if init_args[:message_control_id_pattern].nil?
132
+ 'PHONY\d{10}'
133
+ else
134
+ init_args[:message_control_id_pattern]
135
+ end
113
136
  @message_control_id = Regexp.new(control_id_pattern).random_example
114
137
  end
115
138
 
116
139
  def define_sending_facility(**init_args)
117
- sf_choices = Helper.get_array(init_args[:sending_facility])
140
+ sf_choices = Helper.get_array(init_args[:message_sending_facility])
118
141
  @sending_facility = !sf_choices.empty? ? sf_choices.sample : ''
119
142
  end
120
143
 
121
144
  def define_sending_application(**init_args)
122
- sa_choices = Helper.get_array(init_args[:sending_application])
145
+ sa_choices = Helper.get_array(init_args[:message_sending_application])
123
146
  @sending_application = !sa_choices.empty? ? sa_choices.sample : ''
124
147
  end
125
148
 
126
149
  def define_receiving_application(**init_args)
127
- ra_choices = Helper.get_array(init_args[:receiving_application])
150
+ ra_choices = Helper.get_array(init_args[:message_receiving_application])
128
151
  @receiving_application = !ra_choices.empty? ? ra_choices.sample : ''
129
152
  end
130
153
 
131
154
  def define_receiving_facility(**init_args)
132
- rf_choices = Helper.get_array(init_args[:receiving_facility])
155
+ rf_choices = Helper.get_array(init_args[:message_receiving_facility])
133
156
  @receiving_facility = !rf_choices.empty? ? rf_choices.sample : ''
134
157
  end
135
158
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: healthcare_phony
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Moody
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-15 00:00:00.000000000 Z
11
+ date: 2021-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler