ruby-hl7-extensions 0.0.60 → 0.0.61

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
  SHA1:
3
- metadata.gz: b91e92c7db8ae5a0a365bf7ed7a99d808dc856e9
4
- data.tar.gz: b2ed8813fbcb261897b15d73eafb58c7c75c8178
3
+ metadata.gz: 6868604371538033e5c53e7f454f5fc0f65bae0c
4
+ data.tar.gz: 3405385d0116bdd5fbd233c6bc75bf5b2b9a9dc6
5
5
  SHA512:
6
- metadata.gz: 2b88bd45f6708fcd25b0133ed93163485ba68b8b9591822c83ced77ed2d2f3f68a5487e8b270c4c4dd86755cf2535f2b3899cbb759bf93c707913c804ccb6507
7
- data.tar.gz: 77d07bf000dede8518feea10223cc8689ef99efcdefc6e1fc9ce5baf768e8483e20e5fe6f3de6c91aed5aeeec20a09fc73018b9335530a29b859a7dae1a0fbe5
6
+ metadata.gz: 21003e41e5fd9dcf12c45fdcabeac27f0fde210dd359390ea35570eff08a0469de64d3dbd9a645fcfb0ae43337534f9d01ef679ee4fba515f292e22a7d729a91
7
+ data.tar.gz: 4dcc2c371c49a37ace53587bd3cc0942b78eab10dfe7e7eca2831c32c6e188a21dac222365bf210546df8020c63149655c2e8df8e94bce584bb028403831c10b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.60
1
+ 0.0.61
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 60
4
+ :patch: 61
@@ -9,6 +9,10 @@ module Extensions
9
9
  end
10
10
 
11
11
  module InstanceMethods
12
+ def segments_for(key)
13
+ self.select {|segment| segment.segment_name == key.to_s}
14
+ end
15
+
12
16
  def providers
13
17
  providers = []
14
18
 
@@ -18,7 +22,6 @@ module Extensions
18
22
  providers << {hash: orc.ordering_provider_hash, segment: orc}
19
23
  end
20
24
  end
21
-
22
25
 
23
26
  if self[:OBR]
24
27
  obrs = self[:OBR].is_a?(Array) ? self[:OBR] : [self[:OBR]]
@@ -46,57 +49,62 @@ module Extensions
46
49
  providers
47
50
  end
48
51
 
52
+ def msh
53
+ @msh ||= segments_for(:MSH).first
54
+ end
55
+
49
56
  def message_type
50
- msh = hash["message"]["content"]["MSH"]
51
- @msh ||= ::HL7::Message::Segment.from_hash("MSH", msh)
52
- @msh.to_hash["messageType"]["messageCode"]
57
+ msh.value_for_field("8.1")
53
58
  end
54
59
 
55
60
  def event
56
- msh = hash["message"]["content"]["MSH"]
57
- @msh ||= ::HL7::Message::Segment.from_hash("MSH", msh)
58
- @msh.to_hash["messageType"]["triggerEvent"]
61
+ msh.value_for_field("8.2")
59
62
  end
60
63
 
61
64
  def sending_application
62
- hash[:message][:content]["MSH"]["sendingApplication"] rescue nil
65
+ msh.value_for_field("3.1")
66
+ end
67
+
68
+ def pid
69
+ @pid ||= segments_for(:PID).first
63
70
  end
64
71
 
65
72
  def patient_full_name
66
- name = hash["message"]["content"]["PID"]["patientName"]
67
- "#{name["lastName"]}, #{name["firstName"]}#{name["middleInitOrName"].blank? ? "" : " #{name["middleInitOrName"]}"}"
73
+ last_name = pid.value_for_field("5.1")
74
+ first_name = pid.value_for_field("5.2")
75
+ middle_initial_or_name = pid.value_for_field("5.3")
76
+
77
+ "#{last_name}, #{first_name}#{middle_initial_or_name.blank? ? "" : " #{middle_initial_or_name}"}"
68
78
  end
