stupidedi 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (500) hide show
  1. data/README.md +215 -0
  2. data/Rakefile +108 -0
  3. data/bin/edi-ed +71 -0
  4. data/bin/edi-pp +81 -0
  5. data/doc/Defining.md +0 -0
  6. data/doc/Generating.md +321 -0
  7. data/doc/LICENSE.md +0 -0
  8. data/doc/Navigating.md +645 -0
  9. data/doc/Parsing.md +0 -0
  10. data/doc/Serializing.md +7 -0
  11. data/doc/Tokenizing.md +0 -0
  12. data/doc/Validating.md +0 -0
  13. data/doc/design/Parser.md +0 -0
  14. data/doc/design/Reader.md +0 -0
  15. data/lib/ruby/array.rb +164 -0
  16. data/lib/ruby/blank.rb +67 -0
  17. data/lib/ruby/enumerable.rb +35 -0
  18. data/lib/ruby/exception.rb +33 -0
  19. data/lib/ruby/hash.rb +4 -0
  20. data/lib/ruby/instance_exec.rb +26 -0
  21. data/lib/ruby/module.rb +79 -0
  22. data/lib/ruby/object.rb +63 -0
  23. data/lib/ruby/string.rb +73 -0
  24. data/lib/ruby/symbol.rb +24 -0
  25. data/lib/ruby/to_d.rb +81 -0
  26. data/lib/ruby/to_date.rb +33 -0
  27. data/lib/ruby/to_time.rb +24 -0
  28. data/lib/ruby/try.rb +43 -0
  29. data/lib/stupidedi/blank_slate.rb +11 -0
  30. data/lib/stupidedi/builder/builder_dsl.rb +281 -0
  31. data/lib/stupidedi/builder/constraint_table.rb +418 -0
  32. data/lib/stupidedi/builder/generation.rb +112 -0
  33. data/lib/stupidedi/builder/instruction.rb +102 -0
  34. data/lib/stupidedi/builder/instruction_table.rb +204 -0
  35. data/lib/stupidedi/builder/navigation.rb +655 -0
  36. data/lib/stupidedi/builder/state_machine.rb +55 -0
  37. data/lib/stupidedi/builder/states/abstract_state.rb +332 -0
  38. data/lib/stupidedi/builder/states/failure_state.rb +69 -0
  39. data/lib/stupidedi/builder/states/functional_group_state.rb +97 -0
  40. data/lib/stupidedi/builder/states/initial_state.rb +63 -0
  41. data/lib/stupidedi/builder/states/interchange_state.rb +94 -0
  42. data/lib/stupidedi/builder/states/loop_state.rb +79 -0
  43. data/lib/stupidedi/builder/states/table_state.rb +96 -0
  44. data/lib/stupidedi/builder/states/transaction_set_state.rb +112 -0
  45. data/lib/stupidedi/builder/states/transmission_state.rb +59 -0
  46. data/lib/stupidedi/builder/tokenization.rb +196 -0
  47. data/lib/stupidedi/builder.rb +23 -0
  48. data/lib/stupidedi/color.rb +93 -0
  49. data/lib/stupidedi/config/code_list_config.rb +42 -0
  50. data/lib/stupidedi/config/editor_config.rb +51 -0
  51. data/lib/stupidedi/config/functional_group_config.rb +62 -0
  52. data/lib/stupidedi/config/interchange_config.rb +79 -0
  53. data/lib/stupidedi/config/transaction_set_config.rb +91 -0
  54. data/lib/stupidedi/config.rb +101 -0
  55. data/lib/stupidedi/editor/00501.rb +341 -0
  56. data/lib/stupidedi/editor/005010/N2.rb +0 -0
  57. data/lib/stupidedi/editor/005010/N3.rb +0 -0
  58. data/lib/stupidedi/editor/005010/N4.rb +63 -0
  59. data/lib/stupidedi/editor/005010/NM1.rb +0 -0
  60. data/lib/stupidedi/editor/005010.rb +469 -0
  61. data/lib/stupidedi/editor/X222-HC837.rb +195 -0
  62. data/lib/stupidedi/editor/abstract_ed.rb +36 -0
  63. data/lib/stupidedi/editor/claim_ack.rb +9 -0
  64. data/lib/stupidedi/editor/implementation_ack.rb +213 -0
  65. data/lib/stupidedi/editor/interchange_ack.rb +9 -0
  66. data/lib/stupidedi/editor/result.rb +100 -0
  67. data/lib/stupidedi/editor/result_set.rb +69 -0
  68. data/lib/stupidedi/editor/transaction_set_ed.rb +275 -0
  69. data/lib/stupidedi/editor/transmission_ed.rb +90 -0
  70. data/lib/stupidedi/editor.rb +37 -0
  71. data/lib/stupidedi/either.rb +287 -0
  72. data/lib/stupidedi/exceptions/invalid_element_error.rb +8 -0
  73. data/lib/stupidedi/exceptions/invalid_schema_error.rb +8 -0
  74. data/lib/stupidedi/exceptions/output_error.rb +8 -0
  75. data/lib/stupidedi/exceptions/parse_error.rb +8 -0
  76. data/lib/stupidedi/exceptions/stupidedi_error.rb +8 -0
  77. data/lib/stupidedi/exceptions/tokenize_error.rb +8 -0
  78. data/lib/stupidedi/exceptions/zipper_error.rb +8 -0
  79. data/lib/stupidedi/exceptions.rb +11 -0
  80. data/lib/stupidedi/guides/005010/X214-HN277.rb +409 -0
  81. data/lib/stupidedi/guides/005010/X221-HP835.rb +613 -0
  82. data/lib/stupidedi/guides/005010/X221A1-HP835.rb +613 -0
  83. data/lib/stupidedi/guides/005010/X222-HC837P.rb +2291 -0
  84. data/lib/stupidedi/guides/005010/X222A1-HC837P.rb +2297 -0
  85. data/lib/stupidedi/guides/005010/X231-FA999.rb +123 -0
  86. data/lib/stupidedi/guides/005010/X231A1-FA999.rb +119 -0
  87. data/lib/stupidedi/guides/005010/element_reqs.rb +38 -0
  88. data/lib/stupidedi/guides/005010/guide_builder.rb +180 -0
  89. data/lib/stupidedi/guides/005010/segment_reqs.rb +32 -0
  90. data/lib/stupidedi/guides/005010.rb +64 -0
  91. data/lib/stupidedi/guides.rb +5 -0
  92. data/lib/stupidedi/inspect.rb +26 -0
  93. data/lib/stupidedi/reader/input/abstract_input.rb +133 -0
  94. data/lib/stupidedi/reader/input/delegated_input.rb +111 -0
  95. data/lib/stupidedi/reader/input/file_input.rb +155 -0
  96. data/lib/stupidedi/reader/input.rb +30 -0
  97. data/lib/stupidedi/reader/position.rb +69 -0
  98. data/lib/stupidedi/reader/result.rb +168 -0
  99. data/lib/stupidedi/reader/segment_dict.rb +175 -0
  100. data/lib/stupidedi/reader/separators.rb +85 -0
  101. data/lib/stupidedi/reader/stream_reader.rb +172 -0
  102. data/lib/stupidedi/reader/token_reader.rb +466 -0
  103. data/lib/stupidedi/reader/tokens/component_element_tok.rb +56 -0
  104. data/lib/stupidedi/reader/tokens/composite_element_tok.rb +64 -0
  105. data/lib/stupidedi/reader/tokens/repeated_element_tok.rb +64 -0
  106. data/lib/stupidedi/reader/tokens/segment_tok.rb +51 -0
  107. data/lib/stupidedi/reader/tokens/simple_element_tok.rb +63 -0
  108. data/lib/stupidedi/reader.rb +121 -0
  109. data/lib/stupidedi/schema/abstract_def.rb +74 -0
  110. data/lib/stupidedi/schema/abstract_use.rb +73 -0
  111. data/lib/stupidedi/schema/code_list.rb +94 -0
  112. data/lib/stupidedi/schema/element_def.rb +173 -0
  113. data/lib/stupidedi/schema/element_req.rb +56 -0
  114. data/lib/stupidedi/schema/element_use.rb +251 -0
  115. data/lib/stupidedi/schema/functional_group_def.rb +114 -0
  116. data/lib/stupidedi/schema/interchange_def.rb +93 -0
  117. data/lib/stupidedi/schema/loop_def.rb +152 -0
  118. data/lib/stupidedi/schema/repeat_count.rb +85 -0
  119. data/lib/stupidedi/schema/segment_def.rb +108 -0
  120. data/lib/stupidedi/schema/segment_req.rb +43 -0
  121. data/lib/stupidedi/schema/segment_use.rb +98 -0
  122. data/lib/stupidedi/schema/syntax_note.rb +63 -0
  123. data/lib/stupidedi/schema/table_def.rb +139 -0
  124. data/lib/stupidedi/schema/transaction_set_def.rb +88 -0
  125. data/lib/stupidedi/schema.rb +28 -0
  126. data/lib/stupidedi/sets/absolute_set.rb +297 -0
  127. data/lib/stupidedi/sets/abstract_set.rb +174 -0
  128. data/lib/stupidedi/sets/null_set.rb +125 -0
  129. data/lib/stupidedi/sets/relative_complement.rb +137 -0
  130. data/lib/stupidedi/sets/relative_set.rb +269 -0
  131. data/lib/stupidedi/sets/universal_set.rb +104 -0
  132. data/lib/stupidedi/sets.rb +57 -0
  133. data/lib/stupidedi/tail_call.rb +109 -0
  134. data/lib/stupidedi/thread_local.rb +174 -0
  135. data/lib/stupidedi/values/abstract_element_val.rb +19 -0
  136. data/lib/stupidedi/values/abstract_val.rb +130 -0
  137. data/lib/stupidedi/values/composite_element_val.rb +95 -0
  138. data/lib/stupidedi/values/functional_group_val.rb +102 -0
  139. data/lib/stupidedi/values/interchange_val.rb +86 -0
  140. data/lib/stupidedi/values/invalid_envelope_val.rb +61 -0
  141. data/lib/stupidedi/values/invalid_segment_val.rb +78 -0
  142. data/lib/stupidedi/values/loop_val.rb +70 -0
  143. data/lib/stupidedi/values/repeated_element_val.rb +105 -0
  144. data/lib/stupidedi/values/segment_val.rb +104 -0
  145. data/lib/stupidedi/values/segment_val_group.rb +20 -0
  146. data/lib/stupidedi/values/simple_element_val.rb +80 -0
  147. data/lib/stupidedi/values/table_val.rb +66 -0
  148. data/lib/stupidedi/values/transaction_set_val.rb +66 -0
  149. data/lib/stupidedi/values/transmission_val.rb +52 -0
  150. data/lib/stupidedi/values.rb +21 -0
  151. data/lib/stupidedi/version.rb +3 -0
  152. data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +54 -0
  153. data/lib/stupidedi/versions/functional_groups/004010/element_reqs.rb +18 -0
  154. data/lib/stupidedi/versions/functional_groups/004010/element_types/date_val.rb +527 -0
  155. data/lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb +335 -0
  156. data/lib/stupidedi/versions/functional_groups/004010/element_types/float_val.rb +299 -0
  157. data/lib/stupidedi/versions/functional_groups/004010/element_types/identifier_val.rb +287 -0
  158. data/lib/stupidedi/versions/functional_groups/004010/element_types/string_val.rb +338 -0
  159. data/lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb +309 -0
  160. data/lib/stupidedi/versions/functional_groups/004010/element_types.rb +124 -0
  161. data/lib/stupidedi/versions/functional_groups/004010/functional_group_def.rb +30 -0
  162. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/GE.rb +20 -0
  163. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/GS.rb +27 -0
  164. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/SE.rb +20 -0
  165. data/lib/stupidedi/versions/functional_groups/004010/segment_defs/ST.rb +20 -0
  166. data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +23 -0
  167. data/lib/stupidedi/versions/functional_groups/004010/segment_reqs.rb +18 -0
  168. data/lib/stupidedi/versions/functional_groups/004010/syntax_notes.rb +174 -0
  169. data/lib/stupidedi/versions/functional_groups/004010.rb +38 -0
  170. data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +1405 -0
  171. data/lib/stupidedi/versions/functional_groups/005010/element_reqs.rb +18 -0
  172. data/lib/stupidedi/versions/functional_groups/005010/element_types/date_val.rb +577 -0
  173. data/lib/stupidedi/versions/functional_groups/005010/element_types/fixnum_val.rb +322 -0
  174. data/lib/stupidedi/versions/functional_groups/005010/element_types/float_val.rb +354 -0
  175. data/lib/stupidedi/versions/functional_groups/005010/element_types/identifier_val.rb +368 -0
  176. data/lib/stupidedi/versions/functional_groups/005010/element_types/operators.rb +117 -0
  177. data/lib/stupidedi/versions/functional_groups/005010/element_types/string_val.rb +398 -0
  178. data/lib/stupidedi/versions/functional_groups/005010/element_types/time_val.rb +327 -0
  179. data/lib/stupidedi/versions/functional_groups/005010/element_types.rb +132 -0
  180. data/lib/stupidedi/versions/functional_groups/005010/functional_group_def.rb +30 -0
  181. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK1.rb +21 -0
  182. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK2.rb +21 -0
  183. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK9.rb +28 -0
  184. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AMT.rb +21 -0
  185. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BHT.rb +24 -0
  186. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BPR.rb +49 -0
  187. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CAS.rb +56 -0
  188. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CL1.rb +22 -0
  189. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CLM.rb +41 -0
  190. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CLP.rb +34 -0
  191. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CN1.rb +24 -0
  192. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR1.rb +32 -0
  193. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR2.rb +35 -0
  194. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR3.rb +25 -0
  195. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CRC.rb +26 -0
  196. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CTP.rb +36 -0
  197. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CTX.rb +24 -0
  198. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CUR.rb +57 -0
  199. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DMG.rb +34 -0
  200. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DN1.rb +22 -0
  201. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DN2.rb +24 -0
  202. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DTM.rb +24 -0
  203. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DTP.rb +21 -0
  204. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/FRM.rb +25 -0
  205. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/GE.rb +20 -0
  206. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/GS.rb +27 -0
  207. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HCP.rb +39 -0
  208. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HI.rb +31 -0
  209. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HL.rb +22 -0
  210. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK3.rb +22 -0
  211. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK4.rb +22 -0
  212. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK5.rb +24 -0
  213. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/K3.rb +21 -0
  214. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LIN.rb +69 -0
  215. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LQ.rb +22 -0
  216. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LX.rb +19 -0
  217. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MEA.rb +39 -0
  218. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MIA.rb +45 -0
  219. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MOA.rb +28 -0
  220. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N1.rb +24 -0
  221. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N2.rb +20 -0
  222. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N3.rb +20 -0
  223. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N4.rb +30 -0
  224. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/NM1.rb +35 -0
  225. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/NTE.rb +20 -0
  226. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/OI.rb +24 -0
  227. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PAT.rb +31 -0
  228. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PER.rb +32 -0
  229. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PLB.rb +40 -0
  230. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PRV.rb +26 -0
  231. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PS1.rb +21 -0
  232. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PWK.rb +30 -0
  233. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/QTY.rb +25 -0
  234. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/RDM.rb +23 -0
  235. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/REF.rb +23 -0
  236. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SBR.rb +28 -0
  237. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SE.rb +20 -0
  238. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/ST.rb +21 -0
  239. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/STC.rb +30 -0
  240. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV1.rb +44 -0
  241. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV2.rb +29 -0
  242. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV3.rb +30 -0
  243. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV5.rb +29 -0
  244. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SVC.rb +26 -0
  245. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SVD.rb +24 -0
  246. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TOO.rb +21 -0
  247. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TRN.rb +22 -0
  248. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TS2.rb +40 -0
  249. data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TS3.rb +45 -0
  250. data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +227 -0
  251. data/lib/stupidedi/versions/functional_groups/005010/segment_reqs.rb +18 -0
  252. data/lib/stupidedi/versions/functional_groups/005010/syntax_notes.rb +165 -0
  253. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/FA999.rb +38 -0
  254. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +85 -0
  255. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HC837.rb +163 -0
  256. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HI278.rb +64 -0
  257. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HN277.rb +74 -0
  258. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835.rb +68 -0
  259. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HR276.rb +57 -0
  260. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270.rb +53 -0
  261. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/RA820.rb +240 -0
  262. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +68 -0
  263. data/lib/stupidedi/versions/functional_groups/005010.rb +38 -0
  264. data/lib/stupidedi/versions/functional_groups.rb +8 -0
  265. data/lib/stupidedi/versions/interchanges/00401/element_defs.rb +224 -0
  266. data/lib/stupidedi/versions/interchanges/00401/interchange_def.rb +45 -0
  267. data/lib/stupidedi/versions/interchanges/00401/segment_defs/IEA.rb +20 -0
  268. data/lib/stupidedi/versions/interchanges/00401/segment_defs/ISA.rb +34 -0
  269. data/lib/stupidedi/versions/interchanges/00401/segment_defs/TA1.rb +23 -0
  270. data/lib/stupidedi/versions/interchanges/00401/segment_defs.rb +28 -0
  271. data/lib/stupidedi/versions/interchanges/00401.rb +23 -0
  272. data/lib/stupidedi/versions/interchanges/00501/element_defs.rb +269 -0
  273. data/lib/stupidedi/versions/interchanges/00501/interchange_def.rb +47 -0
  274. data/lib/stupidedi/versions/interchanges/00501/segment_defs/IEA.rb +20 -0
  275. data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISA.rb +34 -0
  276. data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISB.rb +18 -0
  277. data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISE.rb +18 -0
  278. data/lib/stupidedi/versions/interchanges/00501/segment_defs/TA1.rb +23 -0
  279. data/lib/stupidedi/versions/interchanges/00501/segment_defs/TA3.rb +18 -0
  280. data/lib/stupidedi/versions/interchanges/00501/segment_defs.rb +37 -0
  281. data/lib/stupidedi/versions/interchanges/00501.rb +23 -0
  282. data/lib/stupidedi/versions/interchanges.rb +8 -0
  283. data/lib/stupidedi/versions.rb +6 -0
  284. data/lib/stupidedi/writer/claredi.rb +142 -0
  285. data/lib/stupidedi/writer/default.rb +124 -0
  286. data/lib/stupidedi/writer.rb +6 -0
  287. data/lib/stupidedi/zipper/abstract_cursor.rb +351 -0
  288. data/lib/stupidedi/zipper/dangling_cursor.rb +103 -0
  289. data/lib/stupidedi/zipper/edited_cursor.rb +157 -0
  290. data/lib/stupidedi/zipper/memoized_cursor.rb +131 -0
  291. data/lib/stupidedi/zipper/path.rb +124 -0
  292. data/lib/stupidedi/zipper/root_cursor.rb +120 -0
  293. data/lib/stupidedi/zipper.rb +25 -0
  294. data/lib/stupidedi.rb +66 -0
  295. data/spec/examples/integration/generating.example +551 -0
  296. data/spec/examples/integration/navigating.example +214 -0
  297. data/spec/examples/integration/parsing.example +445 -0
  298. data/spec/examples/ruby/array.example +476 -0
  299. data/spec/examples/ruby/blank.example +62 -0
  300. data/spec/examples/ruby/count.example +68 -0
  301. data/spec/examples/ruby/object.example +99 -0
  302. data/spec/examples/ruby/string.example +111 -0
  303. data/spec/examples/ruby/symbol.example +117 -0
  304. data/spec/examples/ruby/to_d.example +90 -0
  305. data/spec/examples/ruby/try.example +50 -0
  306. data/spec/examples/stupidedi/either.example +375 -0
  307. data/spec/examples/stupidedi/reader/failure.example +68 -0
  308. data/spec/examples/stupidedi/reader/input/delegated_input.example +292 -0
  309. data/spec/examples/stupidedi/reader/separators.example +73 -0
  310. data/spec/examples/stupidedi/reader/stream_reader.example +48 -0
  311. data/spec/examples/stupidedi/reader/success.example +34 -0
  312. data/spec/examples/stupidedi/reader/token_reader.example +775 -0
  313. data/spec/examples/stupidedi/reader.example +168 -0
  314. data/spec/examples/stupidedi/sets/absolute_set.example +1577 -0
  315. data/spec/examples/stupidedi/sets/null_set.example +2 -0
  316. data/spec/examples/stupidedi/sets/relative_set.example +2 -0
  317. data/spec/examples/stupidedi/sets/universal_set.example +1 -0
  318. data/spec/examples/stupidedi/versions/005010/element_types/an.example +201 -0
  319. data/spec/examples/stupidedi/versions/005010/element_types/dt.example +258 -0
  320. data/spec/examples/stupidedi/versions/005010/element_types/id.example +192 -0
  321. data/spec/examples/stupidedi/versions/005010/element_types/nn.example +177 -0
  322. data/spec/examples/stupidedi/versions/005010/element_types/r.example +178 -0
  323. data/spec/examples/stupidedi/versions/005010/element_types/tm.example +2 -0
  324. data/spec/examples/stupidedi/zipper/abstract_cursor.example +417 -0
  325. data/spec/examples/stupidedi/zipper.example +9 -0
  326. data/spec/fixtures/X186-AG824/1-bad.txt +21 -0
  327. data/spec/fixtures/X186-AG824/1-good.txt +17 -0
  328. data/spec/fixtures/X186-AG824/2-bad.txt +26 -0
  329. data/spec/fixtures/X186-AG824/2-good.txt +21 -0
  330. data/spec/fixtures/X186-AG824/3-bad.txt +87 -0
  331. data/spec/fixtures/X186-AG824/3-good.txt +61 -0
  332. data/spec/fixtures/X212-HN277/1-bad.txt +54 -0
  333. data/spec/fixtures/X212-HN277/1-good.txt +46 -0
  334. data/spec/fixtures/X212-HN277/2-bad.txt +37 -0
  335. data/spec/fixtures/X212-HN277/2-good.txt +29 -0
  336. data/spec/fixtures/X212-HN277/3-bad.txt +22 -0
  337. data/spec/fixtures/X212-HN277/3-good.txt +17 -0
  338. data/spec/fixtures/X212-HN277/4-bad.txt +30 -0
  339. data/spec/fixtures/X212-HN277/4-good.txt +24 -0
  340. data/spec/fixtures/X212-HR276/1-bad.txt +53 -0
  341. data/spec/fixtures/X212-HR276/1-good.txt +46 -0
  342. data/spec/fixtures/X212-HR276/2-bad.txt +45 -0
  343. data/spec/fixtures/X212-HR276/2-good.txt +38 -0
  344. data/spec/fixtures/X212-HR276/3-bad.txt +32 -0
  345. data/spec/fixtures/X212-HR276/3-good.txt +26 -0
  346. data/spec/fixtures/X212-HR276/4-bad.txt +32 -0
  347. data/spec/fixtures/X212-HR276/4-good.txt +26 -0
  348. data/spec/fixtures/X214-HN277/1-bad.txt +58 -0
  349. data/spec/fixtures/X214-HN277/1-good.txt +47 -0
  350. data/spec/fixtures/X214-HN277/2-bad.txt +34 -0
  351. data/spec/fixtures/X214-HN277/2-good.txt +22 -0
  352. data/spec/fixtures/X214-HN277/3-bad.txt +64 -0
  353. data/spec/fixtures/X214-HN277/3-good.txt +54 -0
  354. data/spec/fixtures/X214-HN277/4-bad.txt +77 -0
  355. data/spec/fixtures/X214-HN277/4-good.txt +63 -0
  356. data/spec/fixtures/X216-HI278/1-bad.txt +42 -0
  357. data/spec/fixtures/X216-HI278/1-good.txt +27 -0
  358. data/spec/fixtures/X216-HI278/2-bad.txt +43 -0
  359. data/spec/fixtures/X216-HI278/2-good.txt +29 -0
  360. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-1.txt +24 -0
  361. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-1_Clean.txt +20 -0
  362. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-2.txt +46 -0
  363. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-2_Clean.txt +30 -0
  364. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-3.txt +38 -0
  365. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-3_Clean.txt +24 -0
  366. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4a.txt +39 -0
  367. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4a_Clean.txt +24 -0
  368. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4b.txt +43 -0
  369. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4b_Clean.txt +25 -0
  370. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-5.txt +63 -0
  371. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-5_Clean.txt +41 -0
  372. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-6.txt +36 -0
  373. data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-6_Clean.txt +20 -0
  374. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-1r.txt +34 -0
  375. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-1r_Clean.txt +23 -0
  376. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-2r.txt +46 -0
  377. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-2r_Clean.txt +31 -0
  378. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-3r.txt +44 -0
  379. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-3r_Clean.txt +26 -0
  380. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-4ar_Clean.txt +28 -0
  381. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-4br_Clean.txt +35 -0
  382. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-5r.txt +60 -0
  383. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-5r_Clean.txt +42 -0
  384. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-6r.txt +40 -0
  385. data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-6r_Clean.txt +24 -0
  386. data/spec/fixtures/X218-RA820/1-bad.txt +31 -0
  387. data/spec/fixtures/X218-RA820/1-good.txt +25 -0
  388. data/spec/fixtures/X218-RA820/2-bad.txt +37 -0
  389. data/spec/fixtures/X218-RA820/2-good.txt +29 -0
  390. data/spec/fixtures/X218-RA820/3-bad.txt +29 -0
  391. data/spec/fixtures/X218-RA820/3-good.txt +23 -0
  392. data/spec/fixtures/X218-RA820/4-bad.txt +36 -0
  393. data/spec/fixtures/X218-RA820/4-good.txt +27 -0
  394. data/spec/fixtures/X220-BE834/1-bad.txt +35 -0
  395. data/spec/fixtures/X220-BE834/1-good.txt +29 -0
  396. data/spec/fixtures/X220-BE834/10-bad.txt +26 -0
  397. data/spec/fixtures/X220-BE834/10-good.txt +19 -0
  398. data/spec/fixtures/X220-BE834/2-bad.txt +31 -0
  399. data/spec/fixtures/X220-BE834/2-good.txt +23 -0
  400. data/spec/fixtures/X220-BE834/3-bad.txt +36 -0
  401. data/spec/fixtures/X220-BE834/3-good.txt +26 -0
  402. data/spec/fixtures/X220-BE834/4-bad.txt +27 -0
  403. data/spec/fixtures/X220-BE834/4-good.txt +21 -0
  404. data/spec/fixtures/X220-BE834/5-bad.txt +26 -0
  405. data/spec/fixtures/X220-BE834/5-good.txt +17 -0
  406. data/spec/fixtures/X220-BE834/6-bad.txt +25 -0
  407. data/spec/fixtures/X220-BE834/6-good.txt +20 -0
  408. data/spec/fixtures/X220-BE834/7-bad.txt +25 -0
  409. data/spec/fixtures/X220-BE834/7-good.txt +20 -0
  410. data/spec/fixtures/X220-BE834/8-bad.txt +25 -0
  411. data/spec/fixtures/X220-BE834/8-good.txt +20 -0
  412. data/spec/fixtures/X220-BE834/9-bad.txt +27 -0
  413. data/spec/fixtures/X220-BE834/9-good.txt +21 -0
  414. data/spec/fixtures/X221-HP835/1-bad.txt +58 -0
  415. data/spec/fixtures/X221-HP835/1-good.txt +40 -0
  416. data/spec/fixtures/X221-HP835/2-bad.txt +51 -0
  417. data/spec/fixtures/X221-HP835/2-good.txt +40 -0
  418. data/spec/fixtures/X221-HP835/3a-bad.txt +78 -0
  419. data/spec/fixtures/X221-HP835/3a-good.txt +49 -0
  420. data/spec/fixtures/X221-HP835/3b-bad.txt +60 -0
  421. data/spec/fixtures/X221-HP835/3b-good.txt +32 -0
  422. data/spec/fixtures/X221-HP835/3c-bad.txt +55 -0
  423. data/spec/fixtures/X221-HP835/3c-good.txt +34 -0
  424. data/spec/fixtures/X222-HC837/1-bad.txt +60 -0
  425. data/spec/fixtures/X222-HC837/1-good.txt +53 -0
  426. data/spec/fixtures/X222-HC837/10a-bad.txt +52 -0
  427. data/spec/fixtures/X222-HC837/10a-good.txt +40 -0
  428. data/spec/fixtures/X222-HC837/10b-bad.txt +99 -0
  429. data/spec/fixtures/X222-HC837/10b-good.txt +80 -0
  430. data/spec/fixtures/X222-HC837/10c-bad.txt +105 -0
  431. data/spec/fixtures/X222-HC837/10c-good.txt +80 -0
  432. data/spec/fixtures/X222-HC837/11-bad.txt +69 -0
  433. data/spec/fixtures/X222-HC837/11-good.txt +45 -0
  434. data/spec/fixtures/X222-HC837/12-bad.txt +73 -0
  435. data/spec/fixtures/X222-HC837/12-good.txt +51 -0
  436. data/spec/fixtures/X222-HC837/13-bad.txt +64 -0
  437. data/spec/fixtures/X222-HC837/13-good.txt +46 -0
  438. data/spec/fixtures/X222-HC837/3a-bad.txt +83 -0
  439. data/spec/fixtures/X222-HC837/3a-good.txt +59 -0
  440. data/spec/fixtures/X222-HC837/3b-bad.txt +97 -0
  441. data/spec/fixtures/X222-HC837/3b-good.txt +70 -0
  442. data/spec/fixtures/X222-HC837/3c-bad.txt +95 -0
  443. data/spec/fixtures/X222-HC837/3c-good.txt +74 -0
  444. data/spec/fixtures/X222-HC837/4-bad.txt +67 -0
  445. data/spec/fixtures/X222-HC837/4-good.txt +48 -0
  446. data/spec/fixtures/X222-HC837/5-bad.txt +73 -0
  447. data/spec/fixtures/X222-HC837/5-good.txt +60 -0
  448. data/spec/fixtures/X222-HC837/6-bad.txt +50 -0
  449. data/spec/fixtures/X222-HC837/6-good.txt +39 -0
  450. data/spec/fixtures/X222-HC837/7-bad.txt +93 -0
  451. data/spec/fixtures/X222-HC837/7-good.txt +78 -0
  452. data/spec/fixtures/X222-HC837/8-bad.txt +64 -0
  453. data/spec/fixtures/X222-HC837/8-good.txt +52 -0
  454. data/spec/fixtures/X222-HC837/9-bad.txt +56 -0
  455. data/spec/fixtures/X222-HC837/9-good.txt +38 -0
  456. data/spec/fixtures/X223-HC837/1-bad.txt +66 -0
  457. data/spec/fixtures/X223-HC837/1-good.txt +53 -0
  458. data/spec/fixtures/X223-HC837/2-bad.txt +69 -0
  459. data/spec/fixtures/X223-HC837/2-good.txt +60 -0
  460. data/spec/fixtures/X223-HC837/3-bad.txt +89 -0
  461. data/spec/fixtures/X223-HC837/3-good.txt +61 -0
  462. data/spec/fixtures/X223-HC837/4-bad.txt +60 -0
  463. data/spec/fixtures/X223-HC837/4-good.txt +40 -0
  464. data/spec/fixtures/X223-HC837/5-bad.txt +75 -0
  465. data/spec/fixtures/X223-HC837/5-good.txt +58 -0
  466. data/spec/fixtures/X224-HC837/1-bad.txt +54 -0
  467. data/spec/fixtures/X224-HC837/1-good.txt +44 -0
  468. data/spec/fixtures/X224-HC837/2a-bad.txt +52 -0
  469. data/spec/fixtures/X224-HC837/2a-good.txt +42 -0
  470. data/spec/fixtures/X224-HC837/2b-bad.txt +67 -0
  471. data/spec/fixtures/X224-HC837/2b-good.txt +52 -0
  472. data/spec/fixtures/X224-HC837/3-bad.txt +67 -0
  473. data/spec/fixtures/X224-HC837/3-good.txt +51 -0
  474. data/spec/fixtures/X224-HC837/4-bad.txt +49 -0
  475. data/spec/fixtures/X224-HC837/4-good.txt +40 -0
  476. data/spec/fixtures/X230-FA997/1-bad.txt +19 -0
  477. data/spec/fixtures/X230-FA997/1-good.txt +16 -0
  478. data/spec/fixtures/X231-FA999/1-bad.txt +20 -0
  479. data/spec/fixtures/X231-FA999/1-good.txt +20 -0
  480. data/spec/fixtures/X279-HB271/1-bad.txt +36 -0
  481. data/spec/fixtures/X279-HB271/1-good.txt +30 -0
  482. data/spec/fixtures/X279-HB271/2-bad.txt +22 -0
  483. data/spec/fixtures/X279-HB271/2-good.txt +16 -0
  484. data/spec/fixtures/X279-HB271/3-bad.txt +44 -0
  485. data/spec/fixtures/X279-HB271/3-good.txt +36 -0
  486. data/spec/fixtures/X279-HS270/1-bad.txt +29 -0
  487. data/spec/fixtures/X279-HS270/1-good.txt +23 -0
  488. data/spec/fixtures/X279-HS270/2-bad.txt +32 -0
  489. data/spec/fixtures/X279-HS270/2-good.txt +25 -0
  490. data/spec/spec_helper.rb +34 -0
  491. data/spec/support/fixtures.rb +26 -0
  492. data/spec/support/matchers/either_matchers.rb +26 -0
  493. data/spec/support/matchers/navigation_matchers.rb +247 -0
  494. data/spec/support/node.rb +41 -0
  495. data/spec/support/quickcheck/characters.rb +28 -0
  496. data/spec/support/quickcheck/property.rb +105 -0
  497. data/spec/support/quickcheck/serialized_edi.rb +399 -0
  498. data/spec/support/quickcheck.rb +302 -0
  499. data/spec/support/rcov.rb +34 -0
  500. metadata +577 -0
