healthcare_phony 0.4.1 → 0.7.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: 7ca0b2d6dc3884c2d04d140ac59a78f88abf316ce203c042ae3eeba4b39423bf
4
- data.tar.gz: c5b7e20a1bf7d070847e1aab071c21536b13cfba5ba8f3536eb84406add20cb5
3
+ metadata.gz: 0bf69a0e95725d4b59987822d2ee0245635900728ce68eb50211ec7bd146a3fc
4
+ data.tar.gz: 783ce3a984372d26e1348d4c5fb5db6506b1db8111316be33e1d39736aa60137
5
5
  SHA512:
6
- metadata.gz: c161e48cef5b3f4365aa13693d56ef55ea02c74c7744d5f71caa64f58e84ff6ff4faea6cea409a48d7b879ec71e47aa410a19871eb4017147daf12f34f775df4
7
- data.tar.gz: 51420c695bc3bf1db62dc8bcbd3ffb0264d1371bbe50d3dea95159f632ecec4b51a861b380ec1eb332a619af576a72a12b2d3291ea259a75548c8fc26359d356
6
+ metadata.gz: 721a6a91d809ab0af3d810c8ce2eaba33cbcd398dd38433251027ca629db3ba93f8d7efa782f355b25595f9bdd736c7166219e8bde973a82b43b2d2509e5d312
7
+ data.tar.gz: 4344b7d926102eb4e97f1489897635cd65891a7acbb302c9556ce11fc8337c3cee745bdd9633d43514dad5d9814c40060fbffe517203be85245427a90a98f000
data/README.md CHANGED
@@ -147,6 +147,7 @@ The creation of the Patient can be customized by sending the following parameter
147
147
  * race_count → By default on Race is generated, this allows you to specify a number > 1.
148
148
  * gender → A Gender object which will be used to generate a Male or Female name if specified.
149
149
  * degree_data_file → Location of YAML file containing a list of potential degrees to choose from. By default the gem supplied file will be used. The default file [degree.yml](https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/degree.yml).
150
+ * visit_type → VisitType of this patient's visit
150
151
 
151
152
  ### Patient Visit
152
153
 
@@ -309,6 +310,48 @@ The creation of the Hl7Message object can be customized by sending the following
309
310
  * message_receiving_application - Array of Receiving Applications (MSH.5) to randomly choose from. Specified as comma separated String or Ruby Array.
310
311
  * message_receiving_facility - Array of Receiving Facilities (MSH.6) to randomly choose from. Specified as comma separated String or Ruby Array.
311
312
 
313
+ ## Examples
314
+
315
+ See the examples directory.
316
+
317
+ So far there phony_adt_sender.rb. This script will generate a specified number of fake ADT messages and send them to the specified host and port using TCP/IP mllp.
318
+
319
+ Command line argument description:
320
+
321
+ ```text
322
+ Usage: phony_adt_sender.rb [options]
323
+
324
+ -n, --number NUMBER Number of messages to send
325
+ -h, --host HOST IP or DNS for listening host
326
+ -p, --port PORT Listening port
327
+ -c, --config CONFIGFILE Path to configuration file (YAML) for message parameters
328
+ --mllp-start HEX Hex character(s) to denote start of message bytes. In form nn (example 0b for vertical tab) or nnnn (example 1c0d for file separator & carriage return)
329
+ --mllp-end HEX Hex character(s) to denote start of message bytes. In form nn (example 0b for vertical tab) or nnnn (example 1c0d for file separator & carriage return)
330
+ --help Show this message
331
+ ```
332
+
333
+ An example config file is also in the examples directory.
334
+
335
+ So to send 100 messages to 192.168.1.50:3022 using a config file phony_adt_sender.yml with non-standard mllp beginning/ending.
336
+
337
+ ```text
338
+ ruby phony_adt_sender.rb -h 192.168.1.50 --number 100 --port 3022 --config phony_adt_sender.yml --mllp-start 05 --mllp-end 0304
339
+ ```
340
+
341
+ Also in the examples directory are two files that can be used to generate a CSV.
342
+
343
+ * phony_csv.yml → a configuration file that can be used to set parametesr for generation patients. Then two items specific to creating the CSV
344
+ * number_of_rows → The # of rows to write
345
+ * template_file → Path to a ERB template for the CSV. If not specified the default in the library is used.
346
+ * bigger_csv_example.erb → Just another CSV template example.
347
+
348
+ Using these files in IRB (or in a script) you could do:
349
+
350
+ ```ruby
351
+ csv_parameters = Psych.load_file('./examples/phony_csv.yml')
352
+ csv = HealthcarePhony::CsvFile.new(csv_parameters)
353
+ csv.to_file("d:/temp/testnewtemplate.csv")
354
+ ```
312
355
  ## Contributing
313
356
 
314
357
  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.4.1