69
79
 
70
80
  def patient_dob
71
- Date.parse(hash["message"]["content"]["PID"]["patientDob"]).strftime("%B %d, %Y")
81
+ Date.parse(pid.patient_dob).strftime("%B %d, %Y") if pid.patient_dob
72
82
  end
73
83
 
74
84
  def patient_mrn
75
- pid = hash["message"]["content"]["PID"]
76
- @pid ||= ::HL7::Message::Segment.from_hash("PID", pid)
77
- @pid.mrn
85
+ pid.value_for_field("3.1")
78
86
  end
79
87
 
80
88
  def patient_gender
81
- hash["message"]["content"]["PID"]["sex"]
89
+ pid.value_for_field("8")
82
90
  end
83
91
 
84
- def obr_list
85
- a = hash["message"]["content"]["OBR"]["array"].collect {|obr| ::HL7::Message::Segment.from_hash("OBR", obr)}
86
- a.to_enum(:each)
92
+ def pv1
93
+ @pv1 ||= segments_for(:PV1).first
87
94
  end
88
-
89
- def patient
90
- patient = hash["message"]["content"]["PID"]
91
- ::HL7::Message::Segment.from_hash("PID", patient)
95
+
96
+ def account_number
97
+ pv1.value_for_field("19.1")
92
98
  end
93
99
 
94
- def patient_visit
95
- patient_visit = hash["message"]["content"]["PV1"]
96
- ::HL7::Message::Segment.from_hash("PV1", patient_visit)
100
+ def obr_list
101
+ # segments_for(:OBR).to_enum(:each)
102
+ a = hash["message"]["content"]["OBR"]["array"].collect {|obr| ::HL7::Message::Segment.from_hash("OBR", obr)}
103
+ a.to_enum(:each)
97
104
  end
98
105
 
99
106
  def orc_list
107
+ # segments_for(:OBR).to_enum(:each)
100
108
  a = hash["message"]["content"]["ORC"]["array"].collect {|orc| ::HL7::Message::Segment.from_hash("ORC", orc)}
101
109
  a.to_enum(:each)
102
110
  end
@@ -105,10 +113,6 @@ module Extensions
105
113
  to_hash
106
114
  end
107
115
 
108
- def segments_for(key)
109
- self.select {|segment| segment.segment_name == key}
110
- end
111
-
112
116
  def to_hash
113
117
  begin
114
118
  return @hash unless @hash.blank?
@@ -17,6 +17,14 @@ module Extensions
17
17
  def segment_name
18
18
  self.class.to_s.split("::").last
19
19
  end
20
+
21
+ def format_date(attr)
22
+ Date.parse(self.send(attr)).strftime("%B %d, %Y")
23
+ end
24
+
25
+ def format_datetime(attr)
26
+ Date.parse(self.send(attr)).strftime("%m/%d/%Y %l:%M")
27
+ end
20
28
 
21
29
  def to_hash
22
30
  @hash ||= {}
@@ -33,6 +41,14 @@ module Extensions
33
41
  self.send(key)
34
42
  end
35
43
 
44
+ def provider_hash(provider_type, provider_code)
45
+ if to_hash["#{provider_type}Provider"]
46
+ to_hash["#{provider_type}Provider"].merge("providerType" => provider_code)
47
+ else
48
+ {}
49
+ end
50
+ end
51
+
36
52
  def value_for_field(key)
37
53
  index = key.split(".").first.to_i
38
54
  index, subindex = key.split(".").collect {|i|i.to_i}
@@ -41,7 +57,12 @@ module Extensions
41
57
  if subindex.blank?
42
58
  return self.send(field[0].to_s)
43
59
  else
44
- return self.send(field[0].to_s).split(self.item_delim)[subindex-1]
60
+ field_val = self.send(field[0].to_s)
61
+ if field_val
62
+ return field_val.split(self.item_delim)[subindex-1]
63
+ else
64
+ return nil
65
+ end
45
66
  end
