ruby-hl7-extensions 0.0.60 → 0.0.61

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
  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