1
+ 0.7.0
@@ -0,0 +1,4 @@
1
+ <% if write_header %>
2
+ Patient_Identifier,First_Name,Middle_Name,Last_Name,Address_1,City,State,Zip,Home_Phone,Work_Phone,Cell_Phone,DOB,Gender,SSN
3
+ <% end %>
4
+ "<%= patient.medical_record_number.identifier %>","<%= patient.names[0].given_name %>","<%= patient.names[0].middle_name %>","<%= patient.names[0].family_name %>","<%= patient.addresses[0].address_line1 %>","<%= patient.addresses[0].city %>","<%= patient.addresses[0].state %>","<%= patient.addresses[0].postal_code %>","(<%= patient.home_phone.area_code %>)<%= patient.home_phone.exchange_code %>-<%= patient.home_phone.subscriber_number %>","(<%= patient.work_phone.area_code %>)<%= patient.work_phone.exchange_code %>-<%= patient.work_phone.subscriber_number %>","(<%= patient.cell_phone.area_code %>)<%= patient.cell_phone.exchange_code %>-<%= patient.cell_phone.subscriber_number %>","<%= patient.date_of_birth.to_s %>","<%= patient.gender.code %>","<%= patient.ssn %>"
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'socket'
4
+ require 'healthcare_phony'
5
+ require 'optparse'
6
+ require 'psych'
7
+
8
+ class PhonyAdtSender
9
+ attr_reader :host, :port, :number_messages, :message_parameters, :mllp_start, :mllp_end
10
+
11
+ def initialize
12
+ @message_parameters = {}
13
+ parse
14
+ end
15
+
16
+ def send
17
+ puts "Sending #{@number_messages} messages to #{@host}:#{@port}"
18
+
19
+ @number_messages.to_i.times do
20
+ t = TCPSocket.new(@host, @port)
21
+
22
+ m = HealthcarePhony::Adt.new(@message_parameters)
23
+ # #{@mllp_start}
24
+ t.send "#{[@mllp_start].pack("H*")}#{m.to_s}#{[@mllp_end].pack("H*")}", 0
25
+
26
+ pp "Message With ID #{m.hl7_message.message_control_id} sent..."
27
+
28
+ reading_response = true
29
+ ack_response = ''
30
+ while reading_response
31
+ current_read = t.read(1)
32
+ ack_response += current_read unless current_read.nil?
33
+ reading_response = false if current_read.nil?
34
+ end
35
+
36
+ pp "ACK: #{ack_response}"
37
+
38
+ t.close
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def parse
45
+ options = {}
46
+ optparse = OptionParser.new do |parser|
47
+ parser.banner = 'Usage: phony_adt_sender.rb [options]'
48
+ parser.separator ''
49
+
50
+ parser.on('-n', '--number NUMBER', Integer, 'Number of messages to send') do |number_messages|
51
+ options[:number_messages] = number_messages
52
+ end
53
+
54
+ parser.on('-h', '--host HOST', String, 'IP or DNS for listening host') do |host|
55
+ options[:host] = host
56
+ end
57
+
58
+ parser.on('-p', '--port PORT', Integer, 'Listening port') do |port|
59
+ options[:port] = port
60
+ end
61
+
62
+ parser.on('-c', '--config CONFIGFILE', String, 'Path to configuration file (YAML) for message parameters') do |config|
63
+ options[:config] = config
64
+ end
65
+
66
+ parser.on('--mllp-start HEX',
67
+ 'Hex character(s) to denote start of message bytes. In form nn (example 0b for vertical tab) or nnnn (example 1c0d for file separator & carriage return)') do |mllp_start|
68
+ options[:mllp_start] = mllp_start
69
+ end
70
+
71
+ parser.on('--mllp-end HEX', String,
72
+ 'Hex character(s) to denote start of message bytes. In form nn (example 0b for vertical tab) or nnnn (example 1c0d for file separator & carriage return)') do |mllp_end|
73
+ options[:mllp_end] = mllp_end
74
+ end
75
+
76
+ parser.on('--help', 'Show this message') do
77
+ puts parser
78
+ exit
79
+ end
80
+ end
81
+
82
+ begin
83
+ optparse.parse!
84
+ mandatory = %i[host port number_messages]
85
+ missing = mandatory.select { |param| options[param].nil? }
86
+ raise OptionParser::MissingArgument, missing.join(', ') unless missing.empty?
87
+ rescue OptionParser::InvalidOption, OptionParser::MissingArgument
88
+ puts $!.to_s
89
+ puts optparse
90
+ exit
91
+ end
92
+
93
+ @host = options[:host]
94
+ @port = options[:port]
95
+ @number_messages = options[:number_messages]
96
+ @message_parameters = Psych.load_file(options[:config]) unless options[:config].nil?
97
+ @mllp_start = if options[:mllp_start].nil?
98
+ '0b'
99
+ else
100
+ options[:mllp_start]
101
+ end
102
+ @mllp_end = if options[:mllp_end].nil?
103
+ '1c0d'
104
+ else
105
+ options[:mllp_end]
106
+ end
107
+ end
108
+ end
109
+
110
+ pas = PhonyAdtSender.new
111
+ pas.send
@@ -0,0 +1,12 @@
1
+ ---
2
+ :message_sending_facility: HOSP1,HOSP2,HOSP3
3
+ :message_sending_application: RUBY
4
+ :message_receiving_application: MIRTH
5
+ :message_receiving_facility: NCSAS
6
+ :message_version: '2.5.1'
7
+ :patient_class: I,O,E
8
+ :adt_events: A01,A03,A04,A08
9
+ :message_control_id_pattern: HEALTHCARE_PHONY_\d{15}
10
+ :message_processing_id: P
11
+ :given_name_append: ZZFAKE
12
+ :family_name_append: ZZPHONY
@@ -0,0 +1,5 @@
1
+ ---
2
+ :given_name_append: ZZFAKE
3
+ :family_name_append: ZZPHONY
4
+ :number_of_rows: 1000
5
+ :template_file: "D:/Users/amoody/RubymineProjects/healthcare_phony/examples/bigger_csv_example.erb"
@@ -11,41 +11,57 @@ Faker::Config.locale = 'en-US'
11
11
 
12
12
  module HealthcarePhony
13
13
  class Adt
14
- attr_reader :template, :adt_arguments
14
+ attr_reader :template, :adt_arguments, :hl7_message, :patient, :visit
15
15
 
16
- def initialize(**init_args)
16
+ def initialize(init_args = {})
17
17
  @adt_arguments = init_args
18
18
  @adt_arguments[:message_types] = 'ADT'
19
- unless adt_arguments[:template].nil?
20
- @template = adt_arguments[:template]
19
+ set_template
20
+ @hl7_message = Hl7Message.new(@adt_arguments)
21
+ @patient = Patient.new(@adt_arguments)
22
+ @visit = PatientVisit.new(@adt_arguments.merge({ visit_type: set_visit_type }))
23
+ end
24
+
25
+ def to_s
26
+ erb_template = ERB.new(@template)
27
+ erb_template.result_with_hash({ patient: @patient, hl7: @hl7_message, visit: @visit })
28
+ end
29
+
30
+ private
31
+
32
+ def set_template
33
+ unless @adt_arguments[:template].nil?
34
+ @template = @adt_arguments[:template]
21
35
  return
22
36
  end
23
- @template = if adt_arguments[:template_file].nil?
37
+ @template = if @adt_arguments[:template_file].nil?
24
38
  File.read(File.join(File.dirname(__FILE__), 'healthcare_phony', 'templates', 'adt_example.erb'))
25
39
  else
26
- File.read(adt_arguments[:template_file])
40
+ File.read(@adt_arguments[:template_file])
27
41
  end
28
42
  end
29
43
 
