stupidedi 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/edi-obfuscate +1 -1
- data/lib/stupidedi/config.rb +1 -0
- data/lib/stupidedi/editor/004010.rb +1 -1
- data/lib/stupidedi/editor/implementation_ack.rb +3 -3
- data/lib/stupidedi/interchanges/00501/element_defs.rb +3 -3
- data/lib/stupidedi/parser/builder_dsl.rb +4 -1
- data/lib/stupidedi/schema/abstract_element_use.rb +9 -0
- data/lib/stupidedi/schema/component_element_use.rb +2 -0
- data/lib/stupidedi/schema/composite_element_use.rb +6 -1
- data/lib/stupidedi/schema/segment_use.rb +4 -4
- data/lib/stupidedi/schema/simple_element_use.rb +2 -0
- data/lib/stupidedi/transaction_sets/005010/implementations.rb +1 -0
- data/lib/stupidedi/transaction_sets/005010/implementations/X212-HN277.rb +552 -0
- data/lib/stupidedi/transaction_sets/005010/implementations/X220A1-BE834.rb +2 -2
- data/lib/stupidedi/transaction_sets/005010/implementations/X279-HB271.rb +13 -13
- data/lib/stupidedi/transaction_sets/005010/implementations/X279A1-HB271.rb +2 -2
- data/lib/stupidedi/transaction_sets/builder.rb +5 -1
- data/lib/stupidedi/transaction_sets/builder/dsl.rb +192 -0
- data/lib/stupidedi/values/composite_element_val.rb +9 -2
- data/lib/stupidedi/values/repeated_element_val.rb +1 -1
- data/lib/stupidedi/version.rb +1 -1
- data/lib/stupidedi/versions/005010/element_defs.rb +168 -1
- data/lib/stupidedi/versions/common/element_types/id.rb +1 -1
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ebce60d52d11cc5d750be833dedaa9c143becc4bebfe15a4d4a91c7934ad08b
|
4
|
+
data.tar.gz: aea17d716ff7be4f11ddb26e1142edfb5a42d7be8ff33bf9faa0ad8a55cf6411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fb54dce8ae28fd125456dbd0d82aea49c8623b99d364b689853bd4567ff8284815241b5d223f695f9fe79e20fd72d6db4850f7be6b560c820c81dccd1588c8a
|
7
|
+
data.tar.gz: c9da5e9c52cbbd801b02a5d8aebf466c83fccfe8902ab6e91c538fc48ecb0f0868899d21b0f67216274227e9b1b16a9e3dae03bd11a53b4b63f31f4664dfed3c
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
* [GitHub project](http://github.com/irobayna/stupidedi)
|
8
8
|
* [Human Documentation](https://github.com/irobayna/stupidedi/tree/master/doc)
|
9
|
-
* [API Documentation](http://rubydoc.info/github/
|
9
|
+
* [API Documentation](http://rubydoc.info/github/kputnam/stupidedi/master/frames)
|
10
10
|
|
11
11
|
Stupidedi is a high-quality library for parsing, generating, validating,
|
12
12
|
and manipulating ASC X12 EDI documents. Very roughly, it's jQuery for
|
data/bin/edi-obfuscate
CHANGED
data/lib/stupidedi/config.rb
CHANGED
@@ -106,6 +106,7 @@ module Stupidedi
|
|
106
106
|
x.register("005010", "FA", "999") { Stupidedi::TransactionSets::FiftyTen::Standards::FA999 }
|
107
107
|
x.register("005010", "RA", "820") { Stupidedi::TransactionSets::FiftyTen::Standards::RA820 }
|
108
108
|
x.register("005010X212", "HR", "276") { Stupidedi::TransactionSets::FiftyTen::Implementations::X212::HR276 }
|
109
|
+
x.register("005010X212", "HN", "277") { Stupidedi::TransactionSets::FiftyTen::Implementations::X212::HN277 }
|
109
110
|
x.register("005010X214", "HN", "277") { Stupidedi::TransactionSets::FiftyTen::Implementations::X214::HN277 }
|
110
111
|
x.register("005010X220", "BE", "834") { Stupidedi::TransactionSets::FiftyTen::Implementations::X220::BE834 }
|
111
112
|
x.register("005010X221", "HP", "835") { Stupidedi::TransactionSets::FiftyTen::Implementations::X221::HP835 }
|
@@ -138,11 +138,11 @@ module Stupidedi
|
|
138
138
|
# A: Accepted
|
139
139
|
# E: Accepted, but errors were found
|
140
140
|
# P: Partially accepted, at least one transaction set was rejected
|
141
|
-
# R:
|
141
|
+
# R: Rejected
|
142
142
|
#
|
143
|
-
# 1:
|
143
|
+
# 1: Functional group not supported
|
144
144
|
# 2: Functional group version not supported
|
145
|
-
# 3:
|
145
|
+
# 3: Functional group trailer missing
|
146
146
|
# 4: Group control number in the functional group header and trailer do not agree
|
147
147
|
# 5: Number of included transaction sets does not match actual count
|
148
148
|
# 6: Group control number violates syntax
|
@@ -14,7 +14,7 @@ module Stupidedi
|
|
14
14
|
"02" => "EDX Communications ID",
|
15
15
|
"03" => "Additional Data Identification",
|
16
16
|
"04" => "Rail Communication ID",
|
17
|
-
"05" => "
|
17
|
+
"05" => "Department of Defense (DoD) Communication Identifier",
|
18
18
|
"06" => "United States Federal Government Communication Identifier"))
|
19
19
|
I02 = c::SpecialAN.new(:I02, "Authorization Information", 10, 10)
|
20
20
|
I03 = t::ID.new(:I03, "Security Information Qualifier", 2, 2,
|
@@ -34,7 +34,7 @@ module Stupidedi
|
|
34
34
|
"10" => s::CodeList.external("350"),
|
35
35
|
"11" => "DEA (Drug Enforcement Administration)",
|
36
36
|
"12" => "Phone (Telephone Companies)",
|
37
|
-
"13" => "UCS Code (The UCS Code is a Code Used for UCS Transmissions; it includes the Area Code and Telephone Number of a Modem; it Does Not Include
|
37
|
+
"13" => "UCS Code (The UCS Code is a Code Used for UCS Transmissions; it includes the Area Code and Telephone Number of a Modem; it Does Not Include Punctuation, Blanks, or the Access Code)",
|
38
38
|
"14" => "Duns Plus Suffix",
|
39
39
|
"15" => "Petroleum Accountants Society of Canada Company Code",
|
40
40
|
"16" => "Duns Number With 4-Character Suffix",
|
@@ -52,7 +52,7 @@ module Stupidedi
|
|
52
52
|
"28" => "Fiscal Intermediary Identification Number as assigned by Health Care Financing Administration (HCFA)",
|
53
53
|
"29" => "Medicare Provider and Supplier Identification Number as assigned by Health Care Financing Administration (HCFA)",
|
54
54
|
"30" => "US Federal Tax Identification Number",
|
55
|
-
"31" => "Jurisdiction Identification Number Plus 4 as assigned by the
|
55
|
+
"31" => "Jurisdiction Identification Number Plus 4 as assigned by the International Association of Industrial Accident Boards and Commissions (IAIABC)",
|
56
56
|
"32" => "US Federal Employer Identification Number (FEIN)",
|
57
57
|
"33" => "National Association of Insurance Commissioners Company Code (NAIC)",
|
58
58
|
"34" => "Medicaid Provider and Supplier Identification Number as assigned by individual State Medicaid Agencies in conjunction with Health Care Financing Administration (HCFA)",
|
@@ -136,8 +136,11 @@ module Stupidedi
|
|
136
136
|
elsif zipper.node.composite?
|
137
137
|
if zipper.node.blank?
|
138
138
|
if zipper.node.usage.required?
|
139
|
+
# GH-194: Normally the position of a composit element is the
|
140
|
+
# position of it's first child; but an empty composit element
|
141
|
+
# doesn't have children. So the closest position is of the parent
|
139
142
|
raise Exceptions::ParseError,
|
140
|
-
"required
|
143
|
+
"required #{zipper.node.descriptor} is blank at #{zipper.parent.node.position.inspect}"
|
141
144
|
end
|
142
145
|
elsif zipper.node.usage.forbidden?
|
143
146
|
raise Exceptions::ParseError,
|
@@ -10,6 +10,15 @@ module Stupidedi
|
|
10
10
|
|
11
11
|
def_delegators :definition, :code_lists
|
12
12
|
|
13
|
+
# @return [Symbol]
|
14
|
+
abstract :id
|
15
|
+
|
16
|
+
# @return [String]
|
17
|
+
abstract :name
|
18
|
+
|
19
|
+
# @return [String]
|
20
|
+
abstract :description
|
21
|
+
|
13
22
|
# @return [ElementReq]
|
14
23
|
abstract :requirement
|
15
24
|
|
@@ -7,7 +7,7 @@ module Stupidedi
|
|
7
7
|
# @return [CompositeElementDef]
|
8
8
|
attr_reader :definition
|
9
9
|
|
10
|
-
def_delegators :definition, :id
|
10
|
+
def_delegators :definition, :id, :name, :description
|
11
11
|
|
12
12
|
# @return [ElementReq]
|
13
13
|
attr_reader :requirement
|
@@ -38,6 +38,11 @@ module Stupidedi
|
|
38
38
|
changes.fetch(:parent, @parent)
|
39
39
|
end
|
40
40
|
|
41
|
+
def descriptor
|
42
|
+
n = parent.element_uses.index{|u| u.eql?(self) } + 1
|
43
|
+
"element #{parent.id}#{"%02d" % n} #{definition.name}".strip
|
44
|
+
end
|
45
|
+
|
41
46
|
def repeatable?
|
42
47
|
@repeat_count.try{|r| r.include?(2) }
|
43
48
|
end
|
@@ -17,11 +17,15 @@ module Stupidedi
|
|
17
17
|
# @return [SegmentDef]
|
18
18
|
attr_reader :definition
|
19
19
|
|
20
|
+
def_delegators :definition, :id, :name, :descriptor, :code_lists
|
21
|
+
|
20
22
|
# @see X222 B.1.1.3.12.6 Data Segment Requirement Designators
|
21
23
|
#
|
22
24
|
# @return [SegmentReq]
|
23
25
|
attr_reader :requirement
|
24
26
|
|
27
|
+
def_delegators :requirement, :required?, :optional?
|
28
|
+
|
25
29
|
# @see X222 B.1.3.12.3 Repeated Occurrences of Single Data Segments
|
26
30
|
# @see X222 B.1.3.12.8 Data Segment Occurrence
|
27
31
|
#
|
@@ -31,10 +35,6 @@ module Stupidedi
|
|
31
35
|
# @return [LoopDef, TableDef]
|
32
36
|
attr_reader :parent
|
33
37
|
|
34
|
-
def_delegators :definition, :descriptor, :id, :name, :code_lists
|
35
|
-
|
36
|
-
def_delegators :requirement, :required?, :optional?
|
37
|
-
|
38
38
|
def initialize(definition, position, requirement, repeat_count, parent)
|
39
39
|
@definition, @position, @requirement, @repeat_count, @parent =
|
40
40
|
definition, position, requirement, repeat_count, parent
|
@@ -0,0 +1,552 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Stupidedi
|
3
|
+
module TransactionSets
|
4
|
+
module FiftyTen
|
5
|
+
module Implementations
|
6
|
+
module X212
|
7
|
+
b = Builder
|
8
|
+
d = Schema
|
9
|
+
r = SegmentReqs
|
10
|
+
e = ElementReqs
|
11
|
+
s = SegmentDefs
|
12
|
+
|
13
|
+
HN277 = Builder::Dsl.build("HN", "277", "Health Care Information Status Notification") do
|
14
|
+
entity_values = %w[
|
15
|
+
03 13 17 1e 1g 1h 1i 1o 1p 1q 1r 1s 1t 1u 1v 1w 1x 1y 1z 28 2a 2b
|
16
|
+
2d 2e 2i 2k 2p 2q 2s 2z 30 36 3a 3c 3d 3e 3f 3g 3h 3i 3j 3k 3l 3m 3n 3o 3p 3q
|
17
|
+
3r 3s 3t 3u 3v 3w 3x 3y 3z 40 43 44 4a 4b 4c 4d 4e 4f 4g 4h 4i 4j 4l 4m 4n 4o
|
18
|
+
4p 4q 4r 4s 4u 4v 4w 4x 4y 4z 5a 5b 5c 5d 5e 5f 5g 5h 5i 5j 5k 5l
|
19
|
+
5m 5n 5o 5p 5q 5r 5s 5t 5u 5v 5w 5x 5y 5z 61 6a 6b 6c 6d 6e 6f 6g 6h 6i 6j 6k
|
20
|
+
6l 6n 6o 6p 6q 6r 6s 6u 6v 6w 6x 6y 71 72 73 74 77 7c 80 82 84 85 87 95 ck cz
|
21
|
+
d2 dd dj dk dn do dq e1 e2 e7 e9 fa fd fe g0 g3 gb gb gi gj gk gm gy hf hh i3
|
22
|
+
ij il in li lr mr msc ob od ox p0 p2 p3 p4 p5 p7 prp pt pv pw qa qb qc qd qe qh qk
|
23
|
+
ql qn qo qs qv qy rc rw s4 sep sj su t4 tl tq tt ttp tu uh x3 x4 x5 zz
|
24
|
+
].map(&:upcase)
|
25
|
+
table_header("1 - Header") do
|
26
|
+
segment(100, s::ST, "Transaction Set Header", r::Required, d::RepeatCount.bounded(1)) do
|
27
|
+
element(e::Required, "Transaction Set Identifier Code", b::Values("277"))
|
28
|
+
element(e::Required, "Transaction Set Control Number")
|
29
|
+
element(e::Required, "Version, Release, or Industry Identifier", b::Values("005010X212"))
|
30
|
+
end
|
31
|
+
segment(200, s::BHT, "Beginning of Hierarchical Transaction", r::Required, d::RepeatCount.bounded(1)) do
|
32
|
+
element(e::Required, "Hierarchical Structure Code", b::Values("0010"))
|
33
|
+
element(e::Required, "Transaction Set Purpose Code", b::Values("08"))
|
34
|
+
element(e::Required, "Originator Application Transaction Identifier", b::MaxLength(30))
|
35
|
+
element(e::Required, "Transaction Set Creation Date")
|
36
|
+
element(e::Required, "Transaction Set Creation Time")
|
37
|
+
element(e::Required, "Transaction Type Code", b::Values("DG"))
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
table_detail("2 - Information Source Detail") do
|
42
|
+
loop_("2000A INFORMATION SOURCE LEVEL", d::RepeatCount.unbounded) do
|
43
|
+
segment(100, s::HL, "Information Source Level", r::Required, d::RepeatCount.bounded(1)) do
|
44
|
+
element(e::Required, "Hierarchical ID Number")
|
45
|
+
element(e::NotUsed, "Hierarchical Parent ID Number")
|
46
|
+
element(e::Required, "Hierarchical Level Code", values("20"))
|
47
|
+
element(e::Required, "Hierachical Child Code", values("1"))
|
48
|
+
end
|
49
|
+
# positions on page 100
|
50
|
+
loop_("2100A INFORMATION SOURCE NAME", d::RepeatCount.bounded(1)) do
|
51
|
+
segment(500, s::NM1, "Information Source Name", r::Required, d::RepeatCount.bounded(1)) do
|
52
|
+
element(e::Required, "Entity Identifier Code", values("PR"))
|
53
|
+
element(e::Required, "Entity Type Qualifier", values("2"))
|
54
|
+
element(e::Required, "Payer Name")
|
55
|
+
element(e::NotUsed, "Name First")
|
56
|
+
element(e::NotUsed, "Name Middle")
|
57
|
+
element(e::NotUsed, "Name Prefix")
|
58
|
+
element(e::NotUsed, "Name Suffix")
|
59
|
+
element(e::Required, "Identification Code Qualifier", values("PI", "XV"))
|
60
|
+
element(e::Required, "Payer Identifier")
|
61
|
+
element(e::NotUsed, "Entity Relationship Code")
|
62
|
+
element(e::NotUsed, "Entity Identifier Code")
|
63
|
+
element(e::NotUsed, "Name Last or Organization Name")
|
64
|
+
end
|
65
|
+
segment(800, s::PER, "Administrative Communications Contact", r::Situational, d::RepeatCount.bounded(1)) do
|
66
|
+
element(e::Required, "Concat Function Code", values("IC"))
|
67
|
+
element(e::Situational, "Payer Contact Name")
|
68
|
+
element(e::Required, "Communication Number Qualifier", values("ED", "EM", "FX", "TE"))
|
69
|
+
element(e::Required, "Payer Contact Communication Number")
|
70
|
+
element(e::Required, "Communication Number Qualifier", values("ED", "EM", "FX", "TE"))
|
71
|
+
element(e::Required, "Payer Contact Communication Number")
|
72
|
+
element(e::Required, "Communication Number Qualifier", values("ED", "EM", "FX", "TE"))
|
73
|
+
element(e::Required, "Payer Contact Communication Number")
|
74
|
+
element(e::NotUsed, "Contact Inquiry Reference")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
table_detail("2 - Information Receiver Detail") do
|
80
|
+
loop_("2000B INFORMATION RECEIVER LEVEL", d::RepeatCount.unbounded) do
|
81
|
+
segment(100, s::HL, "Information Receiver Level", r::Required, d::RepeatCount.bounded(1)) do
|
82
|
+
element(e::Required, "Hierarchical ID Number")
|
83
|
+
element(e::Required, "Hierarchical Parent ID Number")
|
84
|
+
element(e::Required, "Hierarchical Level Code", b::Values("21"))
|
85
|
+
element(e::Required, "Hierachical Child Code", b::Values("0", "1"))
|
86
|
+
end # segment Information Receiver Level
|
87
|
+
|
88
|
+
loop_("2100B INFORMATION RECEIVER NAME", d::RepeatCount.bounded(2)) do
|
89
|
+
segment(500, s::NM1, "Information Receiver Name", r::Required, d::RepeatCount.bounded(1)) do
|
90
|
+
element(e::Required, "Entity Identifier Code", b::Values("41"))
|
91
|
+
element(e::Required, "Entity Type Qualifier", b::Values("1", "2"))
|
92
|
+
element(e::Situational, "Information Receiver Last or Organizational Name")
|
93
|
+
element(e::Situational, "Information Receiver First Name")
|
94
|
+
element(e::Situational, "Information Receiver Middle Name")
|
95
|
+
element(e::NotUsed, "Name Prefix")
|
96
|
+
element(e::NotUsed, "Name Suffix")
|
97
|
+
element(e::Required, "Identification Code Qualifier", b::Values("46"))
|
98
|
+
element(e::Required, "Information Receiver Identification Number")
|
99
|
+
element(e::NotUsed, "Entity Relationship Code")
|
100
|
+
element(e::NotUsed, "Entity Identifier Code")
|
101
|
+
element(e::NotUsed, "Name Last or Organization Name")
|
102
|
+
end # Segment Information Receiver Name
|
103
|
+
end # Loop information Receiver Name
|
104
|
+
loop_("2200B INFORMATION RECEIVER TRACE IDENTIFIER", d::RepeatCount.bounded(1)) do
|
105
|
+
segment(900, s::TRN, "Information Receiver Trace Identifier", r::Situational, d::RepeatCount.bounded(1)) do
|
106
|
+
element(e::Required, "Trace Type Code", b::Values("2"))
|
107
|
+
element(e::Required, "Claim Transaction Batch Number")
|
108
|
+
element(e::NotUsed, "Originating Company Identifier")
|
109
|
+
element(e::NotUsed, "Reference Identification")
|
110
|
+
end # Segment Information Receiever Application Trace Ident
|
111
|
+
segment(1000, s::STC, "Information Receiver Status Information", r::Required, d::RepeatCount.unbounded) do
|
112
|
+
composite(e::Required, "HEALTH CARE CLAIM STATUS") do
|
113
|
+
element(e::Required, "Status Code")
|
114
|
+
element(e::Required, "Health Care Claim Status Code")
|
115
|
+
element(e::Situational, "Entity Identifier Code", b::Values("41", "AY", "PR"))
|
116
|
+
element(e::NotUsed, "Code List Qualifier Code")
|
117
|
+
end # composite value
|
118
|
+
element(e::Required, "Status Information Effective Date")
|
119
|
+
element(e::NotUsed, "Action Code")
|
120
|
+
element(e::NotUsed, "Monetary Amount")
|
121
|
+
element(e::NotUsed, "Monetary Amount")
|
122
|
+
element(e::NotUsed, "Date")
|
123
|
+
element(e::NotUsed, "Payment Method Code")
|
124
|
+
element(e::NotUsed, "Date")
|
125
|
+
element(e::NotUsed, "Check Number")
|
126
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
127
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
128
|
+
element(e::Required, "Status Code") # @todo: CodeSource.external("508")
|
129
|
+
element(e::Situational, "Entity Identifier Qualifier", b::Values("41", "AY", "PR"))
|
130
|
+
element(e::NotUsed, "Code List Qualifier Code")
|
131
|
+
end # composite value
|
132
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
133
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
134
|
+
element(e::Required, "Status Code") # @todo: CodeSource.external("508")
|
135
|
+
element(e::Situational, "Entity Identifier Qualifier", b::Values("41", "AY", "PR"))
|
136
|
+
element(e::NotUsed, "Code List Qualifier Code")
|
137
|
+
end # composite value
|
138
|
+
element(e::NotUsed, "Free-form Message Text")
|
139
|
+
end # Segment information receiver status information
|
140
|
+
end # loop Information Receiver Trace Identifier
|
141
|
+
end # loop Information Receiver Level
|
142
|
+
end # Table 2 - Information Receiver Detail
|
143
|
+
table_detail("2 - Service Provider Detail") do
|
144
|
+
loop_("2000C Service Provider Level", d::RepeatCount.unbounded) do
|
145
|
+
segment(100, s::HL, "Service Provider Level", r::Situational, d::RepeatCount.bounded(1)) do
|
146
|
+
element(e::Required, "Hierarchical ID Number")
|
147
|
+
element(e::Required, "Hierarchical Parent ID Number")
|
148
|
+
element(e::Required, "Hierarchical Level Code", b::Values("19"))
|
149
|
+
element(e::Required, "Hierachical Child Code", b::Values("0", "1"))
|
150
|
+
end # Segment 100 Service Provider Level
|
151
|
+
loop_("2100C PROVIDER NAME", d::RepeatCount.bounded(2)) do
|
152
|
+
segment(500, s::NM1, "Provider Name", r::Required, d::RepeatCount.bounded(1)) do
|
153
|
+
element(e::Required, "Entity Identifier Code", b::Values("1P"))
|
154
|
+
element(e::Required, "Entity Type Qualifier", b::Values("1", "2"))
|
155
|
+
element(e::Situational, "Provider Last or Organization Name")
|
156
|
+
element(e::Situational, "Provider First Name")
|
157
|
+
element(e::Situational, "Provider Middle Name")
|
158
|
+
element(e::NotUsed, "Name Prefix")
|
159
|
+
element(e::Situational, "Provider Name Suffix")
|
160
|
+
element(
|
161
|
+
e::Required, "Identification Code Qualifier",
|
162
|
+
b::Values("FI", "SV", "XX")
|
163
|
+
)
|
164
|
+
element(e::Required, "Provider Identifier")
|
165
|
+
element(e::NotUsed, "Entity Relationship Code")
|
166
|
+
element(e::NotUsed, "Entity Identifier Code")
|
167
|
+
element(e::NotUsed, "Name Last or Organization Name")
|
168
|
+
end # Segment/NM1 - Provider Name
|
169
|
+
end # Loop/2100C - Provider Name
|
170
|
+
loop_("2200C PROVIDER OF SERVICE TRACE IDENTIFIER", d::RepeatCount.bounded(1)) do
|
171
|
+
segment(900, s::TRN, "Provider of Service Trace Identifier", r::Situational, d::RepeatCount.bounded(1)) do
|
172
|
+
element(e::Required, "Trace Type Code", values("1"))
|
173
|
+
element(e::Required, "Provider of Service INformation Trace Identifier")
|
174
|
+
element(e::NotUsed, "Originating Company Identifier")
|
175
|
+
element(e::NotUsed, "Reference Identification")
|
176
|
+
end # Segment/TRN - Provider of Service Trance Information
|
177
|
+
segment(1000, s::STC, "Provider Status Information", r::Required, d::RepeatCount.unbounded) do
|
178
|
+
composite(e::Required, "HEALTH CARE CLAIM STATUS") do
|
179
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
180
|
+
element(e::Required, "Status Code")
|
181
|
+
element(e::Situational, "Entity Identifier Code", b::Values("1P"))
|
182
|
+
element(e::NotUsed, "Code List Qualifier Code")
|
183
|
+
end # composite value
|
184
|
+
element(e::Required, "Status Information Effective Date")
|
185
|
+
element(e::NotUsed, "Action Code")
|
186
|
+
element(e::NotUsed, "Monetary Amount")
|
187
|
+
element(e::NotUsed, "Monetary Amount")
|
188
|
+
element(e::NotUsed, "Date")
|
189
|
+
element(e::NotUsed, "Payment Method Code")
|
190
|
+
element(e::NotUsed, "Date")
|
191
|
+
element(e::NotUsed, "Check Number")
|
192
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
193
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
194
|
+
element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
|
195
|
+
element(e::Situational, "Entity Identifier Qualifier", b::Values("1P"))
|
196
|
+
element(e::NotUsed, "Code List Qualifier Code")
|
197
|
+
end # composite value
|
198
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
199
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
200
|
+
element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
|
201
|
+
element(e::Situational, "Entity Identifier Qualifier", b::Values("1P"))
|
202
|
+
element(e::NotUsed, "Code List Qualifier Code")
|
203
|
+
end # composite value
|
204
|
+
element(e::NotUsed, "Free-form Message Text")
|
205
|
+
end # Segment/STC - Provider Status Information
|
206
|
+
end # Loop/2200C - Provider of Service Trace Identifier
|
207
|
+
end # Loop/2000C Service Provider Level
|
208
|
+
end # Table/2 - Service Provider Detail
|
209
|
+
table_detail("2 - Subscriber Detail") do
|
210
|
+
loop_("2000D SUBSCRIBER LEVEL", d::RepeatCount.unbounded) do
|
211
|
+
segment(100, s::HL, "Subscriber Level", r::Situational, d::RepeatCount.bounded(1)) do
|
212
|
+
element(e::Required, "Hierarchical ID Number")
|
213
|
+
element(e::Required, "Hierarchical Parent ID Number")
|
214
|
+
element(e::Required, "Hierarchical Level Code", values("22"))
|
215
|
+
element(e::Required, "Hierachical Child Code", values("0", "1"))
|
216
|
+
end # Segment/HL - Subscriber Level
|
217
|
+
|
218
|
+
loop_("2100D SUBSCRIBER NAME", d::RepeatCount.bounded(1)) do
|
219
|
+
segment(500, s::NM1, "Subscriber Name", r::Required, d::RepeatCount.bounded(1)) do
|
220
|
+
element(e::Required, "Entity Identifier Code", values("IL"))
|
221
|
+
element(e::Required, "Entity Type Qualifier", values("1", "2"))
|
222
|
+
element(e::Required, "Subscriber Last Name")
|
223
|
+
element(e::Situational, "Subscriber First Name")
|
224
|
+
element(e::Situational, "Subscriber Middle Name or Initial")
|
225
|
+
element(e::NotUsed, "Name Prefix")
|
226
|
+
element(e::Situational, "Subscriber Name Suffix")
|
227
|
+
element(e::Required, "Identification Code Qualifier", values("24", "II", "MI"))
|
228
|
+
element(e::Required, "Subscriber Identifier")
|
229
|
+
element(e::NotUsed, "Entity Relationship Code")
|
230
|
+
element(e::NotUsed, "Entity Identifier Code")
|
231
|
+
element(e::NotUsed, "Name Last or Organization Name")
|
232
|
+
end # Segment/NM1 - Subscriber Name
|
233
|
+
end # Loop/2100D - Subscriber name
|
234
|
+
loop_("2200D CLAIM STATUS TRACKING NUMBER", d::RepeatCount.unbounded) do
|
235
|
+
segment(900, s::TRN, "Claim Status Tracking Number", r::Situational, d::RepeatCount.bounded(1)) do
|
236
|
+
element(e::Required, "Trace Type Code", values("2"))
|
237
|
+
element(e::Required, "Referenced Transaction Trace Number")
|
238
|
+
element(e::NotUsed, "Originating Company Identifier")
|
239
|
+
element(e::NotUsed, "Reference Identification")
|
240
|
+
end # Segment/TRN - Claim Status Tracking Number
|
241
|
+
segment(1000, s::STC, "Claim Level Status Information", r::Required, d::RepeatCount.unbounded) do
|
242
|
+
composite(e::Required, "HEALTH CARE CLAIM STATUS") do
|
243
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
244
|
+
element(e::Required, "Health Care Claim Status Code")
|
245
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
246
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
247
|
+
end # Composite/Health care claim status
|
248
|
+
element(e::Required, "Status Information Effective Date")
|
249
|
+
element(e::NotUsed, "Action Code")
|
250
|
+
element(e::Situational, "Total Claim Charge Amount")
|
251
|
+
element(e::Situational, "Claim Payment Amount")
|
252
|
+
element(e::Situational, "Adjudication Finalized Date")
|
253
|
+
element(e::NotUsed, "Payment Method Code")
|
254
|
+
element(e::Situational, "Remittance Date")
|
255
|
+
element(e::Situational, "Remittance Trace Number")
|
256
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
257
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
258
|
+
element(e::Required, "Health Care Claim Status Code")
|
259
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
260
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
261
|
+
end # Composite/Health Care Claim Status
|
262
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
263
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
264
|
+
element(e::Required, "Health Care Claim Status Code")
|
265
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
266
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
267
|
+
end # Composite/Health Care Claim Status
|
268
|
+
element(e::NotUsed, "Free Form Message Text")
|
269
|
+
end # Segment/STC - Claim Level Status Information
|
270
|
+
segment(1100, s::REF, "Payer Claim Control Number", r::Situational, d::RepeatCount.bounded(1)) do
|
271
|
+
element(e::Required, "Reference Identification Qualifier", values("1K"))
|
272
|
+
element(e::Required, "Payer Claim Control Number")
|
273
|
+
element(e::NotUsed, "Description")
|
274
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
275
|
+
end # Segment/REF - Payer Claim Control Number
|
276
|
+
segment(1100, s::REF, "Institutional Bill Type Identification", r::Situational, d::RepeatCount.bounded(1)) do
|
277
|
+
element(e::Required, "Reference Identification Qualifier", values("BLT"))
|
278
|
+
element(e::Required, "Bill Type Identifier")
|
279
|
+
element(e::NotUsed, "Description")
|
280
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
281
|
+
end # Segment/REF - Institutional Bill Type Identification
|
282
|
+
segment(1100, s::REF, "Patient Control Number", r::Situational, d::RepeatCount.bounded(1)) do
|
283
|
+
element(e::Required, "Reference Identification Qualifier", values("EJ"))
|
284
|
+
element(e::Required, "Patient Control Number")
|
285
|
+
element(e::NotUsed, "Description")
|
286
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
287
|
+
end # Segment/REF - Patient Control Number
|
288
|
+
segment(1100, s::REF, "Pharmacy Prescription Number", r::Situational, d::RepeatCount.bounded(1)) do
|
289
|
+
element(e::Required, "Reference Identification Qualifier", values("XZ"))
|
290
|
+
element(e::Required, "Pharmacy Prescription Number")
|
291
|
+
element(e::NotUsed, "Description")
|
292
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
293
|
+
end # Segment/REF - Pharmacy Prescription Number
|
294
|
+
segment(1100, s::REF, "Voucher Identifier", r::Situational, d::RepeatCount.bounded(1)) do
|
295
|
+
element(e::Required, "Reference Identification Qualifier", values("VV"))
|
296
|
+
element(e::Required, "Voucher Identifier")
|
297
|
+
element(e::NotUsed, "Description")
|
298
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
299
|
+
end # Segment/REF - Voucher Identifier
|
300
|
+
segment(1100, s::REF, "Claim Identifier Number for Clearinghous and Other Transmission Intermediaries", r::Situational, d::RepeatCount.bounded(1)) do
|
301
|
+
element(e::Required, "Reference Identification Qualifier", values("D9"))
|
302
|
+
element(e::Required, "Clearinghouse Trace Number")
|
303
|
+
element(e::NotUsed, "Description")
|
304
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
305
|
+
end # Segment/REF - Claim Identifier Number for Clearinghouses and...
|
306
|
+
segment(1200, s::DTP, "Claim Level Service Date", r::Situational, d::RepeatCount.bounded(1)) do
|
307
|
+
element(e::Required, "Date Time Qualifier", values("472"))
|
308
|
+
element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
|
309
|
+
element(e::Required, "Claim Service Period")
|
310
|
+
end # Segment/DTP - Claim Level Service Date
|
311
|
+
|
312
|
+
loop_("2220D SERVICE LINE INFORMATION", d::RepeatCount.unbounded) do
|
313
|
+
segment(1800, s::SVC, "Service Line Information", r::Situational, d::RepeatCount.bounded(1)) do
|
314
|
+
composite(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER") do
|
315
|
+
element(e::Required, "Product or Service ID Qualifier", values("AD", "ER", "HC", "HP", "IV", "NU", "WK"))
|
316
|
+
element(e::Required, "Procedure Code")
|
317
|
+
element(e::Situational, "Procedure Modifier")
|
318
|
+
element(e::Situational, "Procedure Modifier")
|
319
|
+
element(e::Situational, "Procedure Modifier")
|
320
|
+
element(e::Situational, "Procedure Modifier")
|
321
|
+
element(e::NotUsed, "Description")
|
322
|
+
element(e::NotUsed, "Product/Service ID")
|
323
|
+
end # composite/medical procedure identifier
|
324
|
+
element(e::Required, "Line Item Charge Amount")
|
325
|
+
element(e::Required, "Line Item Payment Amount")
|
326
|
+
element(e::Situational, "Revenue Code")
|
327
|
+
element(e::NotUsed, "Quantity")
|
328
|
+
element(e::NotUsed, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER")
|
329
|
+
element(e::Required, "Units of Service Count")
|
330
|
+
end # Segment/SVC - Service Line Information
|
331
|
+
|
332
|
+
segment(1900, s::STC, "Service Line Level Status Information", r::Required, d::RepeatCount.unbounded) do
|
333
|
+
composite(e::Required, "HEALTH CARE CLAIM STATUS") do
|
334
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
335
|
+
element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
|
336
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
337
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
338
|
+
end # composite/ health care claim status
|
339
|
+
element(e::Required, "Statue Information Effective Date")
|
340
|
+
element(e::NotUsed, "Action Code")
|
341
|
+
element(e::NotUsed, "Monetary Amount")
|
342
|
+
element(e::NotUsed, "Monetary Amount")
|
343
|
+
element(e::NotUsed, "Date")
|
344
|
+
element(e::NotUsed, "Payment Method Code")
|
345
|
+
element(e::NotUsed, "Date")
|
346
|
+
element(e::NotUsed, "Check Number")
|
347
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
348
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
349
|
+
element(e::Required, "Health Care Claim Status Code") # @todo: CodeSource.external("508")
|
350
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
351
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
352
|
+
end # composite/Health care claims
|
353
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
354
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
355
|
+
element(e::Required, "Health Care Claim Status Code")
|
356
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
357
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
358
|
+
end # composite/Health care claim status
|
359
|
+
element(e::NotUsed, "Free Form Message Text")
|
360
|
+
end # Segment/STC - Service Line Level Information
|
361
|
+
segment(2000, s::REF, "Service Line Item Identification", r::Situational, d::RepeatCount.bounded(1)) do
|
362
|
+
element(e::Required, "Reference Identification Qualifier", values("FJ"))
|
363
|
+
element(e::Required, "Line Item Control Number")
|
364
|
+
element(e::NotUsed, "Description")
|
365
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
366
|
+
end # Segment/REF - Service Line item Identification
|
367
|
+
segment(2100, s::DTP, "Service Line Date", r::Required, d::RepeatCount.bounded(1)) do
|
368
|
+
element(e::Required, "Date Time Qualifier", values("472"))
|
369
|
+
element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
|
370
|
+
element(e::Required, "Service Line Date")
|
371
|
+
end # Segment/DTP - Service Line Date
|
372
|
+
end # Loop/2220D - Service Line Information
|
373
|
+
end # Loop/2200D - Claim Status Tracking Number
|
374
|
+
end # Loop/2000D - Subscriber Level
|
375
|
+
end # Table/2 - Subscriber Detail
|
376
|
+
table_detail("2 - Dependent Detail") do
|
377
|
+
loop_("2000E DEPENDENT LEVEL", d::RepeatCount.unbounded) do
|
378
|
+
segment(100, s::HL, "Dependent Level", r::Situational, d::RepeatCount.bounded(1)) do
|
379
|
+
element(e::Required, "Hierarchical ID Number")
|
380
|
+
element(e::Required, "Hierarchical Parent ID Number")
|
381
|
+
element(e::Required, "Hierarchical Level Code", values("23"))
|
382
|
+
element(e::NotUsed, "Hierachical Child Code")
|
383
|
+
end # Segment/HL - Dependent Level
|
384
|
+
|
385
|
+
loop_("2100E DEPENDENT NAME", d::RepeatCount.bounded(1)) do
|
386
|
+
segment(500, s::NM1, "Dependent Name", r::Required, d::RepeatCount.bounded(1)) do
|
387
|
+
element(e::Required, "Entity Identifier Code", values("QC"))
|
388
|
+
element(e::Required, "Entity Type Qualifier", values("1"))
|
389
|
+
element(e::Required, "Patient Last Name")
|
390
|
+
element(e::Situational, "Patient First Name")
|
391
|
+
element(e::Situational, "Patient Last Name")
|
392
|
+
element(e::NotUsed, "Name Prefix")
|
393
|
+
element(e::Situational, "Patient Name Suffix")
|
394
|
+
element(e::NotUsed, "Identification Code Qualifier")
|
395
|
+
element(e::NotUsed, "Subscriber Identification Number")
|
396
|
+
element(e::NotUsed, "Entity Relationship Code")
|
397
|
+
element(e::NotUsed, "Entity Identifier Code")
|
398
|
+
element(e::NotUsed, "Name Last or Organization Name")
|
399
|
+
end # Segment/NM1 - Dependent Name
|
400
|
+
end # Loop/2100D - Subscriber name
|
401
|
+
loop_("2200E CLAIM STATUS TRACKING NUMBER", d::RepeatCount.unbounded) do
|
402
|
+
segment(900, s::TRN, "Claim Status Tracking Number", r::Required, d::RepeatCount.bounded(1)) do
|
403
|
+
element(e::Required, "Trace Type Code", values("2"))
|
404
|
+
element(e::Required, "Reference Transaction Trace Number")
|
405
|
+
element(e::NotUsed, "Originating Company Identifier")
|
406
|
+
element(e::NotUsed, "Reference Identification")
|
407
|
+
end # Segment/TRN - Claim Status Tracking Number
|
408
|
+
segment(1000, s::STC, "Claim Level Status Information", r::Required, d::RepeatCount.unbounded) do
|
409
|
+
composite(e::Required, "HEALTH CARE CLAIM STATUS") do
|
410
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
411
|
+
element(e::Required, "Status Code")
|
412
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
413
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
414
|
+
end # Composite/Health care claim status
|
415
|
+
element(e::Required, "Status Information Effective Date")
|
416
|
+
element(e::NotUsed, "Action Code")
|
417
|
+
element(e::Situational, "Total Claim Charge Amount")
|
418
|
+
element(e::Situational, "Claim Payment Amount")
|
419
|
+
element(e::Situational, "Adjudication Finalized Date")
|
420
|
+
element(e::NotUsed, "Payment Method Code")
|
421
|
+
element(e::Situational, "Remittance Date")
|
422
|
+
element(e::Situational, "Remittance Trace Number")
|
423
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
424
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
425
|
+
element(e::Required, "Health Care Claim Status Code")
|
426
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
427
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
428
|
+
end # Composite/Health Care Claim Status
|
429
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
430
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
431
|
+
element(e::Required, "Health Care Claim Status Code")
|
432
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
433
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
434
|
+
end # Composite/Health Care Claim Status
|
435
|
+
element(e::NotUsed, "Free Form Message Text")
|
436
|
+
end # Segment/STC - Claim Level Status Information
|
437
|
+
segment(1100, s::REF, "Payer Claim Control Number", r::Situational, d::RepeatCount.bounded(1)) do
|
438
|
+
element(e::Required, "Reference Identification Qualifier", values("1K"))
|
439
|
+
element(e::Required, "Payer Claim Control Number")
|
440
|
+
element(e::NotUsed, "Description")
|
441
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
442
|
+
end # Segment/REF - Payer Claim Control Number
|
443
|
+
segment(1100, s::REF, "Institutional Bill Type Identification", r::Situational, d::RepeatCount.bounded(1)) do
|
444
|
+
element(e::Required, "Reference Identification Qualifier", values("BLT"))
|
445
|
+
element(e::Required, "Institutional Bill Type Identification")
|
446
|
+
element(e::NotUsed, "Description")
|
447
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
448
|
+
end # Segment/REF - Institutional Bill Type Identification
|
449
|
+
segment(1100, s::REF, "Patient Control Number", r::Situational, d::RepeatCount.bounded(1)) do
|
450
|
+
element(e::Required, "Reference Identification Qualifier", values("EJ"))
|
451
|
+
element(e::Required, "Patient Control Number")
|
452
|
+
element(e::NotUsed, "Description")
|
453
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
454
|
+
end # Segment/REF - Patient Control Number
|
455
|
+
segment(1100, s::REF, "Pharmacy Prescription Number", r::Situational, d::RepeatCount.bounded(1)) do
|
456
|
+
element(e::Required, "Reference Identification Qualifier", values("XZ"))
|
457
|
+
element(e::Required, "Pharmacy Prescription Number")
|
458
|
+
element(e::NotUsed, "Description")
|
459
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
460
|
+
end # Segment/REF - Pharmacy Prescription Number
|
461
|
+
segment(1100, s::REF, "Voucher Identifier", r::Situational, d::RepeatCount.bounded(1)) do
|
462
|
+
element(e::Required, "Reference Identification Qualifier", values("VV"))
|
463
|
+
element(e::Required, "Pharmacy Prescription Number")
|
464
|
+
element(e::NotUsed, "Description")
|
465
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
466
|
+
end # Segment/REF - Voucher Identifier
|
467
|
+
segment(1100, s::REF, "Claim Identifier Number for Clearinghous and Other Transmission Intermediaries", r::Situational, d::RepeatCount.bounded(3)) do
|
468
|
+
element(e::Required, "Reference Identification Qualifier", values("D9"))
|
469
|
+
element(e::Required, "Clearinghouse Trace Number")
|
470
|
+
element(e::NotUsed, "Description")
|
471
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
472
|
+
end # Segment/REF - Claim Identifier Number for Clearinghouses and...
|
473
|
+
segment(1200, s::DTP, "Claim Level Service Date", r::Situational, d::RepeatCount.bounded(1)) do
|
474
|
+
element(e::Required, "Date Time Qualifier", values("472"))
|
475
|
+
element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
|
476
|
+
element(e::Required, "Claim Service Period")
|
477
|
+
end # Segment/DTP - Claim Level Service Date
|
478
|
+
|
479
|
+
loop_("2220E SERVICE LINE INFORMATION", d::RepeatCount.unbounded) do
|
480
|
+
segment(1800, s::SVC, "Service Line Information", r::Situational, d::RepeatCount.bounded(1)) do
|
481
|
+
composite(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER") do
|
482
|
+
element(e::Required, "Product or Service ID Qualifier", values("AD", "ER", "HC", "HP", "IV", "NU", "WK"))
|
483
|
+
element(e::Required, "Procedure Code")
|
484
|
+
element(e::Situational, "Procedure Modifier")
|
485
|
+
element(e::Situational, "Procedure Modifier")
|
486
|
+
element(e::Situational, "Procedure Modifier")
|
487
|
+
element(e::Situational, "Procedure Modifier")
|
488
|
+
element(e::NotUsed, "Description")
|
489
|
+
element(e::NotUsed, "Product/Service ID")
|
490
|
+
end # composite/medical procedure identifier
|
491
|
+
element(e::Required, "Line Item Charge Amount")
|
492
|
+
element(e::Required, "Line Item Payment Amount")
|
493
|
+
element(e::Situational, "Revenue Code")
|
494
|
+
element(e::NotUsed, "Quantity")
|
495
|
+
element(e::NotUsed, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER")
|
496
|
+
element(e::Required, "Units of Service Count")
|
497
|
+
end # Segment/SVC - Service Line Information
|
498
|
+
segment(1900, s::STC, "Service Line Level Status Information", r::Required, d::RepeatCount.unbounded) do
|
499
|
+
composite(e::Required, "HEALTH CARE CLAIM STATUS") do
|
500
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
501
|
+
element(e::Required, "Status Code") # @todo: CodeSource.external("508")
|
502
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
503
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
504
|
+
end # composite/ health care claim status
|
505
|
+
element(e::Required, "Status Information Effective Date")
|
506
|
+
element(e::NotUsed, "Action Code")
|
507
|
+
element(e::NotUsed, "Monetary Amount")
|
508
|
+
element(e::NotUsed, "Monetary Amount")
|
509
|
+
element(e::NotUsed, "Date")
|
510
|
+
element(e::NotUsed, "Payment Method Code")
|
511
|
+
element(e::NotUsed, "Date")
|
512
|
+
element(e::NotUsed, "Check Number")
|
513
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
514
|
+
element(e::Required, "Health Care Claim Status Category Code") # @todo: CodeSource.external("507")
|
515
|
+
element(e::Required, "Status Code") # @todo: CodeSource.external("508")
|
516
|
+
|
517
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
518
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
519
|
+
end # composite/Health care claims
|
520
|
+
composite(e::Situational, "HEALTH CARE CLAIM STATUS") do
|
521
|
+
element(e::Required, "Health Care Claim Status Category Code")
|
522
|
+
element(e::Required, "Health Care Claim Status Code")
|
523
|
+
element(e::Situational, "Entity Identifier Code", values(*entity_values))
|
524
|
+
element(e::Situational, "Code List Qualifier Code", values("RX"))
|
525
|
+
end # composite/Health care claim status
|
526
|
+
element(e::NotUsed, "Free Form Message Text")
|
527
|
+
end # Segment/STC - Service Line Level Information
|
528
|
+
segment(2000, s::REF, "Service Line Item Identification", r::Situational, d::RepeatCount.bounded(1)) do
|
529
|
+
element(e::Required, "Reference Identification Qualifier", values("FJ"))
|
530
|
+
element(e::Required, "Line Item Control Number")
|
531
|
+
element(e::NotUsed, "Description")
|
532
|
+
element(e::NotUsed, "REFERENCE IDENTIFIER")
|
533
|
+
end # Segment/REF - Service Line item Identification
|
534
|
+
segment(2100, s::DTP, "Service Line Date", r::Required, d::RepeatCount.bounded(1)) do
|
535
|
+
element(e::Required, "Date Time Qualifier", values("472"))
|
536
|
+
element(e::Required, "Date Time Period Format Qualifier", values("D8", "RD8"))
|
537
|
+
element(e::Required, "Service Line Date")
|
538
|
+
end # Segment/DTP - Service Line Date
|
539
|
+
end # Loop/2220D - Service Line Information
|
540
|
+
end # Loop/2200D - Claim Status Tracking Number
|
541
|
+
end # Loop/2000E - Subscriber Level
|
542
|
+
segment(2700, s::SE, "Transaction Set Trailer", r::Required, d::RepeatCount.bounded(1)) do
|
543
|
+
element(e::Required, "Transaction Segment Count")
|
544
|
+
element(e::Required, "Transaction Set Control Number")
|
545
|
+
end
|
546
|
+
end # Table/2 - Dependent Detail
|
547
|
+
end
|
548
|
+
end
|
549
|
+
end
|
550
|
+
end
|
551
|
+
end
|
552
|
+
end
|