46
67
  end
47
68
  end
@@ -65,6 +86,15 @@ module Extensions
65
86
  end
66
87
  instance
67
88
  end
89
+
90
+ def mappings
91
+ field_mappings = self.fields.inject([]) {|arr, k| pp k; arr << {field_name: k[0].to_s.gsub("_", " ").titleize, type: "String", field_code: k[1][:idx]}; arr}
92
+
93
+ {
94
+ metadata: {segment_code: self.to_s.downcase, display_name: ""},
95
+ fields: field_mappings
96
+ }
97
+ end
68
98
  end
69
99
 
70
100
  end
@@ -74,3 +104,10 @@ end
74
104
  class HL7::Message::Segment
75
105
  include Extensions::HL7::Segment
76
106
  end
107
+
108
+
109
+ # HL7::Message::Segment::PV1.fields.inject([]) {|arr, k| pp k; arr << {field_name: k[0].to_s.gsub("_", " ").titleize, type: String, field_code: k[1][:idx]}; arr}
110
+ # pp field
111
+ # end
112
+ #
113
+ # ::HL7::Types.enumeration.inject([]) {|arr, k| arr << {code: k[1][0], label: k[1][1]}; arr}}
@@ -5,7 +5,6 @@ module Extensions
5
5
 
6
6
  def self.included base
7
7
  base.send :include, InstanceMethods
8
- base.send :include, Values::MSH
9
8
  base.extend ClassMethods
10
9
  end
11
10
 
@@ -13,6 +12,8 @@ module Extensions
13
12
  def to_hash
14
13
  return @hash if @hash
15
14
 
15
+ @hash = super.to_hash
16
+
16
17
  sendingApplication = self.sending_app.split("^") rescue Array.new(20) {|i|""}
17
18
  sendingFacility = self.sending_facility.split("^") rescue Array.new(20) {|i|""}
18
19
  recvApp = self.recv_app.split("^") rescue Array.new(20) {|i|""}
@@ -23,65 +24,57 @@ module Extensions
23
24
  principal_language_of_message = self.principal_language_of_message.split("^") rescue Array.new(5) {|i|""}
24
25
  message_profile_identifier = self.message_profile_identifier.split("^") rescue Array.new(5) {|i|""}
25
26
 