30
- def to_s
31
- template = ERB.new(@template)
32
- message = Hl7Message.new(@adt_arguments)
33
- patient = Patient.new(@adt_arguments)
34
- visit = PatientVisit.new(@adt_arguments)
35
- template.result_with_hash({ patient: patient, hl7: message, visit: visit })
44
+ def set_visit_type
45
+ case @hl7_message.trigger_event
46
+ when 'A01'
47
+ HealthcarePhony::VisitType::ADMIT
48
+ when 'A03'
49
+ HealthcarePhony::VisitType::DISCHARGE
50
+ when 'A04'
51
+ HealthcarePhony::VisitType::REGISTRATION
52
+ else
53
+ HealthcarePhony::VisitType::OTHER
54
+ end
36
55
  end
37
56
  end
38
57
 
39
58
  class CsvFile
40
- attr_reader :template_file, :number_of_rows
41
-
42
- def initialize(number_of_rows, template_file = nil)
43
- @template_file = if template_file.nil?
44
- File.join(File.dirname(__FILE__), 'healthcare_phony', 'templates', 'csv_example.erb')
45
- else
46
- template_file
47
- end
48
- @number_of_rows = number_of_rows
59
+ attr_reader :template_file, :number_of_rows, :csv_arguments
60
+
61
+ def initialize(init_args = {}) #(number_of_rows, template_file = nil)
62
+ @csv_arguments = init_args
63
+ @number_of_rows = @csv_arguments[:number_of_rows] #@csv_arguments[:number_of_rows].nil? ? 1 : @csv_arguments[:number_of_rows]
64
+ set_template
49
65
  end
50
66
 
51
67
  def to_s
@@ -53,11 +69,39 @@ module HealthcarePhony
53
69
  counter = 0
54
70
  output_string = ''
55
71
  while counter < @number_of_rows
56
- output_string += "#{template.result_with_hash({ patient: Patient.new, write_header: counter.zero? })}\n"
72
+ output_string += "#{template.result_with_hash({ patient: Patient.new(@csv_arguments), write_header: counter.zero? })}\n"
57
73
  counter += 1
58
74
  end
59
75
  output_string
60
76
  end
77
+
78
+ def to_file(file_name)
79
+ template = ERB.new(File.read(@template_file), trim_mode: '<>')
80
+ counter = 0
81
+ output_file = File.open(file_name, 'w')
82
+ while counter < @number_of_rows
83
+ output_file.write("#{template.result_with_hash({ patient: Patient.new(@csv_arguments), write_header: counter.zero? })}\n")
84
+ counter += 1
85
+ end
86
+ output_file.close
87
+
88
+ return output_file
89
+
90
+ end
91
+
92
+ private
93
+
94
+ def set_template
95
+ unless @csv_arguments[:template].nil?
96
+ @template_file = @csv_arguments[:template]
97
+ return
98
+ end
99
+ @template_file = if @csv_arguments[:template_file].nil?
100
+ File.join(File.dirname(__FILE__), 'healthcare_phony', 'templates', 'csv_example.erb') #File.read(File.join(File.dirname(__FILE__), 'healthcare_phony', 'templates', 'csv_example.erb'))
101
+ else
102
+ @csv_arguments[:template_file]
103
+ end
104
+ end
61
105
  end
62
106
  end
63
107
 
@@ -13,7 +13,7 @@ module HealthcarePhony
13
13
  # address_type_data_file - YAML file containing address types to randomly choose from if different options than
14
14
  # those that come with gem are desired.
15
15
  # See {address_type.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/address_type.yml]
16
- def initialize(**init_args)
16
+ def initialize(init_args = {})
17
17
  @set_blank = !init_args[:blank].nil? && Helper.random_with_blank('X', init_args[:blank]) == ''
18
18
  @state = init_args[:state]
19
19
  @country = init_args[:country]
@@ -9,7 +9,7 @@ module HealthcarePhony
9
9
  # blank - An integer representing the % of times phone number components should be blank.
10
10
  # use_code - Allows specification of the phone use code (PID.13.2)
11
11
  # equipment_type - Allows specification of the phone equipment type (PID.13.3)
12
- def initialize(**init_args)
12
+ def initialize(init_args = {})
13
13
  super(init_args)
14
14
  @use_code = init_args[:use_code].nil? ? 'ORN' : init_args[:use_code]
15
15
  @use_code = '' unless @set_blank == false
@@ -11,7 +11,7 @@ module HealthcarePhony
11
11
  # Public: Initialize a Doctor. Pass in hash of different parameters, currently this includes:
12
12
  #
13
13
  # identifier - Allows you to specify an identifier for this Doctor instead of having it randomly generated.
14
- def initialize(**init_args)
14
+ def initialize(init_args = {})
15
15
  @identifier = if !init_args[:identifier].nil?
16
16
  init_args[:identifier]
17
17
  else
@@ -19,7 +19,8 @@ module HealthcarePhony
19
19
  (pre_check_npi.to_s + Helper.get_npi_check_digit(pre_check_npi).to_s).to_i
20
20
  end
21
21
 
22
- @name = PersonName.new(degree: 'MD,DO')
22
+ init_args[:degree] = 'MD,DO'
23
+ @name = PersonName.new(init_args)
23
24
  end
24
25
  end
25
26
  end
@@ -7,7 +7,7 @@ module HealthcarePhony
7
7
  :use_code,
8
8
  :equipment_type
9
9
 
10
- def initialize(**init_args)
10
+ def initialize(init_args = {})
11
11
  @set_blank = !init_args[:blank].nil? && Helper.random_with_blank('X', init_args[:blank]) == ''
12
12
  @email_address = Faker::Internet.email
13
13
  @email_address = '' unless @set_blank == false
@@ -12,7 +12,7 @@ module HealthcarePhony
12
12
  # ethnic_group_data_file - YAML file containing ethnic group information to randomly choose from if different options than
13
13
  # those that come with gem are desired. See {ethnic_group.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/ethnic_group.yml]
14
14
  # for default values.
15
- def initialize(**init_args)
15
+ def initialize(init_args = {})
16
16
  @set_blank = !init_args[:blank].nil? && Helper.random_with_blank('X', init_args[:blank]) == ''
17
17
  data_file = if !init_args[:ethnic_group_data_file].nil?
18
18
  init_args[:ethnic_group_data_file]
@@ -8,7 +8,7 @@ module HealthcarePhony
8
8
 
9
9
  # Public: Initializes a Gender. Pass in hash of different parameters, currently this includes:
