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 +4 -4
- data/VERSION +1 -1
- data/VERSION.yml +1 -1
- data/lib/core_ext/message.rb +33 -29
- data/lib/core_ext/segment.rb +38 -1
- data/lib/core_ext/segments/msh.rb +48 -55
- data/lib/core_ext/segments/nte.rb +9 -3
- data/lib/core_ext/segments/obr.rb +94 -91
- data/lib/core_ext/segments/obx.rb +37 -31
- data/lib/core_ext/segments/orc.rb +61 -57
- data/lib/core_ext/segments/pv1.rb +11 -19
- data/lib/core_ext/segments/rol.rb +6 -0
- data/lib/ruby-hl7-extensions.rb +0 -1
- data/ruby-hl7-extensions.gemspec +2 -3
- metadata +1 -2
- data/lib/core_ext/values/msh.rb +0 -420
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6868604371538033e5c53e7f454f5fc0f65bae0c
|
4
|
+
data.tar.gz: 3405385d0116bdd5fbd233c6bc75bf5b2b9a9dc6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21003e41e5fd9dcf12c45fdcabeac27f0fde210dd359390ea35570eff08a0469de64d3dbd9a645fcfb0ae43337534f9d01ef679ee4fba515f292e22a7d729a91
|
7
|
+
data.tar.gz: 4dcc2c371c49a37ace53587bd3cc0942b78eab10dfe7e7eca2831c32c6e188a21dac222365bf210546df8020c63149655c2e8df8e94bce584bb028403831c10b
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.61
|
data/VERSION.yml
CHANGED
data/lib/core_ext/message.rb
CHANGED
@@ -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
|
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
|
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
|
-
|
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
|
-
|
67
|
-
|
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(
|
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
|
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
|
-
|
89
|
+
pid.value_for_field("8")
|
82
90
|
end
|
83
91
|
|
84
|
-
def
|
85
|
-
|
86
|
-
a.to_enum(:each)
|
92
|
+
def pv1
|
93
|
+
@pv1 ||= segments_for(:PV1).first
|
87
94
|
end
|
88
|
-
|
89
|
-
def
|
90
|
-
|
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
|
95
|
-
|
96
|
-
::HL7::Message::Segment.from_hash("
|
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?
|
data/lib/core_ext/segment.rb
CHANGED
@@ -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
|
-
|
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
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
14
|
-
|
15
|
-
|
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
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
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
|
|