26
- @hash = {"fieldSeparator" => self.enc_chars,
27
- "encodingCharacters" => self.enc_chars,
28
- "sendingApplication" => {"namespaceId" => sendingApplication[0],
29
- "universalId" => sendingApplication[1],
30
- "universalIdType" => sendingApplication[2]},
31
- "sendingFacility" => {"namespaceId" => sendingFacility[0],
32
- "universalId" => sendingFacility[1],
33
- "universalIdType" => sendingFacility[2]},
34
- "receivingApplication" => {"namespaceId" => recvApp[0],
35
- "universalId" => recvApp[1],
36
- "universalIdType" => recvApp[2]},
37
- "receivingFacility" => {"namespaceId" => recvFacility[0],
38
- "universalId" => recvFacility[1],
39
- "universalIdType" => recvFacility[2]},
40
- "dateTime" => self.time,
41
- "security" => self.security,
42
- "messageType" => {"messageCode" => message_type[0],
43
- "triggerEvent" => message_type[1],
44
- "messageStructure" => message_type[2]},
45
- "messageControlId" => self.message_control_id,
46
- "processingId" => {"id" => message_control_id[0],
47
- "processingMode" => message_control_id[1]},
48
- "versionId" => {"id" => version_id[0],
49
- "internationalizationCode" => version_id[1],
50
- "internationalVersionId" => version_id[2]},
51
- "sequenceNumber" => self.seq,
52
- "continuationPointer" => self.continue_ptr,
53
- "acceptAcknowledgmentType" => self.accept_ack_type,
54
- "applicationAcknowledgmentType" => self.app_ack_type,
55
- "countryCode" => self.country_code,
56
- "characterSet" => self.charset,
57
- "principalLanguageOfMessage" => {"id" => principal_language_of_message[0],
58
- "text" => principal_language_of_message[1],
59
- "nameOfCodingSystem" => principal_language_of_message[2],
60
- "alternateId" => principal_language_of_message[3],
61
- "alternateText" => principal_language_of_message[4],
62
- "nameOfAlternateCodingSystem" => principal_language_of_message[5]},
63
- "alternateCharacterSetHandlingScheme" => self.alternate_character_set_handling_scheme,
64
- "messageProfileIdentifier" => {"entityIdentifier" => message_profile_identifier[0],
65
- "namespaceId" => message_profile_identifier[1],
66
- "universalId" => message_profile_identifier[2],
67
- "universalIdType" => message_profile_identifier[3]},
68
- "sending_responsible_org" => self.sending_responsible_org,
69
- "receiving_responsible_org" => self.receiving_responsible_org,
70
- "sending_network_address" => self.sending_network_address,
71
- "receiving_network_address" => self.receiving_network_address}
27
+ @hash.merge!({"fieldSeparator" => self.enc_chars,
28
+ "encodingCharacters" => self.enc_chars,
29
+ "sendingApplication" => {"namespaceId" => sendingApplication[0],
30
+ "universalId" => sendingApplication[1],
31
+ "universalIdType" => sendingApplication[2]},
32
+ "sendingFacility" => {"namespaceId" => sendingFacility[0],
33
+ "universalId" => sendingFacility[1],
34
+ "universalIdType" => sendingFacility[2]},
35
+ "receivingApplication" => {"namespaceId" => recvApp[0],
36
+ "universalId" => recvApp[1],
37
+ "universalIdType" => recvApp[2]},
38
+ "receivingFacility" => {"namespaceId" => recvFacility[0],
39
+ "universalId" => recvFacility[1],
40
+ "universalIdType" => recvFacility[2]},
41
+ "dateTime" => self.time,
42
+ "security" => self.security,
43
+ "messageType" => {"messageCode" => message_type[0],
44
+ "triggerEvent" => message_type[1],
45
+ "messageStructure" => message_type[2]},
46
+ "messageControlId" => self.message_control_id,
47
+ "processingId" => {"id" => message_control_id[0],
48
+ "processingMode" => message_control_id[1]},
49
+ "versionId" => {"id" => version_id[0],
50
+ "internationalizationCode" => version_id[1],
51
+ "internationalVersionId" => version_id[2]},
52
+ "sequenceNumber" => self.seq,
53
+ "continuationPointer" => self.continue_ptr,
54
+ "acceptAcknowledgmentType" => self.accept_ack_type,
55
+ "applicationAcknowledgmentType" => self.app_ack_type,
56
+ "countryCode" => self.country_code,
57
+ "characterSet" => self.charset,
58
+ "principalLanguageOfMessage" => {"id" => principal_language_of_message[0],
59
+ "text" => principal_language_of_message[1],
60
+ "nameOfCodingSystem" => principal_language_of_message[2],
61
+ "alternateId" => principal_language_of_message[3],
62
+ "alternateText" => principal_language_of_message[4],
63
+ "nameOfAlternateCodingSystem" => principal_language_of_message[5]},
64
+ "alternateCharacterSetHandlingScheme" => self.alternate_character_set_handling_scheme,
65
+ "messageProfileIdentifier" => {"entityIdentifier" => message_profile_identifier[0],
66
+ "namespaceId" => message_profile_identifier[1],
67
+ "universalId" => message_profile_identifier[2],
68
+ "universalIdType" => message_profile_identifier[3]},
69
+ "sending_responsible_org" => self.sending_responsible_org,
70
+ "receiving_responsible_org" => self.receiving_responsible_org,
71
+ "sending_network_address" => self.sending_network_address,
72
+ "receiving_network_address" => self.receiving_network_address})
72
73
  @hash
73
74
  end
74
75
  end
75
76
 