10
10
  # blank - An integer representing the % of times Address components should be blank.
11
- def initialize(**init_args)
11
+ def initialize(init_args = {})
12
12
  @description = %w[Female Male Unknown].sample
13
13
 
14
14
  @description = if !init_args[:blank].nil?
@@ -42,7 +42,7 @@ module HealthcarePhony
42
42
  # separated String or Ruby Array.
43
43
  # message_receiving_facility - Array of Receiving Facilities (MSH.6) to randomly choose from. Specified as comma separated
44
44
  # String or Ruby Array.
45
- def initialize(**init_args)
45
+ def initialize(init_args)
46
46
  define_message_type(init_args)
47
47
  define_trigger_event(init_args)
48
48
  define_control_id(init_args)
@@ -60,7 +60,7 @@ module HealthcarePhony
60
60
 
61
61
  private
62
62
 
63
- def define_message_type(**init_args)
63
+ def define_message_type(init_args = {})
64
64
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/hl7_message_types.yml"
65
65
  file_name = init_args[:message_type_file] unless init_args[:message_type_file].nil?
66
66
  hl7_message_types = if !init_args[:message_types].nil?
@@ -71,7 +71,7 @@ module HealthcarePhony
71
71
  @message_type = hl7_message_types.nil? ? '' : hl7_message_types.sample
72
72
  end
73
73
 
74
- def define_trigger_event(**init_args)
74
+ def define_trigger_event(init_args = {})
75
75
  @trigger_event = Helper.get_array(init_args[:message_events]).sample
76
76
  return unless @trigger_event.nil?
77
77
 
@@ -85,22 +85,22 @@ module HealthcarePhony
85
85
  end
86
86
  end
87
87
 
88
- def define_adt_trigger_event(**init_args)
88
+ def define_adt_trigger_event(init_args = {})
89
89
  event_types = get_adt_events(init_args)
90
90
  event_types&.sample
91
91
  end
92
92
 
93
- def define_oru_trigger_event(**init_args)
93
+ def define_oru_trigger_event(init_args = {})
94
94
  event_types = get_oru_events(init_args)
95
95
  event_types&.sample
96
96
  end
97
97
 
98
- def define_mdm_trigger_event(**init_args)
98
+ def define_mdm_trigger_event(init_args = {})
99
99
  event_types = get_mdm_events(init_args)
100
100
  event_types&.sample
101
101
  end
102
102
 
103
- def get_adt_events(**init_args)
103
+ def get_adt_events(init_args = {})
104
104
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/adt_event_types.yml"
105
105
  if init_args[:adt_events].nil?
106
106
  Psych.load_file(file_name)
@@ -109,7 +109,7 @@ module HealthcarePhony
109
109
  end
110
110
  end
111
111
 
112
- def get_oru_events(**init_args)
112
+ def get_oru_events(init_args = {})
113
113
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/oru_event_types.yml"
114
114
  if init_args[:oru_events].nil?
115
115
  Psych.load_file(file_name)
@@ -118,7 +118,7 @@ module HealthcarePhony
118
118
  end
119
119
  end
120
120
 
121
- def get_mdm_events(**init_args)
121
+ def get_mdm_events(init_args = {})
122
122
  file_name = "#{::File.expand_path(::File.join("..", "data_files"), __FILE__)}/mdm_event_types.yml"
123
123
  if init_args[:mdm_events].nil?
124
124
  Psych.load_file(file_name)
@@ -127,7 +127,7 @@ module HealthcarePhony
127
127
  end
128
128
  end
129
129
 
130
- def define_control_id(**init_args)
130
+ def define_control_id(init_args = {})
131
131
  control_id_pattern = if init_args[:message_control_id_pattern].nil?
132
132
  'PHONY\d{10}'
133
133
  else
@@ -136,22 +136,22 @@ module HealthcarePhony
136
136
  @message_control_id = Regexp.new(control_id_pattern).random_example
137
137
  end
138
138
 
139
- def define_sending_facility(**init_args)
139
+ def define_sending_facility(init_args = {})
140
140
  sf_choices = Helper.get_array(init_args[:message_sending_facility])
141
141
  @sending_facility = !sf_choices.empty? ? sf_choices.sample : ''
142
142
  end
143
143
 
144
- def define_sending_application(**init_args)
144
+ def define_sending_application(init_args = {})
145
145
  sa_choices = Helper.get_array(init_args[:message_sending_application])
146
146
  @sending_application = !sa_choices.empty? ? sa_choices.sample : ''
147
147
  end
148
148
 
149
- def define_receiving_application(**init_args)
149
+ def define_receiving_application(init_args = {})
150
150
  ra_choices = Helper.get_array(init_args[:message_receiving_application])
151
151
  @receiving_application = !ra_choices.empty? ? ra_choices.sample : ''
152
152
  end
153
153
 
154
- def define_receiving_facility(**init_args)
154
+ def define_receiving_facility(init_args = {})
155
155
  rf_choices = Helper.get_array(init_args[:message_receiving_facility])
156
156
  @receiving_facility = !rf_choices.empty? ? rf_choices.sample : ''
157
157
  end
@@ -9,7 +9,7 @@ module HealthcarePhony
9
9
  # blank - An integer representing the % of times phone number components should be blank.
10
10
  # use_code - Allows specification of the phone use code (PID.13.2)
11
11
  # equipment_type - Allows specification of the phone equipment type (PID.13.3)
12
- def initialize(**init_args)
12
+ def initialize(init_args = {})
13
13
  super(init_args)
14
14
  @use_code = init_args[:use_code].nil? ? 'PRN' : init_args[:use_code]
15
15
  @use_code = '' unless @set_blank == false
@@ -12,7 +12,7 @@ module HealthcarePhony
12
12
  # type_code - Identifier Type Code, example PID.3.5. HL7 Data Table 0203
13
13
  # pattern - Regex pattern used to randomly generate the identifier. Default is \d{10} which would generate an
14
14
  # identifier like 5992657933.
15
- def initialize(**init_args)
15
+ def initialize(init_args = {})
16
16
  @identifier_type_code = init_args[:type_code].nil? ? '' : init_args[:type_code]
17
17
 
18
18
  identifier_pattern = init_args[:pattern].nil? ? '\d{10}' : init_args[:pattern]
@@ -10,7 +10,7 @@ module HealthcarePhony
10
10
  # Public: Initializes an Address. Pass in hash of different parameters, currently this includes:
