stupidedi 1.4.0 → 1.4.1
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 +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
|