76
77
  module ClassMethods
77
- def mappings
78
- {metadata: {segment_code: "msh", display_name: "Message Header"},
79
- fields: [{field_name: "Message Type", type: "String", field_code: "9.1",
80
- supported_values: Values::MSH::MESSAGE_TYPES.inject([]) {|arr, k| arr << {code: k[0], label: k[1]}; arr}},
81
- {field_name: "Message Event", type: "String", field_code: "9.2",
82
- supported_values: Values::MSH::EVENT_TYPES.inject([]) {|arr, k| arr << {code: k[0], label: k[1]}; arr}}]
83
- }
84
- end
85
78
  end
86
79
 
87
80
  end
@@ -10,9 +10,15 @@ module Extensions
10
10
 
11
11
  module InstanceMethods
12
12
  def to_hash
13
- @hash = {"setId" => self.set_id,
14
- "source" => self.source,
15
- "body" => self.comment}
13
+ return @hash if @hash
14
+
15
+ @hash = super.to_hash
16
+
17
+ @hash.merge!({"setId" => self.set_id,
18
+ "source" => self.source,
19
+ "body" => self.comment})
20
+
21
+ @hash
16
22
  end
17
23
  end
18
24
 
@@ -25,6 +25,8 @@ module Extensions
25
25
  def to_hash
26
26
  return @hash if @hash
27
27
 
28
+ @hash = super.to_hash
29
+
28
30
  universalServiceId = self.universal_service_id.split("^") rescue Array.new(10) {|i|""}
29
31
  collectionVolume = self.collection_volume.split("^") rescue Array.new(10) {|i|""}
30
32
  orderingProvider = self.ordering_provider.split("^") rescue Array.new(20) {|i|""}
@@ -32,97 +34,98 @@ module Extensions
32
34
  resultCopiesTo = self.result_copies_to.split("^") rescue Array.new(10) {|i|""}
33
35
  parent = self.parent.split("^") rescue Array.new(10) {|i|""}
34
36
 