11
11
  # language_data_file - Location of YAML file containing Language data (Code, Description, and Coding System) if a
12
12
  # different set of random values is desired. Otherwise the default file {language.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/language.yml] will be used.
13
- def initialize(**init_args)
13
+ def initialize(init_args = {})
14
14
  # TODO: allow a way for caller to pass in a custom set of codes to choose from.
15
15
  # TODO: allow a way for caller to pass in % blank
16
16
 
@@ -25,7 +25,7 @@ module HealthcarePhony
25
25
  :death_indicator,
26
26
  :death_datetime
27
27
 
28
- def initialize(**init_args)
28
+ def initialize(init_args = {})
29
29
  define_gender(init_args)
30
30
  define_names(init_args)
31
31
  define_addresses(init_args)
@@ -40,7 +40,7 @@ module HealthcarePhony
40
40
 
41
41
  private
42
42
 
43
- def define_gender(**init_args)
43
+ def define_gender(init_args = {})
44
44
  @gender = if !init_args[:gender].nil? && init_args[:gender].is_a?(HealthcarePhony::Gender)
45
45
  init_args[:gender]
46
46
  else
@@ -48,7 +48,7 @@ module HealthcarePhony
48
48
  end
49
49
  end
50
50
 
51
- def define_names(**init_args)
51
+ def define_names(init_args = {})
52
52
  init_args[:gender] = @gender
53
53
  names_count = init_args[:names_count].nil? || init_args[:names_count] < 1 ? 1 : init_args[:names_count]
54
54
  @names = []
@@ -58,7 +58,7 @@ module HealthcarePhony
58
58
  end
59
59
  end
60
60
 
61
- def define_addresses(**init_args)
61
+ def define_addresses(init_args = {})
62
62
  address_count = init_args[:address_count].nil? || init_args[:address_count] < 1 ? 1 : init_args[:address_count]
63
63
  @addresses = []
64
64
  while address_count.positive?
@@ -67,19 +67,19 @@ module HealthcarePhony
67
67
  end
68
68
  end
69
69
 
70
- def define_phones(**init_args)
70
+ def define_phones(init_args = {})
71
71
  @home_phone = HomePhoneNumber.new(init_args)
72
72
  @cell_phone = CellPhoneNumber.new(init_args)
73
73
  @work_phone = WorkPhoneNumber.new(init_args)
74
74
  end
75
75
 
76
- def define_dob(**init_args)
76
+ def define_dob(init_args = {})
77
77
  min_age = init_args[:min_age].nil? ? 1 : init_args[:min_age]
78
78
  max_age = init_args[:max_age].nil? ? 99 : init_args[:max_age]
79
79
  @date_of_birth = Faker::Date.birthday(min_age: min_age, max_age: max_age)
80
80
  end
81
81
 
82
- def define_race(**init_args)
82
+ def define_race(init_args = {})
83
83
  races_count = init_args[:race_count].nil? || init_args[:race_count] < 1 ? 1 : init_args[:race_count]
84
84
  @races = []
85
85
  while races_count.positive?
@@ -23,8 +23,9 @@ module HealthcarePhony
23
23
  # or Ruby array. Otherwise this field is left blank.
24
24
  # vip_indicator - Array of Patient Type codes (PV1.18) to randomly choose from. Specified as comma separated String
25
25
  # or Ruby array. Otherwise this field is left blank.
26
- def initialize(**init_args)
27
- @doctors = VisitDoctors.new
26
+ # visit_type - VisitType of the patient's visit
27
+ def initialize(init_args = {})
28
+ @doctors = VisitDoctors.new(init_args)
28
29
  @location = VisitLocation.new(init_args)
29
30
  @admission = VisitAdmission.new(init_args)
30
31
  @bed_status = define_bed_status(init_args)
@@ -40,7 +41,7 @@ module HealthcarePhony
40
41
 
41
42
  private
42
43
 
43
- def define_hospital_service(**init_args)
44
+ def define_hospital_service(init_args = {})
44
45
  standard_hospital_service = %w[CAR MED PUL SUR URO]
45
46
  hs_choices = Helper.get_array(init_args[:hospital_service])
46
47
  if !hs_choices.empty?
@@ -50,13 +51,13 @@ module HealthcarePhony
50
51
  end
51
52
  end
52
53
 
53
- def define_patient_class(**init_args)
54
+ def define_patient_class(init_args = {})
54
55
  standard_pc_choices = %w[B C E I N O P R U]
55
56
  pc_choices = Helper.get_array(init_args[:patient_class])
56
57
  !pc_choices.empty? ? pc_choices.sample : standard_pc_choices.sample
57
58
  end
58
59
 
59
- def define_ambulatory_status(**init_args)
60
+ def define_ambulatory_status(init_args = {})
60
61
  standard_ambulatory_status = %w[A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 B1 B2 B3 B4 B5 B6]
61
62
  as_choices = Helper.get_array(init_args[:ambulatory_status])
62
63
  if !as_choices.empty?
@@ -66,7 +67,7 @@ module HealthcarePhony
66
67
  end
67
68
  end
68
69
 
69
- def define_bed_status(**init_args)
70
+ def define_bed_status(init_args = {})
70
71
  bs_choices = Helper.get_array(init_args[:bed_status])
71
72
  if !bs_choices.empty?
72
73
  bs_choices.sample
@@ -75,7 +76,7 @@ module HealthcarePhony
75
76
  end
76
77
  end
77
78
 
78
- def define_patient_type(**init_args)
79
+ def define_patient_type(init_args = {})
79
80
  pt_choices = Helper.get_array(init_args[:patient_type])
80
81
  if !pt_choices.empty?
81
82
  pt_choices.sample
@@ -84,7 +85,7 @@ module HealthcarePhony
84
85
  end
85
86
  end
86
87
 
87
- def define_vip(**init_args)
88
+ def define_vip(init_args = {})
88
89
  vip_choices = Helper.get_array(init_args[:vip_indicator])
89
90
  if !vip_choices.empty?
90
91
  vip_choices.sample
@@ -15,12 +15,12 @@ module HealthcarePhony
15
15
  # gender - A Gender object which will be used to generate a Male or Female name if specified.
16
16
  # degree_data_file - Location of YAML file containing a list of potential degrees to choose from. By default the