@@ -0,0 +1,2297 @@
1
+ module Stupidedi
2
+ module Guides
3
+ module FiftyTen
4
+ module X222A1
5
+
6
+ b = GuideBuilder
7
+ d = Schema
8
+ r = SegmentReqs
9
+ e = ElementReqs
10
+ s = Versions::FunctionalGroups::FiftyTen::SegmentDefs
11
+ t = Versions::FunctionalGroups::FiftyTen::TransactionSetDefs
12
+
13
+ # With only a quick glance at X222, it appears that 2300 is a child of
14
+ # the 2000C HL loop. But there is a nasty little note that reads:
15
+ #
16
+ # For the purposes of this documentation, the claim detail information
17
+ # is presented only in the dependent level. Specific claim detail
18
+ # information can be given in either the subscriber or the dependent
19
+ # hierarchical level. Because of this, the claim information is said
20
+ # to "float." Claim information is positioned in the same hierarchical
21
+ # level that describes its owner-participant, either the subscriber or
22
+ # the dependent. In other words, the claim information, Loop 2300, is
23
+ # placed in the hierarchical level when the patient is the subscriber,
24
+ # or it is placed at the patient/dependent hierarchical level when the
25
+ # patient is the dependent of the subscriber as shown here. When the
26
+ # patient is the subscriber, loops 2000C and 2010CA are not sent. See
27
+ # 1.4.3.2.2.1, HL Segment, for details.
28
+ #
29
+ # So here we build the 2300 LoopDef and later copy it as a child of the
30
+ # 2000B and 2000C loops. The actual transaction set begins below with
31
+ # the line that starts HC837 = ...
32
+
33
+ loop2300 =
34
+ d::LoopDef.build("2300 CLAIM INFORMATION",
35
+ d::RepeatCount.bounded(100),
36
+ b::Segment(1300, s::CLM, "Claim Information",
37
+ # The spec is Required, but that doesn't seem right. This loop
38
+ # is not required to occur in both the Subscriber and Patient
39
+ # tables, it must appear in only one of them.
40
+ r::Situational, d::RepeatCount.bounded(1),
41
+ b::Element(e::Required, "Patient Control Number", b::MaxLength(20)),
42
+ b::Element(e::Required, "Total Claim Charge Amount"),
43
+ b::Element(e::NotUsed, "Claim Filing Indicator Code"),
44
+ b::Element(e::NotUsed, "Non-Institutional Claim Type Code"),
45
+ b::Element(e::Required, "HEALTH CARE SERVICE LOCATION INFORMATION",
46
+ b::Element(e::Required, "Place of Service Code"),
47
+ b::Element(e::Required, "Facility Code Qualifier", b::Values("B")),
48
+ b::Element(e::Required, "Claim Frequency Code")),
49
+ b::Element(e::Required, "Provider or Supplier Signature Indicator", b::Values("N", "Y")),
50
+ b::Element(e::Required, "Assignment or Plan Participation Code", b::Values("A", "B", "C")),
51
+ b::Element(e::Required, "Benefits Assignment Certification Indicator", b::Values("N", "W", "Y")),
52
+ b::Element(e::Required, "Release of Information Code", b::Values("I", "Y")),
53
+ b::Element(e::Situational, "Patient Signature Source Code", b::Values("P")),
54
+ b::Element(e::Situational, "RELATED CAUSES INFORMATION",
55
+ b::Element(e::Required, "Related Causes Code", b::Values("AA", "EM", "OA")),
56
+ b::Element(e::Situational, "Related Causes Code", b::Values("AA", "EM", "OA")),
57
+ b::Element(e::NotUsed, "Related Causes Code"),
58
+ b::Element(e::Situational, "Auto Accident State or Province Code"),
59
+ b::Element(e::Situational, "Country Code")),
60
+ b::Element(e::Situational, "Special Program Indicator", b::Values("02", "03", "05", "09")),
61
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
62
+ b::Element(e::NotUsed, "Level of Service Code"),
63
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
64
+ b::Element(e::NotUsed, "Provider Agreement Code"),
65
+ b::Element(e::NotUsed, "Claim Status Code"),
66
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
67
+ b::Element(e::NotUsed, "Claim Submission Reason Code"),
68
+ b::Element(e::Situational, "Delay Reason Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "15"))),
69
+ b::Segment(1350, s::DTP, "Onset of Current Illness or Symptom",
70
+ r::Situational, d::RepeatCount.bounded(1),
71
+ b::Element(e::Required, "Date Time Qualifier", b::Values("431")),
72
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
73
+ b::Element(e::Required, "Onset of Current Illness or Injury Date")),
74
+ b::Segment(1350, s::DTP, "Initial Treatment Date",
75
+ r::Situational, d::RepeatCount.bounded(1),
76
+ b::Element(e::Required, "Date Time Qualifier", b::Values("454")),
77
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
78
+ b::Element(e::Required, "Initial Treatment Date")),
79
+ b::Segment(1350, s::DTP, "Last Seen Date",
80
+ r::Situational, d::RepeatCount.bounded(1),
81
+ b::Element(e::Required, "Date Time Qualifier", b::Values("304")),
82
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
83
+ b::Element(e::Required, "Last Seen Date")),
84
+ b::Segment(1350, s::DTP, "Acute Manifestation Date",
85
+ r::Situational, d::RepeatCount.bounded(1),
86
+ b::Element(e::Required, "Date Time Qualifier", b::Values("453")),
87
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
88
+ b::Element(e::Required, "Acute Manifestation Date")),
89
+ b::Segment(1350, s::DTP, "Accident Date",
90
+ r::Situational, d::RepeatCount.bounded(1),
91
+ b::Element(e::Required, "Date Time Qualifier", b::Values("439")),
92
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
93
+ b::Element(e::Required, "Accident Date")),
94
+ b::Segment(1350, s::DTP, "Last Menstrual Period Date",
95
+ r::Situational, d::RepeatCount.bounded(1),
96
+ b::Element(e::Required, "Date Time Qualifier", b::Values("484")),
97
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
98
+ b::Element(e::Required, "Last Menstrual Period Date")),
99
+ b::Segment(1350, s::DTP, "Last X-ray Date",
100
+ r::Situational, d::RepeatCount.bounded(1),
101
+ b::Element(e::Required, "Date Time Qualifier", b::Values("455")),
102
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
103
+ b::Element(e::Required, "Last X-ray Date")),
104
+ b::Segment(1350, s::DTP, "Hearing and Vision Prescription Date",
105
+ r::Situational, d::RepeatCount.bounded(1),
106
+ b::Element(e::Required, "Date Time Qualifier", b::Values("471")),
107
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
108
+ b::Element(e::Required, "Prescription Date")),
109
+ b::Segment(1350, s::DTP, "Disability Dates",
110
+ r::Situational, d::RepeatCount.bounded(1),
111
+ b::Element(e::Required, "Date Time Qualifier", b::Values("314", "360", "361")),
112
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8", "RD8")),
113
+ b::Element(e::Required, "Disability From Date")),
114
+ b::Segment(1350, s::DTP, "Last Worked Date",
115
+ r::Situational, d::RepeatCount.bounded(1),
116
+ b::Element(e::Required, "Date Time Qualifier", b::Values("297")),
117
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
118
+ b::Element(e::Required, "Last Worked Date")),
119
+ b::Segment(1350, s::DTP, "Authorized Return to Work Date",
120
+ r::Situational, d::RepeatCount.bounded(1),
121
+ b::Element(e::Required, "Date Time Qualifier", b::Values("296")),
122
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
123
+ b::Element(e::Required, "Work Return Date")),
124
+ b::Segment(1350, s::DTP, "Admission Date",
125
+ r::Situational, d::RepeatCount.bounded(1),
126
+ b::Element(e::Required, "Date Time Qualifier", b::Values("435")),
127
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
128
+ b::Element(e::Required, "Related Hospitalization Admission Date")),
129
+ b::Segment(1350, s::DTP, "Discharge Date",
130
+ r::Situational, d::RepeatCount.bounded(1),
131
+ b::Element(e::Required, "Date Time Qualifier", b::Values("096")),
132
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
133
+ b::Element(e::Required, "Related Hospitalization Discharge Date")),
134
+ b::Segment(1350, s::DTP, "Assumed and Relinquished Care Dates",
135
+ r::Situational, d::RepeatCount.bounded(2),
136
+ b::Element(e::Required, "Date Time Qualifier", b::Values("090", "091")),
137
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
138
+ b::Element(e::Required, "Asumed or Relinquished Care Date")),
139
+ b::Segment(1350, s::DTP, "Property and Casualty Date of First Contact",
140
+ r::Situational, d::RepeatCount.bounded(1),
141
+ b::Element(e::Required, "Date Time Qualifier", b::Values("444")),
142
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
143
+ b::Element(e::Required, "Date")),
144
+ b::Segment(1350, s::DTP, "Repricer Received Date",
145
+ r::Situational, d::RepeatCount.bounded(1),
146
+ b::Element(e::Required, "Date Time Qualifier", b::Values("050")),
147
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
148
+ b::Element(e::Required, "Repricer Received Date")),
149
+ b::Segment(1550, s::PWK, "Claim Supplemental Information",
150
+ r::Situational, d::RepeatCount.bounded(10),
151
+ b::Element(e::Required, "Report Type Code", b::Values("03", "04", "05", "06", "07", "08", "09", "10", "11", "13", "15", "21", "A3", "A4", "AM", "AS", "B2", "B3", "B4", "BR", "BS", "BT", "CB", "CK", "CT", "D2", "DA", "DB", "DG", "DJ", "DS", "EB", "HC", "HR", "I5", "IR", "LA", "M1", "MT", "NN", "OB", "OC", "OD", "OE", "OX", "OZ", "P4", "P5", "PE", "PN", "PO", "PQ", "PY", "PZ", "RB", "RR", "RT", "RX", "SG", "V5", "XP")),
152
+ b::Element(e::Required, "Attachment Transmission Code", b::Values("AA", "BM", "EL", "EM", "FT", "FX")),
153
+ b::Element(e::NotUsed, "Report Copies Needed"),
154
+ b::Element(e::NotUsed, "Entity Identifier Code"),
155
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("AC")),
156
+ b::Element(e::Situational, "Attachment Control Number", b::MaxLength(50)),
157
+ b::Element(e::NotUsed, "Description"),
158
+ b::Element(e::NotUsed, "ACTIONS INDICATED"),
159
+ b::Element(e::NotUsed, "Request Category Code")),
160
+ b::Segment(1600, s::CN1, "Contract Information",
161
+ r::Situational, d::RepeatCount.bounded(1),
162
+ b::Element(e::Required, "Contract Type Code", b::Values("01", "02", "03", "04", "05", "06", "09")),
163
+ b::Element(e::Situational, "Contract Amount"),
164
+ b::Element(e::Situational, "Contract Percentage"),
165
+ b::Element(e::Situational, "Contract Code"),
166
+ b::Element(e::Situational, "Terms Discount Percentage"),
167
+ b::Element(e::Situational, "Contract Version Number")),
168
+ b::Segment(1750, s::AMT, "Patient Amount Paid",
169
+ r::Situational, d::RepeatCount.bounded(1),
170
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("F5")),
171
+ b::Element(e::Required, "Patient Amount Paid"),
172
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")),
173
+ b::Segment(1800, s::REF, "Service Authorization Exception Code",
174
+ r::Situational, d::RepeatCount.bounded(1),
175
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("4N")),
176
+ b::Element(e::Required, "Service Authorization Exception Code", b::Values("1", "2", "3", "4", "5", "6", "7")),
177
+ b::Element(e::NotUsed, "Description"),
178
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
179
+ b::Segment(1800, s::REF, "Mandatory Medicare (Section 4081) Crossover Indicator",
180
+ r::Situational, d::RepeatCount.bounded(1),
181
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("F5")),
182
+ b::Element(e::Required, "Medicare Section 4081 Indicator", b::Values("Y", "N")),
183
+ b::Element(e::NotUsed, "Description"),
184
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
185
+ b::Segment(1800, s::REF, "Mammography Certification Number",
186
+ r::Situational, d::RepeatCount.bounded(1),
187
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("EW")),
188
+ b::Element(e::Required, "Mammography Certification Number"),
189
+ b::Element(e::NotUsed, "Description"),
190
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
191
+ b::Segment(1800, s::REF, "Referral Number",
192
+ r::Situational, d::RepeatCount.bounded(1),
193
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9F")),
194
+ b::Element(e::Required, "Referral Number"),
195
+ b::Element(e::NotUsed, "Description"),
196
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
197
+ b::Segment(1800, s::REF, "Prior Authorization",
198
+ r::Situational, d::RepeatCount.bounded(1),
199
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("G1")),
200
+ b::Element(e::Required, "Prior Authorization Number"),
201
+ b::Element(e::NotUsed, "Description"),
202
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
203
+ b::Segment(1800, s::REF, "Payer Claim Control Number",
204
+ r::Situational, d::RepeatCount.bounded(1),
205
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("F8")),
206
+ b::Element(e::Required, "Payer Claim Control Number"),
207
+ b::Element(e::NotUsed, "Description"),
208
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
209
+ b::Segment(1800, s::REF, "Clinical Laboratory Improvement Amendment (CLIA) Number",
210
+ r::Situational, d::RepeatCount.bounded(1),
211
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("X4")),
212
+ b::Element(e::Required, "Clinical Laboratory Improvement Amendment Number"),
213
+ b::Element(e::NotUsed, "Description"),
214
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
215
+ b::Segment(1800, s::REF, "Repriced Claim Number",
216
+ r::Situational, d::RepeatCount.bounded(1),
217
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9A")),
218
+ b::Element(e::Required, "Repriced Claim Reference Number"),
219
+ b::Element(e::NotUsed, "Description"),
220
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
221
+ b::Segment(1800, s::REF, "Adjusted Repriced Claim Number",
222
+ r::Situational, d::RepeatCount.bounded(1),
223
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9C")),
224
+ b::Element(e::Required, "Adjusted Repriced Claim Reference Number"),
225
+ b::Element(e::NotUsed, "Description"),
226
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
227
+ b::Segment(1800, s::REF, "Investigational Device Exemption Number",
228
+ r::Situational, d::RepeatCount.bounded(1),
229
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("LX")),
230
+ b::Element(e::Required, "Investigational Device Exemption Identifier"),
231
+ b::Element(e::NotUsed, "Description"),
232
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
233
+ b::Segment(1800, s::REF, "Claim Identifier for Transmission Intermediaries",
234
+ r::Situational, d::RepeatCount.bounded(1),
235
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("D9")),
236
+ b::Element(e::Required, "Value Added Network Trace Number", b::MaxLength(20)),
237
+ b::Element(e::NotUsed, "Description"),
238
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
239
+ b::Segment(1800, s::REF, "Medical Record Number",
240
+ r::Situational, d::RepeatCount.bounded(1),
241
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("EA")),
242
+ b::Element(e::Required, "Medical Record Number"),
243
+ b::Element(e::NotUsed, "Description"),
244
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
245
+ b::Segment(1800, s::REF, "Demonstration Project Identifier",
246
+ r::Situational, d::RepeatCount.bounded(1),
247
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("P4")),
248
+ b::Element(e::Required, "Demonstration Project Number"),
249
+ b::Element(e::NotUsed, "Description"),
250
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
251
+ b::Segment(1800, s::REF, "Care Plan Oversight",
252
+ r::Situational, d::RepeatCount.bounded(1),
253
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("1J")),
254
+ b::Element(e::Required, "Care Plan Oversight Number"),
255
+ b::Element(e::NotUsed, "Description"),
256
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
257
+ b::Segment(1850, s::K3, "File Information",
258
+ r::Situational, d::RepeatCount.bounded(10),
259
+ b::Element(e::Required, "Fixed Format Information"),
260
+ b::Element(e::NotUsed, "Record Format Code"),
261
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE")),
262
+ b::Segment(1900, s::NTE, "Claim Note",
263
+ r::Situational, d::RepeatCount.bounded(1),
264
+ b::Element(e::Required, "Note Reference Code", b::Values("ADD", "CER", "DCP", "DGN", "TPO")),
265
+ b::Element(e::Required, "Claim Note Text")),
266
+ b::Segment(1950, s::CR1, "Ambulance Transportation Information",
267
+ r::Situational, d::RepeatCount.bounded(1),
268
+ b::Element(e::Situational, "Unit or Basis of Measure", b::Values("LB")),
269
+ b::Element(e::Situational, "Patient Weight"),
270
+ b::Element(e::NotUsed, "Ambulance Transport Code"),
271
+ b::Element(e::Required, "Ambulance Transport Reason Code", b::Values("A", "B", "C", "D", "E")),
272
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("DH")),
273
+ b::Element(e::Required, "Transport Distance"),
274
+ b::Element(e::NotUsed, "Address Information"),
275
+ b::Element(e::NotUsed, "Address Information"),
276
+ b::Element(e::Situational, "Round Trip Purpose Description"),
277
+ b::Element(e::Situational, "Stretcher Purpose Description")),
278
+ b::Segment(2000, s::CR2, "Spinal Manipulation Service Information",
279
+ r::Situational, d::RepeatCount.bounded(1),
280
+ b::Element(e::NotUsed, "Count"),
281
+ b::Element(e::NotUsed, "Quantity"),
282
+ b::Element(e::NotUsed, "Sublaxation Level Code"),
283
+ b::Element(e::NotUsed, "Sublaxation Level Code"),
284
+ b::Element(e::NotUsed, "Unit or Basis for Measurement Code"),
285
+ b::Element(e::NotUsed, "Quantity"),
286
+ b::Element(e::NotUsed, "Quantity"),
287
+ b::Element(e::Required, "Nature of Condition Code", b::Values("A", "C", "D", "E", "F", "G", "M")),
288
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
289
+ b::Element(e::Situational, "Patient Condition Description"),
290
+ b::Element(e::Situational, "Patient Condition Description"),
291
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
292
+ b::Segment(2200, s::CRC, "Ambulance Certification",
293
+ r::Situational, d::RepeatCount.bounded(3),
294
+ b::Element(e::Required, "Code Category", b::Values("07")),
295
+ b::Element(e::Required, "Certification Condition Indicator", b::Values("Y", "N")),
296
+ b::Element(e::Required, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
297
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
298
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
299
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
300
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12"))),
301
+ b::Segment(2200, s::CRC, "Patient Condition Information: Vision",
302
+ r::Situational, d::RepeatCount.bounded(3),
303
+ b::Element(e::Required, "Code Category", b::Values("E1", "E2", "E3")),
304
+ b::Element(e::Required, "Certification Condition Indicator", b::Values("Y", "N")),
305
+ b::Element(e::Required, "Condition Code", b::Values("L1", "L2", "L3", "L4", "L5")),
306
+ b::Element(e::Situational, "Condition Code", b::Values("L1", "L2", "L3", "L4", "L5")),
307
+ b::Element(e::Situational, "Condition Code", b::Values("L1", "L2", "L3", "L4", "L5")),
308
+ b::Element(e::Situational, "Condition Code", b::Values("L1", "L2", "L3", "L4", "L5")),
309
+ b::Element(e::Situational, "Condition Code", b::Values("L1", "L2", "L3", "L4", "L5"))),
310
+ b::Segment(2200, s::CRC, "Homebound Indicator",
311
+ r::Situational, d::RepeatCount.bounded(1),
312
+ b::Element(e::Required, "Code Category", b::Values("E1", "E2", "E3")),
313
+ b::Element(e::Required, "Certification Condition Indicator", b::Values("Y")),
314
+ b::Element(e::Required, "Condition Code", b::Values("IH")),
315
+ b::Element(e::NotUsed, "Condition Indicator"),
316
+ b::Element(e::Situational, "Condition Indicator"),
317
+ b::Element(e::Situational, "Condition Indicator"),
318
+ b::Element(e::Situational, "Condition Indicator")),
319
+ b::Segment(2200, s::CRC, "EPSDT Referral",
320
+ r::Situational, d::RepeatCount.bounded(1),
321
+ b::Element(e::Required, "Code Category", b::Values("ZZ")),
322
+ b::Element(e::Required, "Certification Condition Indicator", b::Values("Y", "N")),
323
+ b::Element(e::Required, "Condition Code", b::Values("AV", "NU", "S2", "ST")),
324
+ b::Element(e::Situational, "Condition Code", b::Values("AV", "NU", "S2", "ST")),
325
+ b::Element(e::Situational, "Condition Code", b::Values("AV", "NU", "S2", "ST")),
326
+ b::Element(e::NotUsed, "Condition Indicator"),
327
+ b::Element(e::NotUsed, "Condition Indicator")),
328
+ b::Segment(2310, s::HI, "Health Care Diagnosis Code",
329
+ r::Required, d::RepeatCount.bounded(1),
330
+ b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
331
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABK", "BK")),
332
+ b::Element(e::Required, "Diagnosis Code"),
333
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
334
+ b::Element(e::NotUsed, "Date Time Period"),
335
+ b::Element(e::NotUsed, "Monetary Amount"),
336
+ b::Element(e::NotUsed, "Quantity"),
337
+ b::Element(e::NotUsed, "Version Identifier"),
338
+ b::Element(e::NotUsed, "Industry Code"),
339
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
340
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
341
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
342
+ b::Element(e::Required, "Diagnosis Code"),
343
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
344
+ b::Element(e::NotUsed, "Date Time Period"),
345
+ b::Element(e::NotUsed, "Monetary Amount"),
346
+ b::Element(e::NotUsed, "Quantity"),
347
+ b::Element(e::NotUsed, "Version Identifier"),
348
+ b::Element(e::NotUsed, "Industry Code"),
349
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
350
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
351
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
352
+ b::Element(e::Required, "Diagnosis Code"),
353
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
354
+ b::Element(e::NotUsed, "Date Time Period"),
355
+ b::Element(e::NotUsed, "Monetary Amount"),
356
+ b::Element(e::NotUsed, "Quantity"),
357
+ b::Element(e::NotUsed, "Version Identifier"),
358
+ b::Element(e::NotUsed, "Industry Code"),
359
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
360
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
361
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
362
+ b::Element(e::Required, "Diagnosis Code"),
363
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
364
+ b::Element(e::NotUsed, "Date Time Period"),
365
+ b::Element(e::NotUsed, "Monetary Amount"),
366
+ b::Element(e::NotUsed, "Quantity"),
367
+ b::Element(e::NotUsed, "Version Identifier"),
368
+ b::Element(e::NotUsed, "Industry Code"),
369
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
370
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
371
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
372
+ b::Element(e::Required, "Diagnosis Code"),
373
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
374
+ b::Element(e::NotUsed, "Date Time Period"),
375
+ b::Element(e::NotUsed, "Monetary Amount"),
376
+ b::Element(e::NotUsed, "Quantity"),
377
+ b::Element(e::NotUsed, "Version Identifier"),
378
+ b::Element(e::NotUsed, "Industry Code"),
379
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
380
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
381
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
382
+ b::Element(e::Required, "Diagnosis Code"),
383
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
384
+ b::Element(e::NotUsed, "Date Time Period"),
385
+ b::Element(e::NotUsed, "Monetary Amount"),
386
+ b::Element(e::NotUsed, "Quantity"),
387
+ b::Element(e::NotUsed, "Version Identifier"),
388
+ b::Element(e::NotUsed, "Industry Code"),
389
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
390
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
391
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
392
+ b::Element(e::Required, "Diagnosis Code"),
393
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
394
+ b::Element(e::NotUsed, "Date Time Period"),
395
+ b::Element(e::NotUsed, "Monetary Amount"),
396
+ b::Element(e::NotUsed, "Quantity"),
397
+ b::Element(e::NotUsed, "Version Identifier"),
398
+ b::Element(e::NotUsed, "Industry Code"),
399
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
400
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
401
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
402
+ b::Element(e::Required, "Diagnosis Code"),
403
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
404
+ b::Element(e::NotUsed, "Date Time Period"),
405
+ b::Element(e::NotUsed, "Monetary Amount"),
406
+ b::Element(e::NotUsed, "Quantity"),
407
+ b::Element(e::NotUsed, "Version Identifier"),
408
+ b::Element(e::NotUsed, "Industry Code"),
409
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
410
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
411
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
412
+ b::Element(e::Required, "Diagnosis Code"),
413
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
414
+ b::Element(e::NotUsed, "Date Time Period"),
415
+ b::Element(e::NotUsed, "Monetary Amount"),
416
+ b::Element(e::NotUsed, "Quantity"),
417
+ b::Element(e::NotUsed, "Version Identifier"),
418
+ b::Element(e::NotUsed, "Industry Code"),
419
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
420
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
421
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
422
+ b::Element(e::Required, "Diagnosis Code"),
423
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
424
+ b::Element(e::NotUsed, "Date Time Period"),
425
+ b::Element(e::NotUsed, "Monetary Amount"),
426
+ b::Element(e::NotUsed, "Quantity"),
427
+ b::Element(e::NotUsed, "Version Identifier"),
428
+ b::Element(e::NotUsed, "Industry Code"),
429
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
430
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
431
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
432
+ b::Element(e::Required, "Diagnosis Code"),
433
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
434
+ b::Element(e::NotUsed, "Date Time Period"),
435
+ b::Element(e::NotUsed, "Monetary Amount"),
436
+ b::Element(e::NotUsed, "Quantity"),
437
+ b::Element(e::NotUsed, "Version Identifier"),
438
+ b::Element(e::NotUsed, "Industry Code"),
439
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
440
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
441
+ b::Element(e::Required, "Code List Qualifier", b::Values("ABF", "BF")),
442
+ b::Element(e::Required, "Diagnosis Code"),
443
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
444
+ b::Element(e::NotUsed, "Date Time Period"),
445
+ b::Element(e::NotUsed, "Monetary Amount"),
446
+ b::Element(e::NotUsed, "Quantity"),
447
+ b::Element(e::NotUsed, "Version Identifier"),
448
+ b::Element(e::NotUsed, "Industry Code"),
449
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"))),
450
+ b::Segment(2310, s::HI, "Anesthesia Related Procedure",
451
+ r::Situational, d::RepeatCount.bounded(1),
452
+ b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
453
+ b::Element(e::Required, "Code List Qualifier", b::Values("BP")),
454
+ b::Element(e::Required, "Diagnosis Code"),
455
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
456
+ b::Element(e::NotUsed, "Date Time Period"),
457
+ b::Element(e::NotUsed, "Monetary Amount"),
458
+ b::Element(e::NotUsed, "Quantity"),
459
+ b::Element(e::NotUsed, "Version Identifier"),
460
+ b::Element(e::NotUsed, "Industry Code"),
461
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
462
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
463
+ b::Element(e::Required, "Code List Qualifier", b::Values("BO")),
464
+ b::Element(e::Required, "Diagnosis Code"),
465
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
466
+ b::Element(e::NotUsed, "Date Time Period"),
467
+ b::Element(e::NotUsed, "Monetary Amount"),
468
+ b::Element(e::NotUsed, "Quantity"),
469
+ b::Element(e::NotUsed, "Version Identifier"),
470
+ b::Element(e::NotUsed, "Industry Code"),
471
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
472
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
473
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
474
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
475
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
476
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
477
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
478
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
479
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
480
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION"),
481
+ b::Element(e::NotUsed, "HEALTH CARE CODE INFORMATION")),
482
+ b::Segment(2310, s::HI, "Condition Information",
483
+ r::Situational, d::RepeatCount.bounded(1),
484
+ b::Element(e::Required, "HEALTH CARE CODE INFORMATION",
485
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
486
+ b::Element(e::Required, "Diagnosis Code"),
487
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
488
+ b::Element(e::NotUsed, "Date Time Period"),
489
+ b::Element(e::NotUsed, "Monetary Amount"),
490
+ b::Element(e::NotUsed, "Quantity"),
491
+ b::Element(e::NotUsed, "Version Identifier"),
492
+ b::Element(e::NotUsed, "Industry Code"),
493
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
494
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
495
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
496
+ b::Element(e::Required, "Diagnosis Code"),
497
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
498
+ b::Element(e::NotUsed, "Date Time Period"),
499
+ b::Element(e::NotUsed, "Monetary Amount"),
500
+ b::Element(e::NotUsed, "Quantity"),
501
+ b::Element(e::NotUsed, "Version Identifier"),
502
+ b::Element(e::NotUsed, "Industry Code"),
503
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
504
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
505
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
506
+ b::Element(e::Required, "Diagnosis Code"),
507
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
508
+ b::Element(e::NotUsed, "Date Time Period"),
509
+ b::Element(e::NotUsed, "Monetary Amount"),
510
+ b::Element(e::NotUsed, "Quantity"),
511
+ b::Element(e::NotUsed, "Version Identifier"),
512
+ b::Element(e::NotUsed, "Industry Code"),
513
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
514
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
515
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
516
+ b::Element(e::Required, "Diagnosis Code"),
517
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
518
+ b::Element(e::NotUsed, "Date Time Period"),
519
+ b::Element(e::NotUsed, "Monetary Amount"),
520
+ b::Element(e::NotUsed, "Quantity"),
521
+ b::Element(e::NotUsed, "Version Identifier"),
522
+ b::Element(e::NotUsed, "Industry Code"),
523
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
524
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
525
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
526
+ b::Element(e::Required, "Diagnosis Code"),
527
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
528
+ b::Element(e::NotUsed, "Date Time Period"),
529
+ b::Element(e::NotUsed, "Monetary Amount"),
530
+ b::Element(e::NotUsed, "Quantity"),
531
+ b::Element(e::NotUsed, "Version Identifier"),
532
+ b::Element(e::NotUsed, "Industry Code"),
533
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
534
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
535
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
536
+ b::Element(e::Required, "Diagnosis Code"),
537
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
538
+ b::Element(e::NotUsed, "Date Time Period"),
539
+ b::Element(e::NotUsed, "Monetary Amount"),
540
+ b::Element(e::NotUsed, "Quantity"),
541
+ b::Element(e::NotUsed, "Version Identifier"),
542
+ b::Element(e::NotUsed, "Industry Code"),
543
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
544
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
545
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
546
+ b::Element(e::Required, "Diagnosis Code"),
547
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
548
+ b::Element(e::NotUsed, "Date Time Period"),
549
+ b::Element(e::NotUsed, "Monetary Amount"),
550
+ b::Element(e::NotUsed, "Quantity"),
551
+ b::Element(e::NotUsed, "Version Identifier"),
552
+ b::Element(e::NotUsed, "Industry Code"),
553
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
554
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
555
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
556
+ b::Element(e::Required, "Diagnosis Code"),
557
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
558
+ b::Element(e::NotUsed, "Date Time Period"),
559
+ b::Element(e::NotUsed, "Monetary Amount"),
560
+ b::Element(e::NotUsed, "Quantity"),
561
+ b::Element(e::NotUsed, "Version Identifier"),
562
+ b::Element(e::NotUsed, "Industry Code"),
563
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
564
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
565
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
566
+ b::Element(e::Required, "Diagnosis Code"),
567
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
568
+ b::Element(e::NotUsed, "Date Time Period"),
569
+ b::Element(e::NotUsed, "Monetary Amount"),
570
+ b::Element(e::NotUsed, "Quantity"),
571
+ b::Element(e::NotUsed, "Version Identifier"),
572
+ b::Element(e::NotUsed, "Industry Code"),
573
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
574
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
575
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
576
+ b::Element(e::Required, "Diagnosis Code"),
577
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
578
+ b::Element(e::NotUsed, "Date Time Period"),
579
+ b::Element(e::NotUsed, "Monetary Amount"),
580
+ b::Element(e::NotUsed, "Quantity"),
581
+ b::Element(e::NotUsed, "Version Identifier"),
582
+ b::Element(e::NotUsed, "Industry Code"),
583
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
584
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
585
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
586
+ b::Element(e::Required, "Diagnosis Code"),
587
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
588
+ b::Element(e::NotUsed, "Date Time Period"),
589
+ b::Element(e::NotUsed, "Monetary Amount"),
590
+ b::Element(e::NotUsed, "Quantity"),
591
+ b::Element(e::NotUsed, "Version Identifier"),
592
+ b::Element(e::NotUsed, "Industry Code"),
593
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code")),
594
+ b::Element(e::Situational, "HEALTH CARE CODE INFORMATION",
595
+ b::Element(e::Required, "Code List Qualifier", b::Values("BG")),
596
+ b::Element(e::Required, "Diagnosis Code"),
597
+ b::Element(e::NotUsed, "Date Time Period Format Qualifier"),
598
+ b::Element(e::NotUsed, "Date Time Period"),
599
+ b::Element(e::NotUsed, "Monetary Amount"),
600
+ b::Element(e::NotUsed, "Quantity"),
601
+ b::Element(e::NotUsed, "Version Identifier"),
602
+ b::Element(e::NotUsed, "Industry Code"),
603
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"))),
604
+ b::Segment(2410, s::HCP, "Claim Pricing/Repricing Information",
605
+ r::Situational, d::RepeatCount.bounded(1),
606
+ b::Element(e::Required, "Pricing Methodology", b::Values("00", "01", "02", "03", "04", "05", "07", "08", "09", "10", "11", "12", "13", "14")),
607
+ b::Element(e::Required, "Repriced Allowed Amount"),
608
+ b::Element(e::Situational, "Repriced Saving Amount"),
609
+ b::Element(e::Situational, "Repricing Organization Identifier"),
610
+ b::Element(e::Situational, "Repricing Per Diem or Flat Rate Amount"),
611
+ b::Element(e::Situational, "Repriced Approved Ambulatory Patient Group Code"),
612
+ b::Element(e::Situational, "Repriced Approved Ambulatory Patient Group Amount"),
613
+ b::Element(e::NotUsed, "Product/Service ID"),
614
+ b::Element(e::NotUsed, "Product/Service Qualifier"),
615
+ b::Element(e::NotUsed, "Product/Service ID"),
616
+ b::Element(e::NotUsed, "Unit or Basis of Measurement Code"),
617
+ b::Element(e::NotUsed, "Quantity"),
618
+ b::Element(e::Situational, "Reject Reason Code", b::Values("T1", "T2", "T3", "T4", "T5", "T6")),
619
+ b::Element(e::Situational, "Policy Compliance Code", b::Values("1", "2", "3", "4", "5")),
620
+ b::Element(e::Situational, "Exception Code", b::Values("1", "2", "3", "4", "5", "6"))),
621
+
622
+ d::LoopDef.build("2310A REFERRING PROVIDER NAME",
623
+ d::RepeatCount.bounded(2),
624
+ b::Segment(2500, s::NM1, "Referring Provider Name",
625
+ r::Situational, d::RepeatCount.bounded(1),
626
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DN", "P3")),
627
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
628
+ b::Element(e::Required, "Referring Provider Last Name"),
629
+ b::Element(e::Situational, "Referring Provider First Name"),
630
+ b::Element(e::Situational, "Referring Provider Middle Name or Initial"),
631
+ b::Element(e::NotUsed, "Name Prefix"),
632
+ b::Element(e::Situational, "Referring Provider Name Suffix"),
633
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
634
+ b::Element(e::Situational, "Referring Provider Identifier"),
635
+ b::Element(e::NotUsed, "Entity Relationship Code"),
636
+ b::Element(e::NotUsed, "Entity Identifier Code"),
637
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
638
+ b::Segment(2710, s::REF, "Referring Provider Specialty Information",
639
+ r::Situational, d::RepeatCount.bounded(3),
640
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2")),
641
+ b::Element(e::Required, "Referring Provider Secondary Identifier"),
642
+ b::Element(e::NotUsed, "Description"),
643
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
644
+
645
+ d::LoopDef.build("2310B RENDERING PROVIDER NAME",
646
+ d::RepeatCount.bounded(1),
647
+ b::Segment(2500, s::NM1, "Rendering Provider Name",
648
+ r::Situational, d::RepeatCount.bounded(1),
649
+ b::Element(e::Required, "Entity Identifier Code", b::Values("82")),
650
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
651
+ b::Element(e::Required, "Rendering Provider Last Name"),
652
+ b::Element(e::Situational, "Rendering Provider First Name"),
653
+ b::Element(e::Situational, "Rendering Provider Middle Name or Initial"),
654
+ b::Element(e::NotUsed, "Name Prefix"),
655
+ b::Element(e::Situational, "Rendering Provider Name Suffix"),
656
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
657
+ b::Element(e::Situational, "Rendering Provider Identifier"),
658
+ b::Element(e::NotUsed, "Entity Relationship Code"),
659
+ b::Element(e::NotUsed, "Entity Identifier Code"),
660
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
661
+ b::Segment(2550, s::PRV, "Rendering Provider Specialty Information",
662
+ r::Situational, d::RepeatCount.bounded(1),
663
+ b::Element(e::Required, "Provider Code", b::Values("PE")),
664
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("PXC")),
665
+ b::Element(e::Required, "Provider Taxonomy Code"),
666
+ b::Element(e::NotUsed, "State or Province Code"),
667
+ b::Element(e::NotUsed, "PROVIDER SPECIALTY INFORMATION"),
668
+ b::Element(e::NotUsed, "Provider Organization Code")),
669
+ b::Segment(2710, s::REF, "Rendering Provider Secondary Identification",
670
+ r::Situational, d::RepeatCount.bounded(4),
671
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2", "LU")),
672
+ b::Element(e::Required, "Reference Identification"),
673
+ b::Element(e::NotUsed, "Description"),
674
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
675
+
676
+ d::LoopDef.build("2310C SERVICE FACILITY LOCATION NAME",
677
+ d::RepeatCount.bounded(1),
678
+ b::Segment(2500, s::NM1, "Service Facility Location Name",
679
+ r::Situational, d::RepeatCount.bounded(1),
680
+ b::Element(e::Required, "Entity Identifier Code", b::Values("77")),
681
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
682
+ b::Element(e::Required, "Name Last or Organization Name"),
683
+ b::Element(e::Situational, "Name First"),
684
+ b::Element(e::Situational, "Name Middle"),
685
+ b::Element(e::NotUsed, "Name Prefix"),
686
+ b::Element(e::Situational, "Name Suffix"),
687
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
688
+ b::Element(e::Situational, "Laboratory or Facility Primary Identifier"),
689
+ b::Element(e::NotUsed, "Entity Relationship Code"),
690
+ b::Element(e::NotUsed, "Entity Identifier Code"),
691
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
692
+ b::Segment(2650, s::N3, "Service Facility Location Address",
693
+ r::Required, d::RepeatCount.bounded(2),
694
+ b::Element(e::Required, "Laboratory or Facility Address Line"),
695
+ b::Element(e::Situational, "Laboratory or Facility Address Line")),
696
+ b::Segment(2700, s::N4, "Service Facility Location City, State, ZIP Code",
697
+ r::Required, d::RepeatCount.bounded(1),
698
+ b::Element(e::Required, "Laboratory or Facility City Name"),
699
+ b::Element(e::Situational, "Laboratory or Facility Province Code"),
700
+ b::Element(e::Situational, "Laboratory or Facility Postal Zone or ZIP Code"),
701
+ b::Element(e::Situational, "Country Code"),
702
+ b::Element(e::NotUsed, "Location Qualifier"),
703
+ b::Element(e::NotUsed, "Location Identifier"),
704
+ b::Element(e::Situational, "Country Subdivision Code")),
705
+ b::Segment(2710, s::REF, "Service Facility Location Secondary Identification",
706
+ r::Situational, d::RepeatCount.bounded(3),
707
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "G2", "LU")),
708
+ b::Element(e::Required, "Laboratory or Facility Secondary Identifier"),
709
+ b::Element(e::NotUsed, "Description"),
710
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
711
+ b::Segment(2750, s::PER, "Service Facility Contact Information",
712
+ r::Situational, d::RepeatCount.bounded(1),
713
+ b::Element(e::Required, "Contact Function Code", b::Values("IC")),
714
+ b::Element(e::Situational, "Name"),
715
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("TE")),
716
+ b::Element(e::Required, "Communication Number"),
717
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EX")),
718
+ b::Element(e::Situational, "Communication Number"),
719
+ b::Element(e::NotUsed, "Communication Number Qualifier"),
720
+ b::Element(e::NotUsed, "Communication Number"),
721
+ b::Element(e::NotUsed, "Contact Inquiry Reference"))),
722
+
723
+ d::LoopDef.build("2310D SUPERVISING PROVIDER NAME",
724
+ d::RepeatCount.bounded(1),
725
+ b::Segment(2500, s::NM1, "Supervising Provider Name",
726
+ r::Situational, d::RepeatCount.bounded(1),
727
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DQ")),
728
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
729
+ b::Element(e::Required, "Supervising Provider Last Name"),
730
+ b::Element(e::Situational, "Supervising Provider First Name"),
731
+ b::Element(e::Situational, "Supervising Provider Middle Name or Initial"),
732
+ b::Element(e::NotUsed, "Name Prefix"),
733
+ b::Element(e::Situational, "Supervising Provider Name Suffix"),
734
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
735
+ b::Element(e::Situational, "Supervising Provider Identifier"),
736
+ b::Element(e::NotUsed, "Entity Relationship Code"),
737
+ b::Element(e::NotUsed, "Entity Identifier Code"),
738
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
739
+ b::Segment(2710, s::REF, "Supervising Provider Secondary Identification",
740
+ r::Situational, d::RepeatCount.bounded(4),
741
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2", "LU")),
742
+ b::Element(e::Required, "Supervising Provider Secondary Identifier"),
743
+ b::Element(e::NotUsed, "Description"),
744
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
745
+
746
+ d::LoopDef.build("2310E AMBULANCE PICK-UP LOCATION",
747
+ d::RepeatCount.bounded(1),
748
+ b::Segment(2500, s::NM1, "Ambulance Pick-up Location",
749
+ r::Situational, d::RepeatCount.bounded(1),
750
+ b::Element(e::Required, "Entity Identifier Code", b::Values("PW")),
751
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
752
+ b::Element(e::NotUsed, "Name Last or Organization Name"),
753
+ b::Element(e::NotUsed, "Name First"),
754
+ b::Element(e::NotUsed, "Name Middle"),
755
+ b::Element(e::NotUsed, "Name Prefix"),
756
+ b::Element(e::NotUsed, "Name Suffix"),
757
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
758
+ b::Element(e::NotUsed, "Identification Code"),
759
+ b::Element(e::NotUsed, "Entity Relationship Code"),
760
+ b::Element(e::NotUsed, "Entity Identifier Code"),
761
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
762
+ b::Segment(2650, s::N3, "Ambulance Pick-up Location Address",
763
+ r::Situational, d::RepeatCount.bounded(2),
764
+ b::Element(e::Required, "Ambulance Pick-up Address Line"),
765
+ b::Element(e::Situational, "Ambulance Pick-up Address Line")),
766
+ b::Segment(2700, s::N4, "Ambulance Pick-up Location City, State, ZIP Code",
767
+ r::Situational, d::RepeatCount.bounded(1),
768
+ b::Element(e::Required, "Ambulance Pick-up City Name"),
769
+ b::Element(e::Situational, "Ambulance Pick-up State or Province Code"),
770
+ b::Element(e::Situational, "Ambulance Pick-up Postal Zone or ZIP Code"),
771
+ b::Element(e::Situational, "Country Code"),
772
+ b::Element(e::NotUsed, "Location Qualifier"),
773
+ b::Element(e::NotUsed, "Location Identifier"),
774
+ b::Element(e::Situational, "Country Subdivision Code"))),
775
+
776
+ d::LoopDef.build("2310F AMBULANCE DROP-OFF LOCATION",
777
+ d::RepeatCount.bounded(1),
778
+ b::Segment(2500, s::NM1, "Ambulance Drop-off Location",
779
+ r::Situational, d::RepeatCount.bounded(1),
780
+ b::Element(e::Required, "Entity Identifier Code", b::Values("45")),
781
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
782
+ b::Element(e::Situational, "Ambulance Drop-off Location"),
783
+ b::Element(e::NotUsed, "Name First"),
784
+ b::Element(e::NotUsed, "Name Middle"),
785
+ b::Element(e::NotUsed, "Name Prefix"),
786
+ b::Element(e::NotUsed, "Name Suffix"),
787
+ b::Element(e::NotUsed, "Identification Code Qualifier", b::Values("XX")),
788
+ b::Element(e::NotUsed, "Identification Code"),
789
+ b::Element(e::NotUsed, "Entity Relationship Code"),
790
+ b::Element(e::NotUsed, "Entity Identifier Code"),
791
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
792
+ b::Segment(2650, s::N3, "Ambulance Drop-off Location Address",
793
+ r::Situational, d::RepeatCount.bounded(1),
794
+ b::Element(e::Required, "Ambulance Drop-off Address Line"),
795
+ b::Element(e::Situational, "Ambulance Drop-off Address Line")),
796
+ b::Segment(2700, s::N4, "Ambulance Drop-off Location City, State, ZIP Code",
797
+ r::Situational, d::RepeatCount.bounded(1),
798
+ b::Element(e::Required, "Ambulance Drop-off City Name"),
799
+ b::Element(e::Situational, "Ambulance Drop-off State or Province Code"),
800
+ b::Element(e::Situational, "Ambulance Drop-off Postal Zone or ZIP Code"),
801
+ b::Element(e::Situational, "Country Code"),
802
+ b::Element(e::NotUsed, "Location Qualifier"),
803
+ b::Element(e::NotUsed, "Location Identifier"),
804
+ b::Element(e::Situational, "Country Subdivision Code"))),
805
+
806
+ d::LoopDef.build("2320 OTHER SUBSCRIBER INFORMATION",
807
+ d::RepeatCount.bounded(10),
808
+ b::Segment(2900, s::SBR, "Other Subscriber Information",
809
+ r::Situational, d::RepeatCount.bounded(1),
810
+ b::Element(e::Required, "Payer Responsibility Sequence Number", b::Values("A", "B", "C", "D", "E", "F", "G", "H", "P", "S", "T", "U")),
811
+ b::Element(e::Required, "Individual Relationship Code", b::Values("01", "18", "19", "20", "21", "39", "40", "53", "G8")),
812
+ b::Element(e::Situational, "Insured Group or Policy Number"),
813
+ b::Element(e::Situational, "Other Insured Group Name"),
814
+ b::Element(e::Situational, "Insurance Type Code", b::Values("12", "13", "14", "15", "16", "41", "42", "43", "47")),
815
+ b::Element(e::NotUsed, "Coordination of Benefits Code"),
816
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
817
+ b::Element(e::NotUsed, "Employment Status Code"),
818
+ b::Element(e::Situational, "Claim Filing Indicator Code", b::Values("11", "12", "13", "14", "15", "16", "17", "AM", "BL", "CH", "CI", "DS", "FI", "HM", "LM", "MA", "MB", "MC", "OF", "TV", "VA", "WC", "ZZ"))),
819
+ b::Segment(2950, s::CAS, "Claim Level Adjustments",
820
+ r::Situational, d::RepeatCount.bounded(5),
821
+ b::Element(e::Required, "Claim Adjustment Group Code", b::Values("CO", "CR", "OA", "PI", "PR")),
822
+ b::Element(e::Required, "Adjustment Reason Code"),
823
+ b::Element(e::Required, "Adjustment Amount"),
824
+ b::Element(e::Situational, "Adjustment Quantity"),
825
+ b::Element(e::Situational, "Adjustment Reason Code"),
826
+ b::Element(e::Situational, "Adjustment Amount"),
827
+ b::Element(e::Situational, "Adjustment Quantity"),
828
+ b::Element(e::Situational, "Adjustment Reason Code"),
829
+ b::Element(e::Situational, "Adjustment Amount"),
830
+ b::Element(e::Situational, "Adjustment Quantity"),
831
+ b::Element(e::Situational, "Adjustment Reason Code"),
832
+ b::Element(e::Situational, "Adjustment Amount"),
833
+ b::Element(e::Situational, "Adjustment Quantity"),
834
+ b::Element(e::Situational, "Adjustment Reason Code"),
835
+ b::Element(e::Situational, "Adjustment Amount"),
836
+ b::Element(e::Situational, "Adjustment Quantity"),
837
+ b::Element(e::Situational, "Adjustment Reason Code"),
838
+ b::Element(e::Situational, "Adjustment Amount"),
839
+ b::Element(e::Situational, "Adjustment Quantity")),
840
+ b::Segment(3000, s::AMT, "Coordination of Benefits (COB) Payer Paid Amount",
841
+ r::Situational, d::RepeatCount.bounded(1),
842
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("D")),
843
+ b::Element(e::Required, "Payer Paid Amount"),
844
+ b::Element(e::NotUsed, "Credit/Debit Flag")),
845
+ b::Segment(3000, s::AMT, "Coordination of Benefits (COB) Total Non-Covered Amount",
846
+ r::Situational, d::RepeatCount.bounded(1),
847
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("A8")),
848
+ b::Element(e::Required, "Non-Covered Charge Amount"),
849
+ b::Element(e::NotUsed, "Credit/Debit Flag")),
850
+ b::Segment(3000, s::AMT, "Remaining Patient Liability",
851
+ r::Situational, d::RepeatCount.bounded(1),
852
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("EAF")),
853
+ b::Element(e::Required, "Remaining Patient Liability"),
854
+ b::Element(e::NotUsed, "Credit/Debit Flag")),
855
+ b::Segment(3100, s::OI, "Other Insurance Coverage Information",
856
+ r::Required, d::RepeatCount.bounded(1),
857
+ b::Element(e::NotUsed, "Claim Filing Indicator Code"),
858
+ b::Element(e::NotUsed, "Claim Submission Reason Code"),
859
+ b::Element(e::Required, "Benefits Assignment Certification Indicator", b::Values("N", "W", "Y")),
860
+ b::Element(e::Situational, "Patient Signature Source Code", b::Values("P")),
861
+ b::Element(e::NotUsed, "Provider Agreement Code"),
862
+ b::Element(e::Required, "Release of Information Code", b::Values("I", "Y"))),
863
+ b::Segment(3200, s::MOA, "Outpatient Adjudication Information",
864
+ r::Situational, d::RepeatCount.bounded(1),
865
+ b::Element(e::Situational, "Reimbursement Rate"),
866
+ b::Element(e::Situational, "HCPCS Payable Amount"),
867
+ b::Element(e::Situational, "Claim Payment Remark Code"),
868
+ b::Element(e::Situational, "Claim Payment Remark Code"),
869
+ b::Element(e::Situational, "Claim Payment Remark Code"),
870
+ b::Element(e::Situational, "Claim Payment Remark Code"),
871
+ b::Element(e::Situational, "Claim Payment Remark Code"),
872
+ b::Element(e::Situational, "End Stage Renal Disease Payment Amount"),
873
+ b::Element(e::Situational, "Non-Payable Professional Component Billed Amount")),
874
+
875
+ d::LoopDef.build("2330A OTHER SUBSCRIBER NAME",
876
+ d::RepeatCount.bounded(1),
877
+ b::Segment(3250, s::NM1, "Other Subscriber Name",
878
+ r::Required, d::RepeatCount.bounded(1),
879
+ b::Element(e::Required, "Entity Identifier Code", b::Values("IL")),
880
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
881
+ b::Element(e::Required, "Other Insured Last Name"),
882
+ b::Element(e::Situational, "Other Insured First Name"),
883
+ b::Element(e::Situational, "Other Insured Middle Name"),
884
+ b::Element(e::NotUsed, "Name Prefix"),
885
+ b::Element(e::Situational, "Other Insured Name Suffix"),
886
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("II", "MI")),
887
+ b::Element(e::Required, "Other Insured Identifier"),
888
+ b::Element(e::NotUsed, "Entity Relationship Code"),
889
+ b::Element(e::NotUsed, "Entity Identifier Code"),
890
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
891
+ b::Segment(3320, s::N3, "Other Subscriber Address",
892
+ r::Situational, d::RepeatCount.bounded(1),
893
+ b::Element(e::Required, "Other Subscriber Address Line"),
894
+ b::Element(e::Situational, "Other Subscriber Address Line")),
895
+ b::Segment(3400, s::N4, "Other Subscriber City, State, ZIP Code",
896
+ r::Situational, d::RepeatCount.bounded(1),
897
+ b::Element(e::Required, "Other Subscriber City Name"),
898
+ b::Element(e::Situational, "Other Subscriber State or Province Code"),
899
+ b::Element(e::Situational, "Other Subscriber Postal Zone or ZIP Code"),
900
+ b::Element(e::Situational, "Country Code"),
901
+ b::Element(e::NotUsed, "Location Qualifier"),
902
+ b::Element(e::NotUsed, "Location Identifier"),
903
+ b::Element(e::Situational, "Country Subdivision Code")),
904
+ b::Segment(3550, s::REF, "Other Subscriber Secondary Identification",
905
+ r::Situational, d::RepeatCount.bounded(1),
906
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("SY")),
907
+ b::Element(e::Required, "Other Insured Additional Identifier"),
908
+ b::Element(e::NotUsed, "Description"),
909
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
910
+
911
+ d::LoopDef.build("2330B OTHER PAYER NAME",
912
+ d::RepeatCount.bounded(1),
913
+ b::Segment(3250, s::NM1, "Other Payer Name",
914
+ r::Required, d::RepeatCount.bounded(1),
915
+ b::Element(e::Required, "Entity Identifier Code", b::Values("PR")),
916
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
917
+ b::Element(e::Required, "Other Payer Organization Name"),
918
+ b::Element(e::NotUsed, "Name First"),
919
+ b::Element(e::NotUsed, "Name Middle"),
920
+ b::Element(e::NotUsed, "Name Prefix"),
921
+ b::Element(e::NotUsed, "Name Suffix"),
922
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("PI", "XV")),
923
+ b::Element(e::Required, "Other Payer Primary Identifier"),
924
+ b::Element(e::NotUsed, "Entity Relationship Code"),
925
+ b::Element(e::NotUsed, "Entity Identifier Code"),
926
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
927
+ b::Segment(3320, s::N3, "Other Payer Address",
928
+ r::Situational, d::RepeatCount.bounded(1),
929
+ b::Element(e::Required, "Other Payer Address Line"),
930
+ b::Element(e::Situational, "Other Payer Address Line")),
931
+ b::Segment(3400, s::N4, "Other Payer City, State, ZIP Code",
932
+ r::Situational, d::RepeatCount.bounded(1),
933
+ b::Element(e::Required, "Other Payer City Name"),
934
+ b::Element(e::Situational, "Other Payer State or Province Code"),
935
+ b::Element(e::Situational, "Other Payer Postal Zone or ZIP Code"),
936
+ b::Element(e::Situational, "Country Code"),
937
+ b::Element(e::NotUsed, "Location Qualifier"),
938
+ b::Element(e::NotUsed, "Location Identifier"),
939
+ b::Element(e::Situational, "Country Subdivision Code")),
940
+ b::Segment(3500, s::DTP, "Claim Check or Remittance Date",
941
+ r::Situational, d::RepeatCount.bounded(1),
942
+ b::Element(e::Required, "Date Time Qualifier", b::Values("573")),
943
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
944
+ b::Element(e::Required, "Adjudication or Payment Date")),
945
+ b::Segment(3550, s::REF, "Other Payer Secondary Identifier",
946
+ r::Situational, d::RepeatCount.bounded(2),
947
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U", "EI", "FY", "NF")),
948
+ b::Element(e::Required, "Other Payer Secondary Identifier"),
949
+ b::Element(e::NotUsed, "Description"),
950
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
951
+ b::Segment(3550, s::REF, "Other Payer Prior Authorization Number",
952
+ r::Situational, d::RepeatCount.bounded(1),
953
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("G1")),
954
+ b::Element(e::Required, "Other Payer Prior Authorization Number"),
955
+ b::Element(e::NotUsed, "Description"),
956
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
957
+ b::Segment(3550, s::REF, "Other Payer Referral Number",
958
+ r::Situational, d::RepeatCount.bounded(1),
959
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9F")),
960
+ b::Element(e::Required, "Other Payer Prior Authorization or Referral Number"),
961
+ b::Element(e::NotUsed, "Description"),
962
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
963
+ b::Segment(3550, s::REF, "Other Payer Claim Adjustment Indicator",
964
+ r::Situational, d::RepeatCount.bounded(1),
965
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("T4")),
966
+ b::Element(e::Required, "Other Payer Claim Adjustment Indicator", b::Values("Y")),
967
+ b::Element(e::NotUsed, "Description"),
968
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
969
+ b::Segment(3550, s::REF, "Other Payer Claim Control Number",
970
+ r::Situational, d::RepeatCount.bounded(1),
971
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("F8")),
972
+ b::Element(e::Required, "Other Payer's Claim Control Number"),
973
+ b::Element(e::NotUsed, "Description"),
974
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
975
+
976
+ d::LoopDef.build("2330C OTHER PAYER REFERRING PROVIDER",
977
+ d::RepeatCount.bounded(2),
978
+ b::Segment(3250, s::NM1, "Other Payer Referring Provider",
979
+ r::Situational, d::RepeatCount.bounded(1),
980
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DN", "P3")),
981
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
982
+ b::Element(e::NotUsed, "Name Last"),
983
+ b::Element(e::NotUsed, "Name First"),
984
+ b::Element(e::NotUsed, "Name Middle"),
985
+ b::Element(e::NotUsed, "Name Prefix"),
986
+ b::Element(e::NotUsed, "Name Suffix"),
987
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
988
+ b::Element(e::NotUsed, "Identification Code"),
989
+ b::Element(e::NotUsed, "Entity Relationship Code"),
990
+ b::Element(e::NotUsed, "Entity Identifier Code"),
991
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
992
+ b::Segment(3550, s::REF, "Other Payer Referring Provider Secondary Identification",
993
+ r::Required, d::RepeatCount.bounded(3),
994
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2")),
995
+ b::Element(e::Required, "Other Payer Referring Provider Identifier"),
996
+ b::Element(e::NotUsed, "Description"),
997
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
998
+
999
+ d::LoopDef.build("2330D OTHER PAYER RENDERING PROVIDER",
1000
+ d::RepeatCount.bounded(1),
1001
+ b::Segment(3250, s::NM1, "Other Payer Rendering Provider",
1002
+ r::Situational, d::RepeatCount.bounded(1),
1003
+ b::Element(e::Required, "Entity Identifier Code", b::Values("82")),
1004
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1005
+ b::Element(e::NotUsed, "Name Last"),
1006
+ b::Element(e::NotUsed, "Name First"),
1007
+ b::Element(e::NotUsed, "Name Middle"),
1008
+ b::Element(e::NotUsed, "Name Prefix"),
1009
+ b::Element(e::NotUsed, "Name Suffix"),
1010
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1011
+ b::Element(e::NotUsed, "Identification Code"),
1012
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1013
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1014
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1015
+ b::Segment(3550, s::REF, "Other Payer Rendering Provider Secondary Identification",
1016
+ r::Required, d::RepeatCount.bounded(3),
1017
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2", "LU")),
1018
+ b::Element(e::Required, "Other Payer Rendering Provider Secondary Identifier"),
1019
+ b::Element(e::NotUsed, "Description"),
1020
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
1021
+
1022
+ d::LoopDef.build("2330E OTHER PAYER SERVICE FACILITY LOCATION",
1023
+ d::RepeatCount.bounded(1),
1024
+ b::Segment(3250, s::NM1, "Other Payer Service Facility Location",
1025
+ r::Situational, d::RepeatCount.bounded(1),
1026
+ b::Element(e::Required, "Entity Identifier Code", b::Values("77")),
1027
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
1028
+ b::Element(e::NotUsed, "Name Last"),
1029
+ b::Element(e::NotUsed, "Name First"),
1030
+ b::Element(e::NotUsed, "Name Middle"),
1031
+ b::Element(e::NotUsed, "Name Prefix"),
1032
+ b::Element(e::NotUsed, "Name Suffix"),
1033
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1034
+ b::Element(e::NotUsed, "Identification Code"),
1035
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1036
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1037
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1038
+ b::Segment(3550, s::REF, "Other Payer Service Facility Location Secondary Identification",
1039
+ r::Required, d::RepeatCount.bounded(3),
1040
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "G2", "LU")),
1041
+ b::Element(e::Required, "Other Payer Service Facility Location Secondary Identifier"),
1042
+ b::Element(e::NotUsed, "Description"),
1043
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
1044
+
1045
+ d::LoopDef.build("2330F OTHER PAYER SUPERVISING PROVIDER",
1046
+ d::RepeatCount.bounded(1),
1047
+ b::Segment(3250, s::NM1, "Other Payer Supervising Provider",
1048
+ r::Situational, d::RepeatCount.bounded(1),
1049
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DQ")),
1050
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
1051
+ b::Element(e::NotUsed, "Name Last"),
1052
+ b::Element(e::NotUsed, "Name First"),
1053
+ b::Element(e::NotUsed, "Name Middle"),
1054
+ b::Element(e::NotUsed, "Name Prefix"),
1055
+ b::Element(e::NotUsed, "Name Suffix"),
1056
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1057
+ b::Element(e::NotUsed, "Identification Code"),
1058
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1059
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1060
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1061
+ b::Segment(3550, s::REF, "Other Payer Supervising Provider Secondary Identification",
1062
+ r::Required, d::RepeatCount.bounded(3),
1063
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2", "LU")),
1064
+ b::Element(e::Required, "Other Payer Supervising Provider Identifier"),
1065
+ b::Element(e::NotUsed, "Description"),
1066
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
1067
+
1068
+ d::LoopDef.build("2330G OTHER PAYER BILLING PROVIDER",
1069
+ d::RepeatCount.bounded(1),
1070
+ b::Segment(3250, s::NM1, "Other Payer Billing Provider",
1071
+ r::Situational, d::RepeatCount.bounded(1),
1072
+ b::Element(e::Required, "Entity Identifier Code", b::Values("85")),
1073
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1074
+ b::Element(e::NotUsed, "Name L"),
1075
+ b::Element(e::NotUsed, "Name F"),
1076
+ b::Element(e::NotUsed, "Name M"),
1077
+ b::Element(e::NotUsed, "Name P"),
1078
+ b::Element(e::NotUsed, "Name S"),
1079
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1080
+ b::Element(e::NotUsed, "Identification Code"),
1081
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1082
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1083
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1084
+ b::Segment(3550, s::REF, "Other Payer Billing Provider Secondary Identification",
1085
+ r::Required, d::RepeatCount.bounded(2),
1086
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("G2", "LU")),
1087
+ b::Element(e::Required, "Other Payer Billing Provider Identifier"),
1088
+ b::Element(e::NotUsed, "Description"),
1089
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")))),
1090
+
1091
+ d::LoopDef.build("2400 SERVICE LINE NUMBER",
1092
+ d::RepeatCount.bounded(50),
1093
+ b::Segment(3650, s::LX, "Service Line Number",
1094
+ r::Required, d::RepeatCount.bounded(1),
1095
+ b::Element(e::Required, "Assigned Number")),
1096
+ b::Segment(3700, s::SV1, "Professional Service",
1097
+ r::Required, d::RepeatCount.bounded(1),
1098
+ b::Element(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER",
1099
+ b::Element(e::Required, "Product or Service ID Qualifier", b::Values("ER", "HC", "IV", "WK")),
1100
+ b::Element(e::Required, "Procedure Code"),
1101
+ b::Element(e::Situational, "Procedure Modifier"),
1102
+ b::Element(e::Situational, "Procedure Modifier"),
1103
+ b::Element(e::Situational, "Procedure Modifier"),
1104
+ b::Element(e::Situational, "Procedure Modifier"),
1105
+ b::Element(e::Situational, "Description"),
1106
+ b::Element(e::NotUsed, "Product/Service ID")),
1107
+ b::Element(e::Required, "Line Item Charge Amount"),
1108
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("MJ", "UN")),
1109
+ b::Element(e::Required, "Service Unit Count", b::MaxLength(8), b::MaxPrecision(3)),
1110
+ b::Element(e::Situational, "Place of Service Code"),
1111
+ b::Element(e::NotUsed, "Service Type Code"),
1112
+ b::Element(e::Required, "COMPOSITE DIAGNOSIS CODE POINTER",
1113
+ b::Element(e::Required, "Diagnosis Code Pointer"),
1114
+ b::Element(e::Situational, "Diagnosis Code Pointer"),
1115
+ b::Element(e::Situational, "Diagnosis Code Pointer"),
1116
+ b::Element(e::Situational, "Diagnosis Code Pointer")),
1117
+ b::Element(e::NotUsed, "Monetary Amount"),
1118
+ b::Element(e::Situational, "Emergency Indicator", b::Values("Y")),
1119
+ b::Element(e::NotUsed, "Multiple Procedure Code"),
1120
+ b::Element(e::Situational, "EPSDT Indicator", b::Values("Y")),
1121
+ b::Element(e::Situational, "Family Planning Indicator", b::Values("Y")),
1122
+ b::Element(e::NotUsed, "Review Code"),
1123
+ b::Element(e::NotUsed, "National or Local Assigned Review Value"),
1124
+ b::Element(e::Situational, "Co-Pay Status Code", b::Values("0")),
1125
+ b::Element(e::NotUsed, "Health Care Professional Shortage Area Code"),
1126
+ b::Element(e::NotUsed, "Reference Identification"),
1127
+ b::Element(e::NotUsed, "Postal Code"),
1128
+ b::Element(e::NotUsed, "Monetary Amount"),
1129
+ b::Element(e::NotUsed, "Level of Care Code"),
1130
+ b::Element(e::NotUsed, "Provider Agreement Code")),
1131
+ b::Segment(4000, s::SV5, "Durable Medical Equipment Service",
1132
+ r::Situational, d::RepeatCount.bounded(1),
1133
+ b::Element(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER",
1134
+ b::Element(e::Required, "Procedure Identifier", b::Values("HC")),
1135
+ b::Element(e::Required, "Procedure Code"),
1136
+ b::Element(e::NotUsed, "Procedure Modifier"),
1137
+ b::Element(e::NotUsed, "Procedure Modifier"),
1138
+ b::Element(e::NotUsed, "Procedure Modifier"),
1139
+ b::Element(e::NotUsed, "Procedure Modifier"),
1140
+ b::Element(e::NotUsed, "Description"),
1141
+ b::Element(e::NotUsed, "Product/Service ID")),
1142
+ b::Element(e::Required, "Unit or Basis for Measurement Code"),
1143
+ b::Element(e::Required, "Length of Medical Necessity"),
1144
+ b::Element(e::Required, "DME Rental Price"),
1145
+ b::Element(e::Required, "DME Purchase Price"),
1146
+ b::Element(e::Required, "Rental Unit Price Indicator", b::Values("1", "4", "6")),
1147
+ b::Element(e::NotUsed, "Prognosis Code")),
1148
+ b::Segment(4200, s::PWK, "Line Supplemental Information",
1149
+ r::Situational, d::RepeatCount.bounded(10),
1150
+ b::Element(e::Required, "Attachment Report Type Code", b::Values("03", "04", "05", "06", "07", "08", "09", "10", "11", "13", "15", "21", "A3", "A4", "AM", "AS", "B2", "B4", "BR", "BS", "BT", "CB", "CK", "CT", "D2", "DA", "DA", "DB", "DG", "DJ", "DS", "EB", "HC", "HR", "I5", "IR", "LA", "M1", "MT", "NN", "OB", "OC", "OD", "OE", "OX", "OZ", "P4", "P5", "PE", "PN", "PO", "PQ", "PY", "PZ", "RB", "RR", "RT", "RX", "SG", "V5", "XP")),
1151
+ b::Element(e::Required, "Attachment Transmission Code", b::Values("AA", "BM", "EL", "EM", "FT", "FX")),
1152
+ b::Element(e::NotUsed, "Report Copies Needed"),
1153
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1154
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("AC")),
1155
+ b::Element(e::Situational, "Attachment Control Number", b::MaxLength(50)),
1156
+ b::Element(e::NotUsed, "Description"),
1157
+ b::Element(e::NotUsed, "ACTIONS INDICATED"),
1158
+ b::Element(e::NotUsed, "Request Category Code")),
1159
+ b::Segment(4200, s::PWK, "Durable Medical Equipment Certification of Medical Necessity Indicator",
1160
+ r::Situational, d::RepeatCount.bounded(1),
1161
+ b::Element(e::Required, "Attachment Report Type Code", b::Values("CT")),
1162
+ b::Element(e::Required, "Attachment Transmission Code", b::Values("AB", "AD", "AF", "AG", "NS")),
1163
+ b::Element(e::NotUsed, "Report Copies Needed"),
1164
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1165
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1166
+ b::Element(e::NotUsed, "Identification Code"),
1167
+ b::Element(e::NotUsed, "Description"),
1168
+ b::Element(e::NotUsed, "ACTIONS INDICATED"),
1169
+ b::Element(e::NotUsed, "Request Category Code")),
1170
+ b::Segment(4250, s::CR1, "Ambulance Transport Information",
1171
+ r::Situational, d::RepeatCount.bounded(1),
1172
+ b::Element(e::Situational, "Unit or Basis for Measurement Code", b::Values("LB")),
1173
+ b::Element(e::Situational, "Patient Weight"),
1174
+ b::Element(e::NotUsed, "Ambulance Transport Code"),
1175
+ b::Element(e::Required, "Ambulance Transport Reason Code", b::Values("A", "B", "C", "D", "E")),
1176
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("DH")),
1177
+ b::Element(e::Required, "Transport Distance"),
1178
+ b::Element(e::NotUsed, "Address Information"),
1179
+ b::Element(e::NotUsed, "Address Information"),
1180
+ b::Element(e::Situational, "Round Trip Purpose Description"),
1181
+ b::Element(e::Situational, "Stretcher Purpose Description")),
1182
+ b::Segment(4350, s::CR3, "Durable Medical Equipment Certification",
1183
+ r::Situational, d::RepeatCount.bounded(1),
1184
+ b::Element(e::Required, "Certification Type Code", b::Values("I", "R", "S")),
1185
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("MO")),
1186
+ b::Element(e::Required, "Durable Medical Equipment Duration"),
1187
+ b::Element(e::NotUsed, "Insulin Dependent Code"),
1188
+ b::Element(e::NotUsed, "Description")),
1189
+ b::Segment(4500, s::CRC, "Ambulance Certification",
1190
+ r::Situational, d::RepeatCount.bounded(3),
1191
+ b::Element(e::Required, "Code Category", b::Values("07")),
1192
+ b::Element(e::Required, "Certification Condition Indicator", b::Values("N", "Y")),
1193
+ b::Element(e::Required, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
1194
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
1195
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
1196
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12")),
1197
+ b::Element(e::Situational, "Condition Code", b::Values("01", "04", "05", "06", "07", "08", "09", "12"))),
1198
+ b::Segment(4500, s::CRC, "Hospice Employee Indicator",
1199
+ r::Situational, d::RepeatCount.bounded(1),
1200
+ b::Element(e::Required, "Code Category", b::Values("70")),
1201
+ b::Element(e::Required, "Hospice Employed Provider Indicator", b::Values("N", "Y")),
1202
+ b::Element(e::Required, "Condition Indicator", b::Values("65")),
1203
+ b::Element(e::NotUsed, "Condition Indicator"),
1204
+ b::Element(e::NotUsed, "Condition Indicator"),
1205
+ b::Element(e::NotUsed, "Condition Indicator"),
1206
+ b::Element(e::NotUsed, "Condition Indicator")),
1207
+ b::Segment(4500, s::CRC, "Condition Indicator/Durable Medical Equipment",
1208
+ r::Situational, d::RepeatCount.bounded(1),
1209
+ b::Element(e::Required, "Code Category", b::Values("09")),
1210
+ b::Element(e::Required, "Certification Condition Indicator", b::Values("Y", "N")),
1211
+ b::Element(e::Required, "Condition Indicator", b::Values("38", "ZV")),
1212
+ b::Element(e::Situational, "Condition Indicator", b::Values("38", "ZV")),
1213
+ b::Element(e::NotUsed, "Condition Indicator"),
1214
+ b::Element(e::NotUsed, "Condition Indicator"),
1215
+ b::Element(e::NotUsed, "Condition Indicator")),
1216
+ b::Segment(4550, s::DTP, "Service Date",
1217
+ r::Required, d::RepeatCount.bounded(1),
1218
+ b::Element(e::Required, "Date Time Qualifier", b::Values("472")),
1219
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8", "RD8")),
1220
+ b::Element(e::Required, "Service Date")),
1221
+ b::Segment(4550, s::DTP, "Prescription Date",
1222
+ r::Situational, d::RepeatCount.bounded(1),
1223
+ b::Element(e::Required, "Date Time Qualifier", b::Values("471")),
1224
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1225
+ b::Element(e::Required, "Prescription Date")),
1226
+ b::Segment(4550, s::DTP, "Certification Revision/Recertification Date",
1227
+ r::Situational, d::RepeatCount.bounded(1),
1228
+ b::Element(e::Required, "Date Time Qualifier", b::Values("607")),
1229
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1230
+ b::Element(e::Required, "Certification Revision or Recertification Date")),
1231
+ b::Segment(4550, s::DTP, "Begin Therapy Date",
1232
+ r::Situational, d::RepeatCount.bounded(1),
1233
+ b::Element(e::Required, "Date Time Qualifier", b::Values("463")),
1234
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1235
+ b::Element(e::Required, "Begin Therapy Date")),
1236
+ b::Segment(4550, s::DTP, "Last Certification Date",
1237
+ r::Situational, d::RepeatCount.bounded(1),
1238
+ b::Element(e::Required, "Date Time Qualifier", b::Values("461")),
1239
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1240
+ b::Element(e::Required, "Last Certification Date")),
1241
+ b::Segment(4550, s::DTP, "Last Seen Date",
1242
+ r::Situational, d::RepeatCount.bounded(1),
1243
+ b::Element(e::Required, "Date Time Qualifier", b::Values("304")),
1244
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1245
+ b::Element(e::Required, "Treatment or Therapy Date")),
1246
+ b::Segment(4550, s::DTP, "Test Date",
1247
+ r::Situational, d::RepeatCount.bounded(2),
1248
+ b::Element(e::Required, "Date Time Qualifier", b::Values("738", "739")),
1249
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1250
+ b::Element(e::Required, "Test Performed Date")),
1251
+ b::Segment(4550, s::DTP, "Shipped Date",
1252
+ r::Situational, d::RepeatCount.bounded(1),
1253
+ b::Element(e::Required, "Date Time Qualifier", b::Values("011")),
1254
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1255
+ b::Element(e::Required, "Shipped Date")),
1256
+ b::Segment(4550, s::DTP, "Last X-ray Date",
1257
+ r::Situational, d::RepeatCount.bounded(1),
1258
+ b::Element(e::Required, "Date Time Qualifier", b::Values("455")),
1259
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1260
+ b::Element(e::Required, "Last X-ray Date")),
1261
+ b::Segment(4550, s::DTP, "Initial Treatment Date",
1262
+ r::Situational, d::RepeatCount.bounded(1),
1263
+ b::Element(e::Required, "Date Time Qualifier", b::Values("454")),
1264
+ b::Element(e::Required, "Date Time Period Qualifier", b::Values("D8")),
1265
+ b::Element(e::Required, "Initial Treatment Date")),
1266
+ b::Segment(4600, s::QTY, "Ambulance Patient Count",
1267
+ r::Situational, d::RepeatCount.bounded(1),
1268
+ b::Element(e::Required, "Quantity Qualifier", b::Values("PT")),
1269
+ b::Element(e::Required, "Ambulance Patient Count"),
1270
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE"),
1271
+ b::Element(e::NotUsed, "Free-form Information")),
1272
+ b::Segment(4600, s::QTY, "Obstetric Anesthesia Additional Units",
1273
+ r::Situational, d::RepeatCount.bounded(1),
1274
+ b::Element(e::Required, "Quantity Qualifier", b::Values("FL")),
1275
+ b::Element(e::Required, "Obstetric Additional Units"),
1276
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE"),
1277
+ b::Element(e::NotUsed, "Free-form Information")),
1278
+ b::Segment(4620, s::MEA, "Test Result",
1279
+ r::Situational, d::RepeatCount.bounded(5),
1280
+ b::Element(e::Required, "Measurement Reference Identification Code", b::Values("OG", "TR")),
1281
+ b::Element(e::Required, "Measurement Qualifier", b::Values("HT", "R1", "R2", "R3", "R4")),
1282
+ b::Element(e::Required, "Test Results"),
1283
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE"),
1284
+ b::Element(e::NotUsed, "Range Minimum"),
1285
+ b::Element(e::NotUsed, "Range Maximum"),
1286
+ b::Element(e::NotUsed, "Measurement Significance Code"),
1287
+ b::Element(e::NotUsed, "Measurement Attribute Code"),
1288
+ b::Element(e::NotUsed, "Surface/Layer/Position Code"),
1289
+ b::Element(e::NotUsed, "Measurement Method or Device"),
1290
+ b::Element(e::NotUsed, "Code List Qualifier Code"),
1291
+ b::Element(e::NotUsed, "Industry Code")),
1292
+ b::Segment(4650, s::CN1, "Contract Information",
1293
+ r::Situational, d::RepeatCount.bounded(1),
1294
+ b::Element(e::Required, "Contract Type Code", b::Values("01", "02", "03", "04", "05", "06", "09")),
1295
+ b::Element(e::Required, "Contract Amount"),
1296
+ b::Element(e::Situational, "Contract Percentage"),
1297
+ b::Element(e::Situational, "Contract Code"),
1298
+ b::Element(e::Situational, "Terms Discount Percentage"),
1299
+ b::Element(e::Situational, "Contract Version Identifier")),
1300
+ b::Segment(4700, s::REF, "Repriced Line Item Reference Number",
1301
+ r::Situational, d::RepeatCount.bounded(1),
1302
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9B")),
1303
+ b::Element(e::Required, "Repriced Line Item Reference Number"),
1304
+ b::Element(e::NotUsed, "Description"),
1305
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1306
+ b::Segment(4700, s::REF, "Adjusted Repriced Line Item Reference Number",
1307
+ r::Situational, d::RepeatCount.bounded(1),
1308
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9D")),
1309
+ b::Element(e::Required, "Adjusted Repriced Line Item Reference Number"),
1310
+ b::Element(e::NotUsed, "Description"),
1311
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1312
+ b::Segment(4700, s::REF, "Prior Authorization",
1313
+ r::Situational, d::RepeatCount.bounded(5),
1314
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("G1")),
1315
+ b::Element(e::Required, "Prior Authorization or Referral Number"),
1316
+ b::Element(e::NotUsed, "Description"),
1317
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1318
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1319
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1320
+ b::Element(e::NotUsed, "Reference Identifier Qualifier"),
1321
+ b::Element(e::NotUsed, "Reference Identification"),
1322
+ b::Element(e::NotUsed, "Reference Identifier Qualifier"),
1323
+ b::Element(e::NotUsed, "Reference Identification"))),
1324
+ b::Segment(4700, s::REF, "Line Item Control Number",
1325
+ r::Situational, d::RepeatCount.bounded(1),
1326
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("6R")),
1327
+ b::Element(e::Required, "Line Item Control Number", b::MaxLength(30)),
1328
+ b::Element(e::NotUsed, "Description"),
1329
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1330
+ b::Segment(4700, s::REF, "Mammography Certification Number",
1331
+ r::Situational, d::RepeatCount.bounded(1),
1332
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("EW")),
1333
+ b::Element(e::Required, "Mammography Certification Number"),
1334
+ b::Element(e::NotUsed, "Description"),
1335
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1336
+ b::Segment(4700, s::REF, "Clinical Laboratory Improvement Amendment (CLIA) Number",
1337
+ r::Situational, d::RepeatCount.bounded(1),
1338
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("X4")),
1339
+ b::Element(e::Required, "Clinical Laboratory Improvement Amendment Number"),
1340
+ b::Element(e::NotUsed, "Description"),
1341
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1342
+ b::Segment(4700, s::REF, "Referring Clinical Laboratory Improvement Amendment (CLIA) Number",
1343
+ r::Situational, d::RepeatCount.bounded(1),
1344
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("F4")),
1345
+ b::Element(e::Required, "Referring CLIA Number"),
1346
+ b::Element(e::NotUsed, "Description"),
1347
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1348
+ b::Segment(4700, s::REF, "Immunization Batch Number",
1349
+ r::Situational, d::RepeatCount.bounded(1),
1350
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("BT")),
1351
+ b::Element(e::Required, "Immunization Batch Number"),
1352
+ b::Element(e::NotUsed, "Description"),
1353
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1354
+ b::Segment(4700, s::REF, "Referral Number",
1355
+ r::Situational, d::RepeatCount.bounded(5),
1356
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("9F")),
1357
+ b::Element(e::Required, "Referral Number"),
1358
+ b::Element(e::NotUsed, "Description"),
1359
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1360
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1361
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1362
+ b::Element(e::NotUsed, "Reference Identifier Qualifier"),
1363
+ b::Element(e::NotUsed, "Reference Identification"),
1364
+ b::Element(e::NotUsed, "Reference Identifier Qualifier"),
1365
+ b::Element(e::NotUsed, "Reference Identification"))),
1366
+ b::Segment(4750, s::AMT, "Sales Tax Amount",
1367
+ r::Situational, d::RepeatCount.bounded(1),
1368
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("T")),
1369
+ b::Element(e::Required, "Sales Tax Amount"),
1370
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")),
1371
+ b::Segment(4750, s::AMT, "Postage Claimed Amount",
1372
+ r::Situational, d::RepeatCount.bounded(1),
1373
+ b::Element(e::Required, "Amount Qualifier Code", b::Values("F4")),
1374
+ b::Element(e::Required, "Postage Claimed Amount"),
1375
+ b::Element(e::NotUsed, "Credit/Debit Flag Code")),
1376
+ b::Segment(4800, s::K3, "File Information",
1377
+ r::Situational, d::RepeatCount.bounded(10),
1378
+ b::Element(e::Required, "Fixed Format Identification"),
1379
+ b::Element(e::NotUsed, "Record Format Code"),
1380
+ b::Element(e::NotUsed, "COMPOSITE UNIT OF MEASURE")),
1381
+ b::Segment(4850, s::NTE, "Line Note",
1382
+ r::Situational, d::RepeatCount.bounded(1),
1383
+ b::Element(e::Required, "Note Reference Code", b::Values("ADD", "DCP")),
1384
+ b::Element(e::Required, "Line Note Text")),
1385
+ b::Segment(4850, s::NTE, "Third Party Organization Notes",
1386
+ r::Situational, d::RepeatCount.bounded(1),
1387
+ b::Element(e::Required, "Note Reference Code", b::Values("TPO")),
1388
+ b::Element(e::Required, "Line Note Text")),
1389
+ b::Segment(4880, s::PS1, "Purchased Service Information",
1390
+ r::Situational, d::RepeatCount.bounded(1),
1391
+ b::Element(e::Required, "Purchased Service Provider Identifier"),
1392
+ b::Element(e::Required, "Purchased Service Charge Amount"),
1393
+ b::Element(e::NotUsed, "State or Province Code")),
1394
+ b::Segment(4920, s::HCP, "Line Pricing/Repricing Information",
1395
+ r::Situational, d::RepeatCount.bounded(1),
1396
+ b::Element(e::Required, "Pricing Methodology", b::Values("00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14")),
1397
+ b::Element(e::Required, "Repriced Allowed Amount"),
1398
+ b::Element(e::Situational, "Repciced Saving Amount"),
1399
+ b::Element(e::Situational, "Repricing Organization Identifier"),
1400
+ b::Element(e::Situational, "Repricing Per Diem or Flat Rate Amount"),
1401
+ b::Element(e::Situational, "Repriced Approved Ambulatory Patient Group Code"),
1402
+ b::Element(e::Situational, "Repriced Approved Ambulatory Patient Group Amount"),
1403
+ b::Element(e::NotUsed, "Product/Service ID"),
1404
+ b::Element(e::Situational, "Product or Service ID", b::Values("ER", "HC", "IV", "WK")),
1405
+ b::Element(e::Situational, "Repriced Approved HCPCS Code"),
1406
+ b::Element(e::Situational, "Unit or Basis for Measurement Code", b::Values("MJ", "UN")),
1407
+ b::Element(e::Situational, "Repriced Approved Service Unit Count", b::MaxLength(8), b::MaxPrecision(3)),
1408
+ b::Element(e::Situational, "Reject Reason Code", b::Values("T1", "T2", "T3", "T4", "T5", "T6")),
1409
+ b::Element(e::Situational, "Policy Compliance Code", b::Values("1", "2", "3", "4", "5")),
1410
+ b::Element(e::Situational, "Exception Code", b::Values("1", "2", "3", "4", "5", "6"))),
1411
+
1412
+ d::LoopDef.build("2410 DRUG IDENTIFICATION",
1413
+ d::RepeatCount.bounded(1),
1414
+ b::Segment(4930, s::LIN, "Drug Identification",
1415
+ r::Situational, d::RepeatCount.bounded(1),
1416
+ b::Element(e::NotUsed, "Assigned Identification"),
1417
+ b::Element(e::Required, "Product or Service ID Qualifier", b::Values("N4", "EN", "EO", "HI", "ON", "UK", "UP")),
1418
+ b::Element(e::Required, "National Drug Code or Universal Product Number"),
1419
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1420
+ b::Element(e::NotUsed, "Product/Service ID"),
1421
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1422
+ b::Element(e::NotUsed, "Product/Service ID"),
1423
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1424
+ b::Element(e::NotUsed, "Product/Service ID"),
1425
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1426
+ b::Element(e::NotUsed, "Product/Service ID"),
1427
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1428
+ b::Element(e::NotUsed, "Product/Service ID"),
1429
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1430
+ b::Element(e::NotUsed, "Product/Service ID"),
1431
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1432
+ b::Element(e::NotUsed, "Product/Service ID"),
1433
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1434
+ b::Element(e::NotUsed, "Product/Service ID"),
1435
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1436
+ b::Element(e::NotUsed, "Product/Service ID"),
1437
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1438
+ b::Element(e::NotUsed, "Product/Service ID"),
1439
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1440
+ b::Element(e::NotUsed, "Product/Service ID"),
1441
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1442
+ b::Element(e::NotUsed, "Product/Service ID"),
1443
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1444
+ b::Element(e::NotUsed, "Product/Service ID"),
1445
+ b::Element(e::NotUsed, "Product/Service ID Qualifier"),
1446
+ b::Element(e::NotUsed, "Product/Service ID")),
1447
+ b::Segment(4940, s::CTP, "Drug Quantity",
1448
+ r::Required, d::RepeatCount.bounded(1),
1449
+ b::Element(e::NotUsed, "Class of Trade Code"),
1450
+ b::Element(e::NotUsed, "Price Identifier Code"),
1451
+ b::Element(e::NotUsed, "Unit Price"),
1452
+ b::Element(e::Required, "National Drug Unit Count"),
1453
+ b::Element(e::Required, "COMPOSITE UNIT OF MEASURE",
1454
+ b::Element(e::Required, "Unit or Basis for Measurement Code", b::Values("F2", "GR", "ME", "ML", "UN")),
1455
+ b::Element(e::NotUsed, "Exponent"),
1456
+ b::Element(e::NotUsed, "Multiplier"),
1457
+ b::Element(e::NotUsed, "Unit or Basis for Measurement Code"),
1458
+ b::Element(e::NotUsed, "Exponent"),
1459
+ b::Element(e::NotUsed, "Multiplier"),
1460
+ b::Element(e::NotUsed, "Unit or Basis for Measurement Code"),
1461
+ b::Element(e::NotUsed, "Exponent"),
1462
+ b::Element(e::NotUsed, "Multiplier"),
1463
+ b::Element(e::NotUsed, "Unit or Basis for Measurement Code"),
1464
+ b::Element(e::NotUsed, "Exponent"),
1465
+ b::Element(e::NotUsed, "Multiplier"),
1466
+ b::Element(e::NotUsed, "Unit or Basis for Measurement Code"),
1467
+ b::Element(e::NotUsed, "Exponent"),
1468
+ b::Element(e::NotUsed, "Multiplier")),
1469
+ b::Element(e::NotUsed, "Price Multiplier Qualifier"),
1470
+ b::Element(e::NotUsed, "Multiplier"),
1471
+ b::Element(e::NotUsed, "Monetary Amount"),
1472
+ b::Element(e::NotUsed, "Basis of Unit Price Code"),
1473
+ b::Element(e::NotUsed, "Condition Value"),
1474
+ b::Element(e::NotUsed, "Multiple Price Quantity")),
1475
+ b::Segment(4950, s::REF, "Rendering Provider Secondary Identification",
1476
+ r::Situational, d::RepeatCount.bounded(1),
1477
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("VY", "XZ")),
1478
+ b::Element(e::Required, "Prescription Number"),
1479
+ b::Element(e::NotUsed, "Description"),
1480
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
1481
+
1482
+ d::LoopDef.build("2420A RENDERING PROVIDER NAME",
1483
+ d::RepeatCount.bounded(1),
1484
+ b::Segment(5000, s::NM1, "Rendering Provider Name",
1485
+ r::Situational, d::RepeatCount.bounded(1),
1486
+ b::Element(e::Required, "Entity Identifier Code", b::Values("82")),
1487
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1488
+ b::Element(e::Required, "Rendering Provider Last Name"),
1489
+ b::Element(e::Situational, "Rendering Provider First Name"),
1490
+ b::Element(e::Situational, "Rendering Provider Middle Name or Initial"),
1491
+ b::Element(e::NotUsed, "Name Prefix"),
1492
+ b::Element(e::Situational, "Rendering Provider Suffix"),
1493
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1494
+ b::Element(e::Situational, "Rendering Provider Identifier"),
1495
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1496
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1497
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1498
+ b::Segment(5050, s::PRV, "Rendering Provider Specialty Information",
1499
+ r::Situational, d::RepeatCount.bounded(1),
1500
+ b::Element(e::Required, "Provider Code", b::Values("PE")),
1501
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("PXC")),
1502
+ b::Element(e::Required, "Provider Taxonmy Code"),
1503
+ b::Element(e::NotUsed, "State or Province Code"),
1504
+ b::Element(e::NotUsed, "PROVIDER SPECIALTY INFORMATION"),
1505
+ b::Element(e::NotUsed, "Provider Organization Code")),
1506
+ b::Segment(5250, s::REF, "Rendering Provider Secondary Identification",
1507
+ r::Situational, d::RepeatCount.bounded(20),
1508
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2", "LU")),
1509
+ b::Element(e::Required, "Rendering Provider Secondary Identifier"),
1510
+ b::Element(e::NotUsed, "Description"),
1511
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
1512
+
1513
+ d::LoopDef.build("2420B PURCHASED SERVICE PROVIDER NAME",
1514
+ d::RepeatCount.bounded(1),
1515
+ b::Segment(5000, s::NM1, "Purchased Service Provider Name",
1516
+ r::Situational, d::RepeatCount.bounded(1),
1517
+ b::Element(e::Required, "Entity Identifier Code", b::Values("QB")),
1518
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1519
+ b::Element(e::NotUsed, "Name Last"),
1520
+ b::Element(e::NotUsed, "Name First"),
1521
+ b::Element(e::NotUsed, "Name Middle"),
1522
+ b::Element(e::NotUsed, "Name Prefix"),
1523
+ b::Element(e::NotUsed, "Name Suffix"),
1524
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1525
+ b::Element(e::Situational, "Purchased Service Provider Identifier"),
1526
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1527
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1528
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1529
+ b::Segment(5250, s::REF, "Purchased Service Provider Secondary Identification",
1530
+ r::Situational, d::RepeatCount.bounded(20),
1531
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2")),
1532
+ b::Element(e::Required, "Purchased Service Provider Secondary Identifier"),
1533
+ b::Element(e::NotUsed, "Description"),
1534
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1535
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1536
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1537
+ b::Element(e::NotUsed, "Reference Identifier Qualifier"),
1538
+ b::Element(e::NotUsed, "Reference Identifier"),
1539
+ b::Element(e::NotUsed, "Reference Identifier Qualifier"),
1540
+ b::Element(e::NotUsed, "Reference Identifier")))),
1541
+
1542
+ d::LoopDef.build("2420C SERVICE FACILITY LOCATION NAME",
1543
+ d::RepeatCount.bounded(1),
1544
+ b::Segment(5000, s::NM1, "Service Facility Location Name",
1545
+ r::Situational, d::RepeatCount.bounded(1),
1546
+ b::Element(e::Required, "Entity Identifier Code", b::Values("77")),
1547
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
1548
+ b::Element(e::Required, "Laboratory or Facility Name"),
1549
+ b::Element(e::NotUsed, "Name First"),
1550
+ b::Element(e::NotUsed, "Name Middle"),
1551
+ b::Element(e::NotUsed, "Name Prefix"),
1552
+ b::Element(e::NotUsed, "Name Suffix"),
1553
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1554
+ b::Element(e::Situational, "Laboratory or Facility Primary Identifier"),
1555
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1556
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1557
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1558
+ b::Segment(5140, s::N3, "Service Facility Location Address",
1559
+ r::Required, d::RepeatCount.bounded(1),
1560
+ b::Element(e::Required, "Laboratory or Facility Address Line"),
1561
+ b::Element(e::Situational, "Laboratory or Facility Address Line")),
1562
+ b::Segment(5200, s::N4, "Service Facility Location City, State, ZIP Code",
1563
+ r::Required, d::RepeatCount.bounded(1),
1564
+ b::Element(e::Required, "Laboratory or Facility City Name"),
1565
+ b::Element(e::Situational, "Laboratory or Facility State or Province Code"),
1566
+ b::Element(e::Situational, "Laboratory or Facility Postal Zone or ZIP Code"),
1567
+ b::Element(e::Situational, "Country Code"),
1568
+ b::Element(e::NotUsed, "Location Qualifier"),
1569
+ b::Element(e::NotUsed, "Location Identifier"),
1570
+ b::Element(e::Situational, "Country Subdivision Code")),
1571
+ b::Segment(5250, s::REF, "Service Facility Location Secondary Identification",
1572
+ r::Situational, d::RepeatCount.bounded(3),
1573
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("G2", "LU")),
1574
+ b::Element(e::Required, "Service Facility Location Secondary Identifier"),
1575
+ b::Element(e::NotUsed, "Description"),
1576
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1577
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1578
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1579
+ b::Element(e::NotUsed, "Reference Identification Qualifier"),
1580
+ b::Element(e::NotUsed, "Reference Identification"),
1581
+ b::Element(e::NotUsed, "Reference Identification Qualifier"),
1582
+ b::Element(e::NotUsed, "Reference Identification")))),
1583
+
1584
+ d::LoopDef.build("2420D SUPERVISING PROVIDER NAME",
1585
+ d::RepeatCount.bounded(1),
1586
+ b::Segment(5000, s::NM1, "Supervising Provider Name",
1587
+ r::Situational, d::RepeatCount.bounded(1),
1588
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DQ")),
1589
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
1590
+ b::Element(e::Required, "Supervising Provider Last"),
1591
+ b::Element(e::Situational, "Supervising Provider First"),
1592
+ b::Element(e::Situational, "Supervising Provider Middle"),
1593
+ b::Element(e::NotUsed, "Name Prefix"),
1594
+ b::Element(e::Situational, "Supervising Provider Suffix"),
1595
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1596
+ b::Element(e::Situational, "Supervising Provider Identifier"),
1597
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1598
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1599
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1600
+ b::Segment(5250, s::REF, "Supervising Provider Secondary Identification",
1601
+ r::Situational, d::RepeatCount.bounded(20),
1602
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2", "LU")),
1603
+ b::Element(e::Required, "Supervising Provider Secondary Identifier"),
1604
+ b::Element(e::NotUsed, "Description"),
1605
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1606
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1607
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1608
+ b::Element(e::Required, "Reference Identification Qualifier"),
1609
+ b::Element(e::Required, "Reference Identification"),
1610
+ b::Element(e::Required, "Reference Identification Qualifier"),
1611
+ b::Element(e::Required, "Reference Identification")))),
1612
+
1613
+ d::LoopDef.build("2420E ORDERING PROVIDER NAME",
1614
+ d::RepeatCount.bounded(1),
1615
+ b::Segment(5000, s::NM1, "Ordering Provider Name",
1616
+ r::Situational, d::RepeatCount.bounded(1),
1617
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DK")),
1618
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
1619
+ b::Element(e::Required, "Ordering Provider Last"),
1620
+ b::Element(e::Situational, "Ordering Provider First"),
1621
+ b::Element(e::Situational, "Ordering Provider Middle"),
1622
+ b::Element(e::NotUsed, "Name Prefix"),
1623
+ b::Element(e::Situational, "Ordering Provider Suffix"),
1624
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1625
+ b::Element(e::Situational, "Ordering Provider Identifier"),
1626
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1627
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1628
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1629
+ b::Segment(5140, s::N3, "Ordering Provider Address",
1630
+ r::Situational, d::RepeatCount.bounded(1),
1631
+ b::Element(e::Required, "Ordering Provider Address Line"),
1632
+ b::Element(e::Situational, "Ordering Provider Address Line")),
1633
+ b::Segment(5200, s::N4, "Ordering Provider City, State, ZIP Code",
1634
+ r::Situational, d::RepeatCount.bounded(1),
1635
+ b::Element(e::Required, "Ordering Provider City Name"),
1636
+ b::Element(e::Situational, "Ordering Provider State or Province Code"),
1637
+ b::Element(e::Situational, "Ordering Provider Postal Zone or ZIP Code"),
1638
+ b::Element(e::Situational, "Country Code"),
1639
+ b::Element(e::NotUsed, "Location Qualifier"),
1640
+ b::Element(e::NotUsed, "Location Identifier"),
1641
+ b::Element(e::Situational, "Country Subdivision Code")),
1642
+ b::Segment(5250, s::REF, "Ordering Provider Secondary Identification",
1643
+ r::Situational, d::RepeatCount.bounded(20),
1644
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2")),
1645
+ b::Element(e::Required, "Ordering Provider Secondary Identifier"),
1646
+ b::Element(e::NotUsed, "Description"),
1647
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1648
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1649
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1650
+ b::Element(e::NotUsed, "Reference Identification Qualifier"),
1651
+ b::Element(e::NotUsed, "Reference Identification"),
1652
+ b::Element(e::NotUsed, "Reference Identification Qualifier"),
1653
+ b::Element(e::NotUsed, "Reference Identification"))),
1654
+ b::Segment(5300, s::PER, "Ordering Provider Contact Information",
1655
+ r::Situational, d::RepeatCount.bounded(1),
1656
+ b::Element(e::Required, "Contact Function Code", b::Values("IC")),
1657
+ b::Element(e::Situational, "Ordering Provider Contact Name"),
1658
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("EM", "FX", "TE")),
1659
+ b::Element(e::Required, "Communication Number"),
1660
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
1661
+ b::Element(e::Situational, "Communication Number"),
1662
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
1663
+ b::Element(e::Situational, "Communication Number"),
1664
+ b::Element(e::NotUsed, "Contact Inquiry Reference"))),
1665
+
1666
+ d::LoopDef.build("2420F REFERRING PROVIDER NAME",
1667
+ d::RepeatCount.bounded(2),
1668
+ b::Segment(5000, s::NM1, "Referring Provider Name",
1669
+ r::Situational, d::RepeatCount.bounded(1),
1670
+ b::Element(e::Required, "Entity Identifier Code", b::Values("DN", "P3")),
1671
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
1672
+ b::Element(e::Required, "Referring Provider Last"),
1673
+ b::Element(e::Situational, "Referring Provider First"),
1674
+ b::Element(e::Situational, "Referring Provider Middle"),
1675
+ b::Element(e::NotUsed, "Name Prefix"),
1676
+ b::Element(e::Situational, "Referring Provider Suffix"),
1677
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1678
+ b::Element(e::Situational, "Referring Provider Identifier"),
1679
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1680
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1681
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1682
+ b::Segment(5250, s::REF, "Referring Provider Secondary Identification",
1683
+ r::Situational, d::RepeatCount.bounded(20),
1684
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G", "G2")),
1685
+ b::Element(e::Required, "Referring Provider Secondary Identifier"),
1686
+ b::Element(e::NotUsed, "Description"),
1687
+ b::Element(e::Situational, "REFERENCE IDENTIFIER",
1688
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U")),
1689
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1690
+ b::Element(e::NotUsed, "Reference Identification Qualifier"),
1691
+ b::Element(e::NotUsed, "Reference Identification"),
1692
+ b::Element(e::NotUsed, "Reference Identification Qualifier"),
1693
+ b::Element(e::NotUsed, "Reference Identification")))),
1694
+
1695
+ d::LoopDef.build("2420G AMBULANCE PICK-UP LOCATION",
1696
+ d::RepeatCount.bounded(1),
1697
+ b::Segment(5000, s::NM1, "Ambulance Pick-up Location",
1698
+ r::Situational, d::RepeatCount.bounded(1),
1699
+ b::Element(e::Required, "Entity Identifier Code", b::Values("PW")),
1700
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
1701
+ b::Element(e::NotUsed, "Name Last"),
1702
+ b::Element(e::NotUsed, "Name First"),
1703
+ b::Element(e::NotUsed, "Name Middle"),
1704
+ b::Element(e::NotUsed, "Name Prefix"),
1705
+ b::Element(e::NotUsed, "Name Suffix"),
1706
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1707
+ b::Element(e::NotUsed, "Identification Code"),
1708
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1709
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1710
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1711
+ b::Segment(5140, s::N3, "Ambulance Pick-up Location Address",
1712
+ r::Required, d::RepeatCount.bounded(1),
1713
+ b::Element(e::Required, "Ambulance Pick-up Address Line"),
1714
+ b::Element(e::Situational, "Ambulance Pick-up Address Line")),
1715
+ b::Segment(5200, s::N4, "Ambulance Pick-up Location City, State, ZIP Code",
1716
+ r::Required, d::RepeatCount.bounded(1),
1717
+ b::Element(e::Required, "Ambulance Pick-up City Name"),
1718
+ b::Element(e::Situational, "Ambulance Pick-up State or Province Code"),
1719
+ b::Element(e::Situational, "Ambulance Pick-up Postal Zone or ZIP Code"),
1720
+ b::Element(e::Situational, "Country Code"),
1721
+ b::Element(e::NotUsed, "Location Qualifier"),
1722
+ b::Element(e::NotUsed, "Location Identifier"),
1723
+ b::Element(e::Situational, "Country Subdivision Code"))),
1724
+
1725
+ d::LoopDef.build("2420H AMBULANCE DROP-OFF LOCATION",
1726
+ d::RepeatCount.bounded(1),
1727
+ b::Segment(5000, s::NM1, "Ambulance Drop-off Location",
1728
+ r::Situational, d::RepeatCount.bounded(1),
1729
+ b::Element(e::Required, "Entity Identifier Code", b::Values("45")),
1730
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
1731
+ b::Element(e::Situational, "Ambulance Drop-off Location"),
1732
+ b::Element(e::NotUsed, "Name First"),
1733
+ b::Element(e::NotUsed, "Name Middle"),
1734
+ b::Element(e::NotUsed, "Name Prefix"),
1735
+ b::Element(e::NotUsed, "Name Suffix"),
1736
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1737
+ b::Element(e::NotUsed, "Identification Code"),
1738
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1739
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1740
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1741
+ b::Segment(5140, s::N3, "Ambulance Drop-off Location Address",
1742
+ r::Required, d::RepeatCount.bounded(1),
1743
+ b::Element(e::Required, "Ambulance Drop-off Address Line"),
1744
+ b::Element(e::Situational, "Ambulance Drop-off Address Line")),
1745
+ b::Segment(5200, s::N4, "Ambulance Drop-off Location City, State, ZIP Code",
1746
+ r::Required, d::RepeatCount.bounded(1),
1747
+ b::Element(e::Required, "Ambulance Drop-off City Name"),
1748
+ b::Element(e::Situational, "Ambulance Drop-off State or Province Code"),
1749
+ b::Element(e::Situational, "Ambulance Drop-off Postal Zone or ZIP Code"),
1750
+ b::Element(e::Situational, "Country Code"),
1751
+ b::Element(e::NotUsed, "Location Qualifier"),
1752
+ b::Element(e::NotUsed, "Location Identifier"),
1753
+ b::Element(e::Situational, "Country Subdivision Code"))),
1754
+
1755
+ d::LoopDef.build("2430 LINE ADJUDICATION INFORMATION",
1756
+ d::RepeatCount.bounded(15),
1757
+ b::Segment(5400, s::SVD, "Line Adjudication Information",
1758
+ r::Situational, d::RepeatCount.bounded(1),
1759
+ b::Element(e::Required, "Other Payer Primary Identifier"),
1760
+ b::Element(e::Required, "Service Line Paid Amount"),
1761
+ b::Element(e::Required, "COMPOSITE MEDICAL PROCEDURE IDENTIFIER",
1762
+ b::Element(e::Required, "Product or Service ID Qualifier", b::Values("ER", "HC", "IV", "WK")),
1763
+ b::Element(e::Required, "Procedure Code"),
1764
+ b::Element(e::Situational, "Procedure Modifier"),
1765
+ b::Element(e::Situational, "Procedure Modifier"),
1766
+ b::Element(e::Situational, "Procedure Modifier"),
1767
+ b::Element(e::Situational, "Procedure Modifier"),
1768
+ b::Element(e::Situational, "Procedure Code Description"),
1769
+ b::Element(e::NotUsed, "Product/Service ID")),
1770
+ b::Element(e::NotUsed, "Product/Service ID"),
1771
+ b::Element(e::Required, "Paid Service Unit Count", b::MaxLength(8), b::MaxPrecision(3)),
1772
+ b::Element(e::Situational, "Bundled or Unbundled Line Number")),
1773
+ b::Segment(5450, s::CAS, "Line Adjustment",
1774
+ r::Situational, d::RepeatCount.bounded(5),
1775
+ b::Element(e::Required, "Claim Adjustment Group Code", b::Values("CO", "CR", "OA", "PI", "PR")),
1776
+ b::Element(e::Required, "Adjustment Reason Code"),
1777
+ b::Element(e::Required, "Adjustment Amount"),
1778
+ b::Element(e::Situational, "Adjustment Quantity"),
1779
+ b::Element(e::Situational, "Adjustment Reason Code"),
1780
+ b::Element(e::Situational, "Adjustment Amount"),
1781
+ b::Element(e::Situational, "Adjustment Quantity"),
1782
+ b::Element(e::Situational, "Adjustment Reason Code"),
1783
+ b::Element(e::Situational, "Adjustment Amount"),
1784
+ b::Element(e::Situational, "Adjustment Quantity"),
1785
+ b::Element(e::Situational, "Adjustment Reason Code"),
1786
+ b::Element(e::Situational, "Adjustment Amount"),
1787
+ b::Element(e::Situational, "Adjustment Quantity"),
1788
+ b::Element(e::Situational, "Adjustment Reason Code"),
1789
+ b::Element(e::Situational, "Adjustment Amount"),
1790
+ b::Element(e::Situational, "Adjustment Quantity"),
1791
+ b::Element(e::Situational, "Adjustment Reason Code"),
1792
+ b::Element(e::Situational, "Adjustment Amount"),
1793
+ b::Element(e::Situational, "Adjustment Quantity")),
1794
+ b::Segment(5500, s::DTP, "Line Check or Remittance Date",
1795
+ r::Required, d::RepeatCount.bounded(1),
1796
+ b::Element(e::Required, "Date Time Qualifier", b::Values("573")),
1797
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
1798
+ b::Element(e::Required, "Adjudication or Payment Date")),
1799
+ b::Segment(5505, s::AMT, "Remaining Patient Liability",
1800
+ r::Situational, d::RepeatCount.bounded(1),
1801
+ b::Element(e::Required, "Amount Qualifier Code"),
1802
+ b::Element(e::Required, "Remaining Patient Liability"),
1803
+ b::Element(e::NotUsed, "Credit/Debit Flag Code"))),
1804
+
1805
+ d::LoopDef.build("2440 FORM IDENTIFICATION CODE",
1806
+ d::RepeatCount.unbounded,
1807
+ b::Segment(5510, s::LQ, "Form Identification Code",
1808
+ r::Situational, d::RepeatCount.bounded(1),
1809
+ b::Element(e::Required, "Code List Qualifier Code", b::Values("AS", "UT")),
1810
+ b::Element(e::Required, "Form Identifier")),
1811
+ b::Segment(5520, s::FRM, "Supporting Documentation",
1812
+ r::Required, d::RepeatCount.bounded(99),
1813
+ b::Element(e::Required, "Question Number/Letter"),
1814
+ b::Element(e::Situational, "Question Response", b::Values("N", "W", "Y")),
1815
+ b::Element(e::Situational, "Question Response"),
1816
+ b::Element(e::Situational, "Question Response"),
1817
+ b::Element(e::Situational, "Question Response")))))
1818
+
1819
+ HC837P = b.build(t::HC837,
1820
+ d::TableDef.header("Table 1 - Header",
1821
+ b::Segment(50, s::ST, "Transaction Set Header",
1822
+ r::Required, d::RepeatCount.bounded(1),
1823
+ b::Element(e::Required, "Transaction Set Identifier Code", b::Values("837")),
1824
+ b::Element(e::Required, "Transaction Set Control Number"),
1825
+ b::Element(e::Required, "Implementation Guide Version Name", b::Values("005010X222A1"))),
1826
+ b::Segment(100, s::BHT, "Beginning of Hierarchical Transaction",
1827
+ r::Required, d::RepeatCount.bounded(1),
1828
+ b::Element(e::Required, "Hierarchical Structure Code", b::Values("0019")),
1829
+ b::Element(e::Required, "Transaction Set Purpose Code", b::Values("00", "18")),
1830
+ b::Element(e::Required, "Originator Application Transaction Identifier", b::MaxLength(30)),
1831
+ b::Element(e::Required, "Transaction Set Creation Date"),
1832
+ b::Element(e::Required, "Transaction Set Creation Time"),
1833
+ b::Element(e::Required, "Claim or Encounter Identifier", b::Values("31", "CH", "RP"))),
1834
+
1835
+ d::LoopDef.build("1000A SUBMITTER NAME",
1836
+ d::RepeatCount.bounded(1),
1837
+ b::Segment(200, s::NM1, "Submitter Name",
1838
+ r::Required, d::RepeatCount.bounded(1),
1839
+ b::Element(e::Required, "Entity Identifier Code", b::Values("41")),
1840
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1841
+ b::Element(e::Required, "Submitter Last or Organization Name"),
1842
+ b::Element(e::Situational, "Submitter First Name"),
1843
+ b::Element(e::Situational, "Submitter Middle Name or Initial"),
1844
+ b::Element(e::NotUsed, "Name Prefix"),
1845
+ b::Element(e::NotUsed, "Name Suffix"),
1846
+ b::Element(e::Required, "Identification Qualifier Code", b::Values("46")),
1847
+ b::Element(e::Required, "Submitter Identifier"),
1848
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1849
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1850
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1851
+ b::Segment(450, s::PER, "Submitter EDI Contact Information",
1852
+ r::Required, d::RepeatCount.bounded(2),
1853
+ b::Element(e::Required, "Contact Function Code", b::Values("IC")),
1854
+ b::Element(e::Situational, "Submitter Contact Name"),
1855
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("EM", "FX", "TE")),
1856
+ b::Element(e::Required, "Communication Number"),
1857
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
1858
+ b::Element(e::Situational, "Communication Number"),
1859
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
1860
+ b::Element(e::Situational, "Communication Number"),
1861
+ b::Element(e::NotUsed, "Contact Inquiry Reference"))),
1862
+
1863
+ d::LoopDef.build("1000B RECEIVER NAME",
1864
+ d::RepeatCount.bounded(1),
1865
+ b::Segment(200, s::NM1, "Receiver Name",
1866
+ r::Required, d::RepeatCount.bounded(1),
1867
+ b::Element(e::Required, "Entity Identifier Code", b::Values("40")),
1868
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
1869
+ b::Element(e::Required, "Receiver Name"),
1870
+ b::Element(e::NotUsed, "Name First"),
1871
+ b::Element(e::NotUsed, "Name Last"),
1872
+ b::Element(e::NotUsed, "Name Prefix"),
1873
+ b::Element(e::NotUsed, "Name Suffix"),
1874
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("46")),
1875
+ b::Element(e::Required, "Receiver Primary Identifier"),
1876
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1877
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1878
+ b::Element(e::NotUsed, "Name Last or Organization Name")))),
1879
+
1880
+ d::TableDef.detail("Table 2 - Billing Provider Detail",
1881
+ d::LoopDef.build("2000A BILLING PROVIDER HIERARCHICAL LEVEL",
1882
+ d::RepeatCount.unbounded,
1883
+ b::Segment(10, s::HL, "Billing Provider Hierarchical Level",
1884
+ r::Required, d::RepeatCount.bounded(1),
1885
+ b::Element(e::Required, "Hierarchical ID Number"),
1886
+ b::Element(e::NotUsed, "Hierarchical Parent ID Number"),
1887
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("20")),
1888
+ b::Element(e::Required, "Hierachical Child Code")),
1889
+ b::Segment(30, s::PRV, "Billing Provider Specialty Information",
1890
+ r::Situational, d::RepeatCount.bounded(1),
1891
+ b::Element(e::Required, "Provider Code", b::Values("BI")),
1892
+ b::Element(e::Required, "Reference Identification Number", b::Values("PXC")),
1893
+ b::Element(e::Required, "Provider Taxonomy Code"),
1894
+ b::Element(e::NotUsed, "State or Province Code"),
1895
+ b::Element(e::NotUsed, "PROVIDER SPECIALTY INFORMATION"),
1896
+ b::Element(e::NotUsed, "Provider Organization Code")),
1897
+ b::Segment(100, s::CUR, "Foreign Currency Information",
1898
+ r::Situational, d::RepeatCount.bounded(1),
1899
+ b::Element(e::Required, "Entity Identifier Code", b::Values("85")),
1900
+ b::Element(e::Required, "Currency Code"),
1901
+ b::Element(e::NotUsed, "Exchange Rate"),
1902
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1903
+ b::Element(e::NotUsed, "Currency Code"),
1904
+ b::Element(e::NotUsed, "Currency Market/Exchange Code"),
1905
+ b::Element(e::NotUsed, "Date/Time Qualifier"),
1906
+ b::Element(e::NotUsed, "Date"),
1907
+ b::Element(e::NotUsed, "Time"),
1908
+ b::Element(e::NotUsed, "Date/Time Qualifier"),
1909
+ b::Element(e::NotUsed, "Date"),
1910
+ b::Element(e::NotUsed, "Time"),
1911
+ b::Element(e::NotUsed, "Date/Time Qualifier"),
1912
+ b::Element(e::NotUsed, "Date"),
1913
+ b::Element(e::NotUsed, "Time"),
1914
+ b::Element(e::NotUsed, "Date/Time Qualifier"),
1915
+ b::Element(e::NotUsed, "Date"),
1916
+ b::Element(e::NotUsed, "Time"),
1917
+ b::Element(e::NotUsed, "Date/Time Qualifier"),
1918
+ b::Element(e::NotUsed, "Date"),
1919
+ b::Element(e::NotUsed, "Time")),
1920
+
1921
+ d::LoopDef.build("2010AA BILLING PROVIDER NAME",
1922
+ d::RepeatCount.bounded(1),
1923
+ b::Segment(150, s::NM1, "Billing Provider Name",
1924
+ r::Required, d::RepeatCount.bounded(1),
1925
+ b::Element(e::Required, "Entity Identifier Code", b::Values("85")),
1926
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1927
+ b::Element(e::Required, "Billing Provider Last or Organizational Name"),
1928
+ b::Element(e::Situational, "Billing Provider First Name"),
1929
+ b::Element(e::Situational, "Billing Provider Middle Name or Initial"),
1930
+ b::Element(e::NotUsed, "Name Prefix"),
1931
+ b::Element(e::Situational, "Billing Provider Name Suffix"),
1932
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("XX")),
1933
+ b::Element(e::Situational, "Billing Provider Identifier"),
1934
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1935
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1936
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1937
+ b::Segment(250, s::N3, "Billing Provider Address",
1938
+ r::Required, d::RepeatCount.bounded(1),
1939
+ b::Element(e::Required, "Billing Provider Address Line"),
1940
+ b::Element(e::Situational, "Billing Provider Address Line")),
1941
+ b::Segment(300, s::N4, "Billing Provider City, State, ZIP Code",
1942
+ r::Required, d::RepeatCount.bounded(1),
1943
+ b::Element(e::Required, "Billing Provider City Name"),
1944
+ b::Element(e::Situational, "Billing Provider State or Province Code"),
1945
+ b::Element(e::Situational, "Billing Provider Postal Zone or ZIP Code"),
1946
+ b::Element(e::Situational, "Country Code"),
1947
+ b::Element(e::NotUsed, "Location Qualifier"),
1948
+ b::Element(e::NotUsed, "Location Identifier"),
1949
+ b::Element(e::Situational, "Country Subdivision Code")),
1950
+ b::Segment(350, s::REF, "Billing Provider Tax Identification",
1951
+ r::Required, d::RepeatCount.bounded(1),
1952
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("EI", "SY")),
1953
+ b::Element(e::Required, "Billing Provider Tax Identification Number"),
1954
+ b::Element(e::NotUsed, "Description"),
1955
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1956
+ b::Segment(350, s::REF, "Billing Provider UPIN/License Information",
1957
+ r::Situational, d::RepeatCount.bounded(2),
1958
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("0B", "1G")),
1959
+ b::Element(e::Required, "Billing Provider License and/or UPIN Information"),
1960
+ b::Element(e::NotUsed, "Description"),
1961
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
1962
+ b::Segment(400, s::PER, "Billing Provider Contact Information",
1963
+ r::Situational, d::RepeatCount.bounded(2),
1964
+ b::Element(e::Required, "Contact Function Code", b::Values("IC")),
1965
+ b::Element(e::Situational, "Billing Provider Contact Name"),
1966
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("EM", "FX", "TE")),
1967
+ b::Element(e::Required, "Communication Number"),
1968
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
1969
+ b::Element(e::Situational, "Communication Number"),
1970
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EM", "EX", "FX", "TE")),
1971
+ b::Element(e::Situational, "Communication Number"),
1972
+ b::Element(e::NotUsed, "Contact Inquiry Reference"))),
1973
+
1974
+ d::LoopDef.build("2010AB PAY-TO ADDRESS NAME",
1975
+ d::RepeatCount.bounded(1),
1976
+ b::Segment(150, s::NM1, "Pay-to Address Name",
1977
+ r::Situational, d::RepeatCount.bounded(1),
1978
+ b::Element(e::Required, "Entity Identifier Code", b::Values("87")),
1979
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
1980
+ b::Element(e::NotUsed, "Name Last or Organizational Name"),
1981
+ b::Element(e::NotUsed, "Name First"),
1982
+ b::Element(e::NotUsed, "Name Middle"),
1983
+ b::Element(e::NotUsed, "Name Prefix"),
1984
+ b::Element(e::NotUsed, "Name Suffix"),
1985
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
1986
+ b::Element(e::NotUsed, "Identifier Code"),
1987
+ b::Element(e::NotUsed, "Entity Relationship Code"),
1988
+ b::Element(e::NotUsed, "Entity Identifier Code"),
1989
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
1990
+ b::Segment(250, s::N3, "Pay-to Address - ADDRESS",
1991
+ r::Required, d::RepeatCount.bounded(1),
1992
+ b::Element(e::Required, "Pay-To Address Line"),
1993
+ b::Element(e::Situational, "Pay-To Address Line")),
1994
+ b::Segment(300, s::N4, "Pay-To Address City, State, ZIP Code",
1995
+ r::Required, d::RepeatCount.bounded(1),
1996
+ b::Element(e::Required, "Pay-to City Name"),
1997
+ b::Element(e::Situational, "Pay-to State or Province Code"),
1998
+ b::Element(e::Situational, "Pay-to Postal Zone or ZIP Code"),
1999
+ b::Element(e::Situational, "Country Code"),
2000
+ b::Element(e::NotUsed, "Location Qualifier"),
2001
+ b::Element(e::NotUsed, "Location Identifier"),
2002
+ b::Element(e::Situational, "Country Subdivision Code"))),
2003
+
2004
+ d::LoopDef.build("2010AC PAY-TO PLAN NAME",
2005
+ d::RepeatCount.bounded(1),
2006
+ b::Segment(150, s::NM1, "Pay-To Plan Name",
2007
+ r::Situational, d::RepeatCount.bounded(1),
2008
+ b::Element(e::Required, "Entity Identifier Code", b::Values("PE")),
2009
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
2010
+ b::Element(e::Required, "Pay-To Plan Organizational Name"),
2011
+ b::Element(e::NotUsed, "Name First"),
2012
+ b::Element(e::NotUsed, "Name Middle"),
2013
+ b::Element(e::NotUsed, "Name Prefix"),
2014
+ b::Element(e::NotUsed, "Name Suffix"),
2015
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("PI", "XV")),
2016
+ b::Element(e::Required, "Pay-To Plan Primary Identifier"),
2017
+ b::Element(e::NotUsed, "Entity Relationship Code"),
2018
+ b::Element(e::NotUsed, "Entity Identifier Code"),
2019
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
2020
+ b::Segment(250, s::N3, "Pay-to Plan Address",
2021
+ r::Required, d::RepeatCount.bounded(1),
2022
+ b::Element(e::Required, "Pay-To Plan Address Line"),
2023
+ b::Element(e::Situational, "Pay-To Plan Address Line")),
2024
+ b::Segment(300, s::N4, "Pay-To Plan City, State, ZIP Code",
2025
+ r::Required, d::RepeatCount.bounded(1),
2026
+ b::Element(e::Required, "Pay-to Plan City Name"),
2027
+ b::Element(e::Situational, "Pay-to Plan State or Province Code"),
2028
+ b::Element(e::Situational, "Pay-to Plan Postal Zone or ZIP Code"),
2029
+ b::Element(e::Situational, "Country Code"),
2030
+ b::Element(e::NotUsed, "Location Qualifier"),
2031
+ b::Element(e::NotUsed, "Location Identifier"),
2032
+ b::Element(e::Situational, "Country Subdivision Code")),
2033
+ b::Segment(350, s::REF, "Pay-to Plan Secondary Identification",
2034
+ r::Situational, d::RepeatCount.bounded(1),
2035
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U", "FY", "NF")),
2036
+ b::Element(e::Required, "Pay-to Plan Secondary Identifier"),
2037
+ b::Element(e::NotUsed, "Description"),
2038
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
2039
+ b::Segment(350, s::REF, "Pay-to Plan Tax Identification Number",
2040
+ r::Required, d::RepeatCount.bounded(1),
2041
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("EI")),
2042
+ b::Element(e::Required, "Pay-to Plan Tax Identification Number"),
2043
+ b::Element(e::NotUsed, "Description"),
2044
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))))),
2045
+
2046
+ d::TableDef.detail("Table 2 - Subscriber Detail",
2047
+ d::LoopDef.build("2000B SUBSCRIBER HIERARCHICAL LEVEL",
2048
+ d::RepeatCount.unbounded,
2049
+ b::Segment(10, s::HL, "Subscriber Hierarchical Level",
2050
+ r::Required, d::RepeatCount.bounded(1),
2051
+ b::Element(e::Required, "Hierarchical ID Number"),
2052
+ b::Element(e::Required, "Hierarchical Parent ID Number"),
2053
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("22")),
2054
+ b::Element(e::Required, "Hierachical Child values", b::Values("0", "1"))),
2055
+ b::Segment(50, s::SBR, "Subscriber Information",
2056
+ r::Situational, d::RepeatCount.bounded(1),
2057
+ b::Element(e::Required, "Payer Responsibility Sequence Number", b::Values("A", "B", "C", "D", "E", "F", "G", "H", "P", "S", "T", "U")),
2058
+ b::Element(e::Situational, "Individual Relationship Code", b::Values("18")),
2059
+ b::Element(e::Situational, "Subscriber Group or Policy Number"),
2060
+ b::Element(e::Situational, "Subscriber Group Name"),
2061
+ b::Element(e::Situational, "Insurance Type Code", b::Values("12", "13", "14", "15", "16", "41", "42", "43", "47")),
2062
+ b::Element(e::NotUsed, "Coordination of Benefits Code"),
2063
+ b::Element(e::NotUsed, "Yes/No Condition or Response Code"),
2064
+ b::Element(e::NotUsed, "Employment Status Code"),
2065
+ b::Element(e::Situational, "Claim Filing Indicator Code", b::Values("11", "12", "13", "14", "15", "16", "17", "AM", "BL", "CH", "CI", "DS", "FI", "HM", "LM", "MA", "MB", "MC", "OF", "TV", "VA", "WC", "ZZ"))),
2066
+ b::Segment(70, s::PAT, "Patient Information",
2067
+ r::Situational, d::RepeatCount.bounded(1),
2068
+ b::Element(e::NotUsed, "Individual Relationship Code"),
2069
+ b::Element(e::NotUsed, "Patient Location Code"),
2070
+ b::Element(e::NotUsed, "Employment Status Code"),
2071
+ b::Element(e::NotUsed, "Student Status Code"),
2072
+ b::Element(e::Situational, "Date Time Period Format Qualifier", b::Values("D8")),
2073
+ b::Element(e::Situational, "Patient Death Date"),
2074
+ b::Element(e::Situational, "Unit or Basis for Measurement Code", b::Values("01")),
2075
+ b::Element(e::Situational, "Patient Weight"),
2076
+ b::Element(e::Situational, "Pregnancy Indicator", b::Values("Y"))),
2077
+
2078
+ d::LoopDef.build("2010BA SUBSCRIBER NAME",
2079
+ d::RepeatCount.bounded(1),
2080
+ b::Segment(150, s::NM1, "Subscriber Name",
2081
+ r::Required, d::RepeatCount.bounded(1),
2082
+ b::Element(e::Required, "Entity Identifier Code", b::Values("IL")),
2083
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1", "2")),
2084
+ b::Element(e::Situational, "Subscriber Last Name"),
2085
+ b::Element(e::Situational, "Subscriber First Name"),
2086
+ b::Element(e::Situational, "Subscriber Middle Name or Initial"),
2087
+ b::Element(e::NotUsed, "Name Prefix"),
2088
+ b::Element(e::Situational, "Subscriber Name Suffix"),
2089
+ b::Element(e::Situational, "Identification Code Qualifier", b::Values("II", "MI")),
2090
+ b::Element(e::Situational, "Subscriber Primary Identifier"),
2091
+ b::Element(e::NotUsed, "Entity Relationship Code"),
2092
+ b::Element(e::NotUsed, "Entity Identifier Code"),
2093
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
2094
+ b::Segment(250, s::N3, "Subscriber Address",
2095
+ r::Situational, d::RepeatCount.bounded(1),
2096
+ b::Element(e::Required, "Subscriber Address Line"),
2097
+ b::Element(e::Situational, "Subscriber Address Line")),
2098
+ b::Segment(300, s::N4, "Subscriber City, State, ZIP Code",
2099
+ r::Situational, d::RepeatCount.bounded(1),
2100
+ b::Element(e::Required, "Subscriber City Name"),
2101
+ b::Element(e::Situational, "Subscriber State Code"),
2102
+ b::Element(e::Situational, "Subscriber Postal Zone or ZIP Code"),
2103
+ b::Element(e::Situational, "Country Code"),
2104
+ b::Element(e::NotUsed, "Location Qualifier"),
2105
+ b::Element(e::NotUsed, "Location Identifier"),
2106
+ b::Element(e::Situational, "Country Subdivision Code")),
2107
+ b::Segment(320, s::DMG, "Subscriber Demographic Information",
2108
+ r::Situational, d::RepeatCount.bounded(1),
2109
+ b::Element(e::Required, "Date Time Period Format Qualifier"),
2110
+ b::Element(e::Required, "Subscriber Birth Date"),
2111
+ b::Element(e::Required, "Subscriber Gender Code", b::Values("F", "M", "U")),
2112
+ b::Element(e::NotUsed, "Marital Status Code"),
2113
+ b::Element(e::NotUsed, "COMPOSITE RACE OR ETHNICITY INFORMATION"),
2114
+ b::Element(e::NotUsed, "Citizenship Status Code"),
2115
+ b::Element(e::NotUsed, "Country Code"),
2116
+ b::Element(e::NotUsed, "Basis of Verification Code"),
2117
+ b::Element(e::NotUsed, "Quantity"),
2118
+ b::Element(e::NotUsed, "Code List Qualifier Code"),
2119
+ b::Element(e::NotUsed, "Industry Code")),
2120
+ b::Segment(350, s::REF, "Subscriber Secondary Identification",
2121
+ r::Situational, d::RepeatCount.bounded(1),
2122
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("SY")),
2123
+ b::Element(e::Required, "Subscriber Supplemental Identifier"),
2124
+ b::Element(e::NotUsed, "Description"),
2125
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
2126
+ b::Segment(350, s::REF, "Property and Casualty Claim Number",
2127
+ r::Situational, d::RepeatCount.bounded(1),
2128
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("Y4")),
2129
+ b::Element(e::Required, "Property Casualty Claim Number"),
2130
+ b::Element(e::NotUsed, "Description"),
2131
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
2132
+ b::Segment(400, s::PER, "Property and Casualty Subscriber Contact Information",
2133
+ r::Situational, d::RepeatCount.bounded(1),
2134
+ b::Element(e::Required, "Contact Fuction Code", b::Values("IC")),
2135
+ b::Element(e::Situational, "Name"),
2136
+ b::Element(e::Required, "Communication Qualifier Number", b::Values("TE")),
2137
+ b::Element(e::Required, "Communication Number"),
2138
+ b::Element(e::Situational, "Communication Qualifier Number", b::Values("TE", "EX")),
2139
+ b::Element(e::Situational, "Communication Number"),
2140
+ b::Element(e::NotUsed, "Communication Qualifier Number"),
2141
+ b::Element(e::NotUsed, "Communication Number"),
2142
+ b::Element(e::NotUsed, "Contact Inquiry Reference"))),
2143
+
2144
+ d::LoopDef.build("2010BB PAYER NAME",
2145
+ d::RepeatCount.bounded(10),
2146
+ b::Segment(150, s::NM1, "Payer Name",
2147
+ r::Required, d::RepeatCount.bounded(1),
2148
+ b::Element(e::Required, "Entity Identifier Code", b::Values("PR")),
2149
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("2")),
2150
+ b::Element(e::Required, "Payer Name"),
2151
+ b::Element(e::NotUsed, "Name Last"),
2152
+ b::Element(e::NotUsed, "Name Middle"),
2153
+ b::Element(e::NotUsed, "Name Prefix"),
2154
+ b::Element(e::NotUsed, "Name Suffix"),
2155
+ b::Element(e::Required, "Identification Code Qualifier", b::Values("PI", "XV")),
2156
+ b::Element(e::Required, "Payer Identification"),
2157
+ b::Element(e::NotUsed, "Entity Relationship Code"),
2158
+ b::Element(e::NotUsed, "Entity Identifier Code"),
2159
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
2160
+ b::Segment(250, s::N3, "Payer Address",
2161
+ r::Situational, d::RepeatCount.bounded(2),
2162
+ b::Element(e::Required, "Payer Address Line"),
2163
+ b::Element(e::Situational, "Payer Address Line")),
2164
+ b::Segment(300, s::N4, "Payer City, State, ZIP Code",
2165
+ r::Situational, d::RepeatCount.bounded(1),
2166
+ b::Element(e::Required, "Payer City Name"),
2167
+ b::Element(e::Situational, "Payer State or Province Code"),
2168
+ b::Element(e::Situational, "Payer Postal Zone or ZIP Code"),
2169
+ b::Element(e::Situational, "Country Code"),
2170
+ b::Element(e::NotUsed, "Location Qualifier"),
2171
+ b::Element(e::NotUsed, "Location Identifier"),
2172
+ b::Element(e::Situational, "Country Subdivision Code")),
2173
+ b::Segment(350, s::REF, "Payer Secondary Identification",
2174
+ r::Situational, d::RepeatCount.bounded(3),
2175
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("2U", "EI", "FY", "NF")),
2176
+ b::Element(e::Required, "Payer Secondary Identifier"),
2177
+ b::Element(e::NotUsed, "Description"),
2178
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
2179
+ b::Segment(350, s::REF, "Billing Provider Secondary Identification",
2180
+ r::Situational, d::RepeatCount.bounded(2),
2181
+ b::Element(e::Required, "Reference Identification Qualifier", b::Values("G2", "LU")),
2182
+ b::Element(e::Required, "Billing Provider Secondary Identifier"),
2183
+ b::Element(e::NotUsed, "Description"),
2184
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER"))),
2185
+
2186
+ loop2300)),
2187
+
2188
+ d::TableDef.detail("Table 2 - Patient Detail",
2189
+ d::LoopDef.build("2000C PATIENT HIERARCHICAL LEVEL",
2190
+ d::RepeatCount.unbounded,
2191
+ b::Segment(10, s::HL, "Patient Hierachical Level",
2192
+ r::Situational, d::RepeatCount.bounded(1),
2193
+ b::Element(e::Required, "Hierarchical ID Number"),
2194
+ b::Element(e::Required, "Hierarchical Parent ID Number"),
2195
+ b::Element(e::Required, "Hierarchical Level Code", b::Values("23")),
2196
+ b::Element(e::Required, "Hierarchical Child Code", b::Values("0"))),
2197
+ b::Segment(70, s::PAT, "Patient Information",
2198
+ r::Required, d::RepeatCount.bounded(1),
2199
+ b::Element(e::Required, "Individual Relationship Code", b::Values("01", "19", "20", "21", "39", "40", "53", "G8")),
2200
+ b::Element(e::NotUsed, "Patient Location Code"),
2201
+ b::Element(e::NotUsed, "Employment Status Code"),
2202
+ b::Element(e::NotUsed, "Student Status Code"),
2203
+ b::Element(e::Situational, "Date Time Period Format Qualifier"),
2204
+ b::Element(e::Situational, "Patient Death Date"),
2205
+ b::Element(e::Situational, "Unit Basis for Measurement Code", b::Values("01")),
2206
+ b::Element(e::Situational, "Patient Weight"),
2207
+ b::Element(e::Situational, "Pregnancy Indicator", b::Values("Y"))),
2208
+
2209
+ d::LoopDef.build("2010CA PATIENT NAME",
2210
+ d::RepeatCount.bounded(1),
2211
+ b::Segment(150, s::NM1, "Patient Name",
2212
+ r::Required, d::RepeatCount.bounded(1),
2213
+ b::Element(e::Required, "Entity Qualifier Code", b::Values("QC")),
2214
+ b::Element(e::Required, "Entity Type Qualifier", b::Values("1")),
2215
+ b::Element(e::Required, "Patient Last Name"),
2216
+ b::Element(e::Situational, "Patient First Name"),
2217
+ b::Element(e::Situational, "Patient Middle Name or Initial"),
2218
+ b::Element(e::NotUsed, "Name Prefix"),
2219
+ b::Element(e::Situational, "Patient Name Suffix"),
2220
+ b::Element(e::NotUsed, "Identification Code Qualifier"),
2221
+ b::Element(e::NotUsed, "Identification Code"),
2222
+ b::Element(e::NotUsed, "Entity Relationship Code"),
2223
+ b::Element(e::NotUsed, "Entity Identification Code"),
2224
+ b::Element(e::NotUsed, "Name Last or Organization Name")),
2225
+ b::Segment(250, s::N3, "Patient Address",
2226
+ r::Required, d::RepeatCount.bounded(1),
2227
+ b::Element(e::Required, "Patient Address Line"),
2228
+ b::Element(e::Situational, "Patient Address Line")),
2229
+ b::Segment(300, s::N4, "Patient City, State, ZIP Code",
2230
+ r::Required, d::RepeatCount.bounded(1),
2231
+ b::Element(e::Required, "Patient City Name"),
2232
+ b::Element(e::Situational, "Patient State Code"),
2233
+ b::Element(e::Situational, "Patient Postal Zone or ZIP Code"),
2234
+ b::Element(e::Situational, "Country Code"),
2235
+ b::Element(e::NotUsed, "Location Qualifier"),
2236
+ b::Element(e::NotUsed, "Location Identifier"),
2237
+ b::Element(e::Situational, "Country Subdivision Code")),
2238
+ b::Segment(320, s::DMG, "Patient Demographic Information",
2239
+ r::Required, d::RepeatCount.bounded(1),
2240
+ b::Element(e::Required, "Date Time Period Format Qualifier", b::Values("D8")),
2241
+ b::Element(e::Required, "Patient Birth Date"),
2242
+ b::Element(e::Required, "Patient Gender Code", b::Values("F", "M", "U")),
2243
+ b::Element(e::NotUsed, "Marital Status Code"),
2244
+ b::Element(e::NotUsed, "COMPOSITE RACE OR ETHNICITY INFORMATION"),
2245
+ b::Element(e::NotUsed, "Citizenship Status Code"),
2246
+ b::Element(e::NotUsed, "Country Code"),
2247
+ b::Element(e::NotUsed, "Basis of Verification Code"),
2248
+ b::Element(e::NotUsed, "Quantity"),
2249
+ b::Element(e::NotUsed, "Code List Qualifier Code"),
2250
+ b::Element(e::NotUsed, "Industry Code")),
2251
+ b::Segment(350, s::REF, "Property and Casualty Claim Number",
2252
+ r::Situational, d::RepeatCount.bounded(1),
2253
+ b::Element(e::Required, "Reference Identifier Qualifier", b::Values("Y4")),
2254
+ b::Element(e::Required, "Property Casualty Claim Number"),
2255
+ b::Element(e::NotUsed, "Description"),
2256
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
2257
+ b::Segment(350, s::REF, "Property and Casualty Patient Identifier",
2258
+ r::Situational, d::RepeatCount.bounded(1),
2259
+ b::Element(e::Required, "Reference Identifier Qualifier", b::Values("1W", "SY")),
2260
+ b::Element(e::Required, "Property Casualty Patient Identifier"),
2261
+ b::Element(e::NotUsed, "Description"),
2262
+ b::Element(e::NotUsed, "REFERENCE IDENTIFIER")),
2263
+ b::Segment(400, s::PER, "Property and Casualty Patient Contact Information",
2264
+ r::Situational, d::RepeatCount.bounded(1),
2265
+ b::Element(e::Required, "Contact Function Code", b::Values("IC")),
2266
+ b::Element(e::Situational, "Name"),
2267
+ b::Element(e::Required, "Communication Number Qualifier", b::Values("TE")),
2268
+ b::Element(e::Required, "Communication Number"),
2269
+ b::Element(e::Situational, "Communication Number Qualifier", b::Values("EX")),
2270
+ b::Element(e::Situational, "Communication Number"),
2271
+ b::Element(e::NotUsed, "Communication Number Qualifier"),
2272
+ b::Element(e::NotUsed, "Communication Number"),
2273
+ b::Element(e::NotUsed, "Contact Inquiry Reference"))),
2274
+
2275
+ loop2300)),
2276
+
2277
+ # The X12 standard and X222 specification place the SE segment at what
2278
+ # appears to be the end of Table 2 - Patient Detail. This doesn't make
2279
+ # sense because Table 2 - Patient Detail doesn't occur if the patient
2280
+ # is the subscriber.
2281
+ #
2282
+ # If we placed it in both Table 2 - Subscriber Detail and Table 2 -
2283
+ # Patient Detail, it would incorrectly allow the segment to occur in
2284
+ # each table.
2285
+ #
2286
+ # This structure doesn't match the specification, but it does ensure
2287
+ # that the first occurrence of SE terminates the transaction set.
2288
+ d::TableDef.summary("Table 3 - Summary",
2289
+ b::Segment(5550, s::SE, "Transaction Set Trailer",
2290
+ r::Required, d::RepeatCount.bounded(1),
2291
+ b::Element(e::Required, "Number of Included Segments"),
2292
+ b::Element(e::Required, "Transaction Set Control Number"))))
2293
+
2294
+ end
2295
+ end
2296
+ end
2297
+ end