35
- @hash = {"setId" => self.set_id,
36
- "placerOrderNumber" => self.placer_order_number,
37
- "fillerOrderNumber" => self.filler_order_number,
38
- "universalServiceId" => {"id" => universalServiceId[0],
39
- "text" => universalServiceId[1],
40
- "coddingSystem" => universalServiceId[2],
41
- "alternateId" => universalServiceId[3],
42
- "alternateText" => universalServiceId[4]},
43
- "priority" => self.priority,
44
- "requestedDateTime" => self.requested_date,
45
- "observationDateTime" => self.observation_date,
46
- "observationEndDate" => self.observation_end_date,
47
- "collectionVolume" => {"quantity" => collectionVolume[0], "units" => collectionVolume[1]},
48
- "collectorIdentifier" => self.collector_identifier,
49
- "specimenActionCode" => self.specimen_action_code,
50
- "dangerCode" => self.danger_code,
51
- "relevantClinicalInfo" => self.relevant_clinical_info,
52
- "specimenReceivedDateTime" => self.specimen_received_date,
53
- "specimenSource" => self.specimen_source,
54
- "orderingProvider" => [
55
- {
56
- "id" => orderingProvider[0],
57
- "lastName" => orderingProvider[1],
58
- "firstName" => orderingProvider[2],
59
- "middleInitOrName" => orderingProvider[3],
60
- "suffix" => orderingProvider[4],
61
- "prefix" => orderingProvider[5],
62
- "degree" => orderingProvider[6],
63
- "sourceTable" => orderingProvider[7],
64
- "assigningAuthority" => orderingProvider[8],
65
- "nameTypeCode" => orderingProvider[9],
66
- "identifierCheckDigit" => orderingProvider[10],
67
- "checkDigitScheme" => orderingProvider[11],
68
- "idTypeCode" => orderingProvider[12],
69
- "isTypeCode" => orderingProvider[13],
70
- "assigningFacility" => orderingProvider[14],
71
- "providerType" => "OP"
72
- }
73
- ],
74
- "orderCallBackNumber" => self.order_callback_phone_number,
75
- "placerField1" => self.placer_field_1,
76
- "placerField2" => self.placer_field_2,
77
- "fillerField1" => self.filler_field_1,
78
- "fillerField2" => self.filler_field_2,
79
- "rptStatusChangeDate" => self.results_status_change_date,
80
- "chargeToPractice" => self.charge_to_practice,
81
- "diagnosticServiceSectId" => self.diagnostic_serv_sect_id,
82
- "resultStatus" => self.result_status,
83
- "linkedResults" => self.parent_result,
84
- "quantityTiming" => {
85
- "quantity" => quantityTiming[0],
86
- "interval" => quantityTiming[1],
87
- "duration" => quantityTiming[2],
88
- "startDateTime" => quantityTiming[3],
89
- "endDateTime" => quantityTiming[4],
90
- "priority" => quantityTiming[5]
91
- },
92
- "resultCopiesTo" => [
93
- {
94
- "id" => resultCopiesTo[0],
95
- "lastName" => resultCopiesTo[1],
96
- "firstName" => resultCopiesTo[2],
97
- "middleInitOrName" => resultCopiesTo[3]
98
- }
99
- ],
100
- "parent" => {
101
- "placerOrderNumber" => parent[0],
102
- "fillerOrderNumber" => parent[1]
103
- },
104
- "transportationMode" => self.transport_mode,
105
- "reasonForStudy" => self.reason_for_study,
106
- "principalResultInterpreter" => self.principal_result_interpreter,
107
- "assistantResultInterpreter" => self.assistant_result_interpreter,
108
- "technician" => self.technician,
109
- "transcriptionist" => self.transcriptionist,
110
- "scheduledDate" => self.scheduled_date,
111
- "number_of_sample_containers" => self.number_of_sample_containers,
112
- "transport_logistics_of_sample" => self.transport_logistics_of_sample,
113
- "collectors_comment" => self.collectors_comment,
114
- "transport_arrangement_responsibility" => self.transport_arrangement_responsibility,
115
- "transport_arranged" => self.transport_arranged,
116
- "escort_required" => self.escort_required,
117
- "planned_patient_transport_comment" => self.planned_patient_transport_comment,
118
- "procedure_code" => self.procedure_code,
119
- "procedure_code_modifier" => self.procedure_code_modifier,
120
- "placer_supplemental_service_info" => self.placer_supplemental_service_info,
121
- "filler_supplemental_service_info" => self.filler_supplemental_service_info,
122
- "medically_necessary_dup_procedure_reason" => self.medically_necessary_dup_procedure_reason,
123
- "result_handling" => self.result_handling,
124
- "parent_universal_service_identifier" => self.parent_universal_service_identifier}
125
-
37
+ @hash.merge!({"setId" => self.set_id,
38
+ "placerOrderNumber" => self.placer_order_number,
39
+ "fillerOrderNumber" => self.filler_order_number,
40
+ "universalServiceId" => {"id" => universalServiceId[0],
41
+ "text" => universalServiceId[1],
42
+ "coddingSystem" => universalServiceId[2],
43
+ "alternateId" => universalServiceId[3],
44
+ "alternateText" => universalServiceId[4]},
45
+ "priority" => self.priority,
46
+ "requestedDateTime" => self.requested_date,
47
+ "observationDateTime" => self.observation_date,
48
+ "observationEndDate" => self.observation_end_date,
49
+ "collectionVolume" => {"quantity" => collectionVolume[0], "units" => collectionVolume[1]},
50
+ "collectorIdentifier" => self.collector_identifier,
51
+ "specimenActionCode" => self.specimen_action_code,
52
+ "dangerCode" => self.danger_code,
53
+ "relevantClinicalInfo" => self.relevant_clinical_info,
54
+ "specimenReceivedDateTime" => self.specimen_received_date,
55
+ "specimenSource" => self.specimen_source,
56
+ "orderingProvider" => [
57
+ {
58
+ "id" => orderingProvider[0],
59
+ "lastName" => orderingProvider[1],
60
+ "firstName" => orderingProvider[2],
61
+ "middleInitOrName" => orderingProvider[3],
62
+ "suffix" => orderingProvider[4],
63
+ "prefix" => orderingProvider[5],
64
+ "degree" => orderingProvider[6],
65
+ "sourceTable" => orderingProvider[7],
66
+ "assigningAuthority" => orderingProvider[8],
67
+ "nameTypeCode" => orderingProvider[9],
68
+ "identifierCheckDigit" => orderingProvider[10],
69
+ "checkDigitScheme" => orderingProvider[11],
70
+ "idTypeCode" => orderingProvider[12],
71
+ "isTypeCode" => orderingProvider[13],
72
+ "assigningFacility" => orderingProvider[14],
73
+ "providerType" => "OP"
74
+ }
75
+ ],
76
+ "orderCallBackNumber" => self.order_callback_phone_number,
77
+ "placerField1" => self.placer_field_1,
78
+ "placerField2" => self.placer_field_2,
79
+ "fillerField1" => self.filler_field_1,
80
+ "fillerField2" => self.filler_field_2,
81
+ "rptStatusChangeDate" => self.results_status_change_date,
82
+ "chargeToPractice" => self.charge_to_practice,
83
+ "diagnosticServiceSectId" => self.diagnostic_serv_sect_id,
84
+ "resultStatus" => self.result_status,
85
+ "linkedResults" => self.parent_result,
86
+ "quantityTiming" => {
87
+ "quantity" => quantityTiming[0],
88
+ "interval" => quantityTiming[1],
89
+ "duration" => quantityTiming[2],
90
+ "startDateTime" => quantityTiming[3],
91
+ "endDateTime" => quantityTiming[4],
92
+ "priority" => quantityTiming[5]
93
+ },
94
+ "resultCopiesTo" => [
95
+ {
96
+ "id" => resultCopiesTo[0],
97
+ "lastName" => resultCopiesTo[1],
98
+ "firstName" => resultCopiesTo[2],
99
+ "middleInitOrName" => resultCopiesTo[3]
100
+ }
101
+ ],
102
+ "parent" => {
103
+ "placerOrderNumber" => parent[0],
104
+ "fillerOrderNumber" => parent[1]
105
+ },
106
+ "transportationMode" => self.transport_mode,
107
+ "reasonForStudy" => self.reason_for_study,
108
+ "principalResultInterpreter" => self.principal_result_interpreter,
109
+ "assistantResultInterpreter" => self.assistant_result_interpreter,
110
+ "technician" => self.technician,
111
+ "transcriptionist" => self.transcriptionist,
112
+ "scheduledDate" => self.scheduled_date,
113
+ "number_of_sample_containers" => self.number_of_sample_containers,
114
+ "transport_logistics_of_sample" => self.transport_logistics_of_sample,
115
+ "collectors_comment" => self.collectors_comment,
116
+ "transport_arrangement_responsibility" => self.transport_arrangement_responsibility,
117
+ "transport_arranged" => self.transport_arranged,
118
+ "escort_required" => self.escort_required,
119
+ "planned_patient_transport_comment" => self.planned_patient_transport_comment,
120
+ "procedure_code" => self.procedure_code,
121
+ "procedure_code_modifier" => self.procedure_code_modifier,
122
+ "placer_supplemental_service_info" => self.placer_supplemental_service_info,
123
+ "filler_supplemental_service_info" => self.filler_supplemental_service_info,
124
+ "medically_necessary_dup_procedure_reason" => self.medically_necessary_dup_procedure_reason,
125
+ "result_handling" => self.result_handling,
126
+ "parent_universal_service_identifier" => self.parent_universal_service_identifier})
127
+
128
+ @hash
126
129
  end
127
130
  end
128
131