17
17
  # gem supplied file will be used. The default file {degree.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/degree.yml].
18
- def initialize(**init_args)
18
+ def initialize(init_args = {})
19
19
  @set_blank = !init_args[:blank].nil? && Helper.random_with_blank('X', init_args[:blank]) == ''
20
20
  @gender = init_args[:gender]
21
21
  @degree_data_file = get_degree_data_file(init_args)
22
- @given_name = define_given_name
23
- @family_name = define_family_name
22
+ @given_name = (init_args[:given_name_append].nil? ? '' : init_args[:given_name_append]) + define_given_name
23
+ @family_name = (init_args[:family_name_append].nil? ? '' : init_args[:family_name_append]) + define_family_name
24
24
  @middle_name = define_middle_name
25
25
  @suffix = define_suffix
26
26
  @prefix = define_prefix
@@ -33,7 +33,7 @@ module HealthcarePhony
33
33
  attr_accessor :set_blank
34
34
  attr_accessor :degree_data_file
35
35
 
36
- def get_degree_data_file(**init_args)
36
+ def get_degree_data_file(init_args = {})
37
37
  if !init_args[:degree_data_file].nil?
38
38
  init_args[:degree_data_file]
39
39
  else
@@ -85,7 +85,7 @@ module HealthcarePhony
85
85
  end
86
86
  end
87
87
 
88
- def define_degree(**init_args)
88
+ def define_degree(init_args = {})
89
89
  if @set_blank
90
90
  ''
91
91
  elsif !init_args[:degree].nil?
@@ -11,7 +11,7 @@ module HealthcarePhony
11
11
  :use_code,
12
12
  :equipment_type
13
13
 
14
- def initialize(**init_args)
14
+ def initialize(init_args = {})
15
15
  # Public: Initializes a home phone number. Pass in hash of different parameters, currently this includes:
16
16
  # blank - An integer representing the % of times phone number components should be blank.
17
17
  # use_code_data_file - YAML file containing use codes to randomly choose from. If not specified then values from
@@ -6,10 +6,11 @@ module HealthcarePhony
6
6
  attr_accessor :code,
7
7
  :description,
8
8
  :coding_system
9
+
9
10
  # Public: Initializes an Address. Pass in hash of different parameters, currently this includes:
10
11
  # race_data_file - Location of YAML file containing a list of potential degrees to choose from. By default the
11
12
  # gem supplied file will be used. The default file {race.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/race.yml].
12
- def initialize(**init_args)
13
+ def initialize(init_args = {})
13
14
  # TODO: allow a way for caller to pass in % blank
14
15
  # TODO: set coding system
15
16
 
@@ -11,7 +11,7 @@ module HealthcarePhony
11
11
  # religion_data_file - YAML file containing religion information to randomly choose from if different options than
12
12
  # those that come with gem are desired. See {religion.yml}[https://github.com/austinmoody/healthcare_phony/blob/main/lib/healthcare_phony/data_files/religion.yml]
13
13
  # for default values.
14
- def initialize(**init_args)
14
+ def initialize(init_args = {})
15
15
  # TODO: allow a way for caller to pass in a custom set of codes to choose from
16
16
  # TODO: allow a way for caller to pass in % blank
17
17
 
@@ -1,6 +1,6 @@
1
1
  MSH|^~\&|<%= hl7.sending_application %>|<%= hl7.sending_facility %>|<%= hl7.receiving_application %>|<%= hl7.receiving_facility %>|<%= hl7.message_datetime.to_hl7datetime() %>||<%= hl7.message_type %>^<%= hl7.trigger_event %>|<%= hl7.message_control_id %>|<%= hl7.processing_id %>|<%= hl7.version %>
2
2
  EVN|<%= hl7.trigger_event %>|<%= hl7.message_datetime.to_hl7datetime() %>
3
- PID|||<%= patient.medical_record_number.identifier %>||<%= patient.names[0].family_name %>^<%= patient.names[0].given_name %>^<%= patient.names[0].middle_name%>^||<%= patient.date_of_birth.to_hl7date %>|<%= patient.gender.code %>||<%= patient.races[0].code %>|<%= patient.addresses[0].address_line1 %>^<%= patient.addresses[0].address_line2 %>^<%= patient.addresses[0].city %>^<%= patient.addresses[0].state %>^<%= patient.addresses[0].postal_code %>||(<%= patient.home_phone.area_code %>)<%= patient.home_phone.exchange_code %>-<%= patient.home_phone.subscriber_number %>~(<%= patient.cell_phone.area_code %>)<%= patient.cell_phone.exchange_code %>-<%= patient.cell_phone.subscriber_number %>|(<%= patient.work_phone.area_code %>)<%= patient.work_phone.exchange_code %>-<%= patient.work_phone.subscriber_number %>||||<%= patient.account_number.identifier %>|<%= patient.ssn %>
4
- PV1||<%= visit.patient_class %>
5
-
3
+ PID|||<%= patient.medical_record_number.identifier %>||<%= patient.names[0].family_name %>^<%= patient.names[0].given_name %>^<%= patient.names[0].middle_name%>^||<%= patient.date_of_birth.to_hl7date %>|<%= patient.gender.code %>||<%= patient.races[0].code %>|<%= patient.addresses[0].address_line1 %>^<%= patient.addresses[0].address_line2 %>^<%= patient.addresses[0].city %>^<%= patient.addresses[0].state %>^<%= patient.addresses[0].postal_code %>||(<%= patient.home_phone.area_code %>)<%= patient.home_phone.exchange_code %>-<%= patient.home_phone.subscriber_number %>~(<%= patient.cell_phone.area_code %>)<%= patient.cell_phone.exchange_code %>-<%= patient.cell_phone.subscriber_number %>|(<%= patient.work_phone.area_code %>)<%= patient.work_phone.exchange_code %>-<%= patient.work_phone.subscriber_number %>|<%= patient.language.code %>^<%= patient.language.description %>^<%= patient.language.coding_system %>|<%= patient.marital_status.code %>^<%= patient.marital_status.description %>^<%= patient.marital_status.coding_system %>|<%= patient.religion.code %>^<%= patient.religion.description %>^<%= patient.religion.coding_system %>|<%= patient.account_number.identifier %>|<%= patient.ssn %>
4
+ PV1||<%= visit.patient_class %>|<%= visit.location.point_of_care %>^<%= visit.location.room %>^<%= visit.location.bed %>^<%= visit.location.facility %>^<%= visit.location.status %>^<%= visit.location.type %>^<%= visit.location.building %>^<%= visit.location.floor %>^<%= visit.location.description %>|<%= visit.admission.type %>|||<%= visit.doctors.attending.identifier %>^<%= visit.doctors.attending.name.family_name %>^<%= visit.doctors.attending.name.given_name %>^<%= visit.doctors.attending.name.middle_name %>^<%= visit.doctors.attending.name.suffix %>^<%= visit.doctors.attending.name.prefix %>^<%= visit.doctors.attending.name.degree %>|<%= visit.doctors.referring.identifier %>^<%= visit.doctors.referring.name.family_name %>^<%= visit.doctors.referring.name.given_name %>^<%= visit.doctors.referring.name.middle_name %>^<%= visit.doctors.referring.name.suffix %>^<%= visit.doctors.referring.name.prefix %>^<%= visit.doctors.referring.name.degree %>|<%= visit.doctors.consulting.identifier %>^<%= visit.doctors.consulting.name.family_name %>^<%= visit.doctors.consulting.name.given_name %>^<%= visit.doctors.consulting.name.middle_name %>^<%= visit.doctors.consulting.name.suffix %>^<%= visit.doctors.consulting.name.prefix %>^<%= visit.doctors.consulting.name.degree %>|<%= visit.hospital_service %>|11|12|<%= visit.readmission_indicator %>|<%= visit.admission.source %>|15|16|<%= visit.doctors.admitting.identifier %>^<%= visit.doctors.admitting.name.family_name %>^<%= visit.doctors.admitting.name.given_name %>^<%= visit.doctors.admitting.name.middle_name %>^<%= visit.doctors.admitting.name.suffix %>^<%= visit.doctors.admitting.name.prefix %>^<%= visit.doctors.admitting.name.degree %>|<%= visit.patient_type %>|<%= visit.visit_number.identifier %>^^^^<%= visit.visit_number.identifier_type_code %>|||||||||||||||||<%= visit.discharge.disposition %>|<%= visit.discharge.location %>|38|39|40|41|42|43|<%= visit.admission.datetime.to_hl7datetime() %>|<%= visit.discharge.datetime.to_hl7datetime() %>
5
+ PV2|||^<%= visit.admission.reason %>
6
6
 
@@ -12,7 +12,7 @@ module HealthcarePhony
12
12
  # Ruby array. Otherwise default HL7 v2.5.1. Table 0007 values are used.
13
13
  # admit_reason - Array of values to use as Admit Reason (PV2.3) to randomly choose from. Specified as comma
14
14
  # separated String or Ruby array. Otherwise a string of data is generated with Faker::Lorem.sentence
15
- def initialize(**init_args)
15
+ def initialize(init_args = {})
16
16
  @source = define_source(init_args)
17
17
  @type = define_type(init_args)
18
18
  @datetime = Faker::Time.backward(days: Faker::Number.number(digits: 1))
@@ -21,7 +21,7 @@ module HealthcarePhony
21
21
 
22
22
  private
23
23
 
24
- def define_source(**init_args)
24
+ def define_source(init_args = {})
25
25
  standard_admit_source = '123456789'.split('')
26
26
  as_choices = Helper.get_array(init_args[:admit_source])
27
27
  if !as_choices.empty?
@@ -31,7 +31,7 @@ module HealthcarePhony
31
31
  end
32
32
  end
33
33
 
34
- def define_type(**init_args)
34
+ def define_type(init_args = {})
35
35
  standard_admission_types = %w[A C E L N R U]
36
36
  at_choices = Helper.get_array(init_args[:admission_type])
37
37
  if !at_choices.empty?
@@ -41,7 +41,7 @@ module HealthcarePhony
41
41
  end
42
42
  end
43
43
 
44
- def define_reason(**init_args)
44
+ def define_reason(init_args = {})
45
45
  ar_choices = Helper.get_array(init_args[:admit_reason])
46
46
  if !ar_choices.empty?
47
47
  ar_choices.sample
@@ -8,14 +8,14 @@ module HealthcarePhony
8
8
  :datetime
9
9
 
10
10
  # Public: Initializes an EthnicGroup. Pass in hash of different parameters, currently this includes:
11
- # event_type - The HL7 trigger event type that this visit is associated with.
11
+ # visit_type - VisitType of this patient's visit
12
12
  # discharge_disposition - Array of discharge disposition codes (PV1.36) to randomly choose from. Specified as comma
13
13
  # separated String or Ruby array. Otherwise default HL7 v2.5.1 Table 0112 values are used.
14
14
  # discharge_location - Array of discharge locations to randomly choose from. Specified as comma separated String or
15
15
  # Ruby array. Otherwise a string of data is generated with Faker::Lorem.sentence
16
16
  # admit_datetime - The admit date/time associated with this visit. If not specified the current date/time is used.
17
- def initialize(**init_args)
18
- if init_args[:event_type] == 'A03'
17
+ def initialize(init_args = {})
18
+ if init_args[:visit_type] == HealthcarePhony::VisitType::DISCHARGE # init_args[:event_type] == 'A03'
19
19
  @disposition = define_discharge_disposition(init_args)
20
20
  @location = define_discharge_location(init_args)
21
21
  @datetime = define_discharge_datetime(init_args)
@@ -28,9 +28,9 @@ module HealthcarePhony
28
28
 
29
29
  private
30
30
 
31
- def define_discharge_disposition(**init_args)
31
+ def define_discharge_disposition(init_args = {})
32
32
  dd_choices = Helper.get_array(init_args[:discharge_disposition])
33
- if init_args[:event_type] != 'A03'
33
+ if init_args[:visit_type] != HealthcarePhony::VisitType::DISCHARGE # init_args[:event_type] != 'A03'
34
34
  ''
35
35
  elsif !dd_choices.empty?
36
36
  dd_choices.sample
@@ -41,7 +41,7 @@ module HealthcarePhony
41
41
  end
42
42
  end
43
43
 
44
- def define_discharge_location(**init_args)
44
+ def define_discharge_location(init_args = {})
45
45
  dl_choices = Helper.get_array(init_args[:discharge_location])
46
46
  if !dl_choices.empty?
47
47
  dl_choices.sample
@@ -50,7 +50,7 @@ module HealthcarePhony
50
50
  end
51
51
  end
52
52
 
53
- def define_discharge_datetime(**init_args)
53
+ def define_discharge_datetime(init_args = {})
54
54
  from_datetime = if init_args[:admit_datetime].nil?
55
55
  Time.now
56
56
  else
@@ -9,11 +9,11 @@ module HealthcarePhony
9
9
  :consulting,
10
10
  :admitting
11
11
 
12
- def initialize
13
- @attending = Doctor.new
14
- @referring = Doctor.new
15
- @consulting = Doctor.new
16
- @admitting = Doctor.new
12
+ def initialize(init_args = {})
13
+ @attending = Doctor.new(init_args)
14
+ @referring = Doctor.new(init_args)
15
+ @consulting = Doctor.new(init_args)
16
+ @admitting = Doctor.new(init_args)
17
17
  end
18
18
  end
19
19
  end
@@ -32,7 +32,7 @@ module HealthcarePhony
32
32
  # String or Ruby array. Otherwise a random 2 digit number is used.
33
33
  # location_description - Array of potential location descriptions (PV1.3.9) to randomly choose from. Specified as
34
34
  # a comma separated String or Ruby array. Otherwise a random string is generated.
35
- def initialize(**init_args)
35
+ def initialize(init_args = {})
36
36
  @point_of_care = define_point_of_care(init_args)
37
37
  @room = define_room(init_args)
38
38
  @bed = define_bed(init_args)
@@ -46,12 +46,12 @@ module HealthcarePhony
46
46
 
47
47
  private
48
48
 
49
- def define_point_of_care(**init_args)
49
+ def define_point_of_care(init_args = {})
50
50
  poc_choices = Helper.get_array(init_args[:point_of_care])
51
51
  !poc_choices.empty? ? poc_choices.sample : /[A-Z]{10}/.random_example
52
52
  end
53
53
 
54
- def define_room(**init_args)
54
+ def define_room(init_args = {})
55
55
  room_choices = Helper.get_array(init_args[:room])
56
56
  if !room_choices.empty?
57
57
  room_choices.sample
@@ -60,7 +60,7 @@ module HealthcarePhony
60
60
  end
61
61
  end
62
62
 
63
- def define_bed(**init_args)
63
+ def define_bed(init_args = {})
64
64
  bed_choices = Helper.get_array(init_args[:bed])
65
65
  if !bed_choices.empty?
66
66
  bed_choices.sample
@@ -69,32 +69,32 @@ module HealthcarePhony
69
69
  end
70
70
  end
71
71
 
72
- def define_facility(**init_args)
72
+ def define_facility(init_args = {})
73
73
  fac_choices = Helper.get_array(init_args[:facility])
74
74
  !fac_choices.empty? ? fac_choices.sample : Faker::Lorem.sentence
75
75
  end
76
76
 
77
- def define_status(**init_args)
77
+ def define_status(init_args = {})
78
78
  ls_choices = Helper.get_array(init_args[:location_status])
79
79
  !ls_choices.empty? ? ls_choices.sample : /[A-Z]/.random_example
80
80
  end
81
81
 
82
- def define_type(**init_args)
82
+ def define_type(init_args = {})
83
83
  plt_choices = Helper.get_array(init_args[:person_location_type])
84
84
  !plt_choices.empty? ? plt_choices.sample : %w[C D H N O P S].sample
85
85
  end
86
86
 
87
- def define_building(**init_args)
87
+ def define_building(init_args = {})
88
88
  building_choices = Helper.get_array(init_args[:building])
89
89
  !building_choices.empty? ? building_choices.sample : /[1-9]/.random_example
90
90
  end
91
91
 
92
- def define_floor(**init_args)
92
+ def define_floor(init_args = {})
93
93
  floor_choices = Helper.get_array(init_args[:floor])
94
94
  !floor_choices.empty? ? floor_choices.sample : /[0-9]{2}/.random_example
95
95
  end
96
96
 
97
- def define_description(**init_args)
97
+ def define_description(init_args = {})
98
98
  ld_choices = Helper.get_array(init_args[:location_description])
99
99
  if !ld_choices.empty?
100
100
  ld_choices.sample
@@ -0,0 +1,9 @@
1
+ module HealthcarePhony
2
+ module VisitType
3
+ ADMIT = 1
4
+ REGISTRATION = 2
5
+ DISCHARGE = 3
6
+ TRANSFER = 4
7
+ OTHER = 5
8
+ end
9
+ end
@@ -9,7 +9,7 @@ module HealthcarePhony
9
9
  # blank - An integer representing the % of times phone number components should be blank.
10
10
  # use_code - Allows specification of the phone use code (PID.13.2)
11
11
  # equipment_type - Allows specification of the phone equipment type (PID.13.3)
12
- def initialize(**init_args)
12
+ def initialize(init_args = {})
13
13
  super(init_args)
14
14
  @use_code = init_args[:use_code].nil? ? 'WPN' : init_args[:use_code]
15
15
  @use_code = '' unless @set_blank == false
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.4.1
4
+ version: 0.7.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-22 00:00:00.000000000 Z
11
+ date: 2021-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -113,6 +113,10 @@ files:
113
113
  - README.md
114
114
  - Rakefile
115
115
  - VERSION
116
+ - examples/bigger_csv_example.erb
117
+ - examples/phony_adt_sender.rb
118
+ - examples/phony_adt_sender.yml
119
+ - examples/phony_csv.yml
116
120
  - healthcare_phony.gemspec
117
121
  - lib/healthcare_phony.rb
118
122
  - lib/healthcare_phony/address.rb
@@ -158,6 +162,7 @@ files:
158
162
  - lib/healthcare_phony/visit_discharge.rb
159
163
  - lib/healthcare_phony/visit_doctors.rb
160
164
  - lib/healthcare_phony/visit_location.rb
165
+ - lib/healthcare_phony/visit_type.rb
161
166
  - lib/healthcare_phony/work_phone_number.rb
162
167
  homepage: http://github.com/austinmoody/healthcare_phony
163
168
  licenses:
@@ -178,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
183
  - !ruby/object:Gem::Version
179
184
  version: 2.6.10
180
185
  requirements: []
181
- rubygems_version: 3.0.3
186
+ rubygems_version: 3.0.3.1
182
187
  signing_key:
183
188
  specification_version: 4
184
189
  summary: A utility to create fake data and files for healthcare integration testing