stupidedi 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +215 -0
- data/Rakefile +108 -0
- data/bin/edi-ed +71 -0
- data/bin/edi-pp +81 -0
- data/doc/Defining.md +0 -0
- data/doc/Generating.md +321 -0
- data/doc/LICENSE.md +0 -0
- data/doc/Navigating.md +645 -0
- data/doc/Parsing.md +0 -0
- data/doc/Serializing.md +7 -0
- data/doc/Tokenizing.md +0 -0
- data/doc/Validating.md +0 -0
- data/doc/design/Parser.md +0 -0
- data/doc/design/Reader.md +0 -0
- data/lib/ruby/array.rb +164 -0
- data/lib/ruby/blank.rb +67 -0
- data/lib/ruby/enumerable.rb +35 -0
- data/lib/ruby/exception.rb +33 -0
- data/lib/ruby/hash.rb +4 -0
- data/lib/ruby/instance_exec.rb +26 -0
- data/lib/ruby/module.rb +79 -0
- data/lib/ruby/object.rb +63 -0
- data/lib/ruby/string.rb +73 -0
- data/lib/ruby/symbol.rb +24 -0
- data/lib/ruby/to_d.rb +81 -0
- data/lib/ruby/to_date.rb +33 -0
- data/lib/ruby/to_time.rb +24 -0
- data/lib/ruby/try.rb +43 -0
- data/lib/stupidedi/blank_slate.rb +11 -0
- data/lib/stupidedi/builder/builder_dsl.rb +281 -0
- data/lib/stupidedi/builder/constraint_table.rb +418 -0
- data/lib/stupidedi/builder/generation.rb +112 -0
- data/lib/stupidedi/builder/instruction.rb +102 -0
- data/lib/stupidedi/builder/instruction_table.rb +204 -0
- data/lib/stupidedi/builder/navigation.rb +655 -0
- data/lib/stupidedi/builder/state_machine.rb +55 -0
- data/lib/stupidedi/builder/states/abstract_state.rb +332 -0
- data/lib/stupidedi/builder/states/failure_state.rb +69 -0
- data/lib/stupidedi/builder/states/functional_group_state.rb +97 -0
- data/lib/stupidedi/builder/states/initial_state.rb +63 -0
- data/lib/stupidedi/builder/states/interchange_state.rb +94 -0
- data/lib/stupidedi/builder/states/loop_state.rb +79 -0
- data/lib/stupidedi/builder/states/table_state.rb +96 -0
- data/lib/stupidedi/builder/states/transaction_set_state.rb +112 -0
- data/lib/stupidedi/builder/states/transmission_state.rb +59 -0
- data/lib/stupidedi/builder/tokenization.rb +196 -0
- data/lib/stupidedi/builder.rb +23 -0
- data/lib/stupidedi/color.rb +93 -0
- data/lib/stupidedi/config/code_list_config.rb +42 -0
- data/lib/stupidedi/config/editor_config.rb +51 -0
- data/lib/stupidedi/config/functional_group_config.rb +62 -0
- data/lib/stupidedi/config/interchange_config.rb +79 -0
- data/lib/stupidedi/config/transaction_set_config.rb +91 -0
- data/lib/stupidedi/config.rb +101 -0
- data/lib/stupidedi/editor/00501.rb +341 -0
- data/lib/stupidedi/editor/005010/N2.rb +0 -0
- data/lib/stupidedi/editor/005010/N3.rb +0 -0
- data/lib/stupidedi/editor/005010/N4.rb +63 -0
- data/lib/stupidedi/editor/005010/NM1.rb +0 -0
- data/lib/stupidedi/editor/005010.rb +469 -0
- data/lib/stupidedi/editor/X222-HC837.rb +195 -0
- data/lib/stupidedi/editor/abstract_ed.rb +36 -0
- data/lib/stupidedi/editor/claim_ack.rb +9 -0
- data/lib/stupidedi/editor/implementation_ack.rb +213 -0
- data/lib/stupidedi/editor/interchange_ack.rb +9 -0
- data/lib/stupidedi/editor/result.rb +100 -0
- data/lib/stupidedi/editor/result_set.rb +69 -0
- data/lib/stupidedi/editor/transaction_set_ed.rb +275 -0
- data/lib/stupidedi/editor/transmission_ed.rb +90 -0
- data/lib/stupidedi/editor.rb +37 -0
- data/lib/stupidedi/either.rb +287 -0
- data/lib/stupidedi/exceptions/invalid_element_error.rb +8 -0
- data/lib/stupidedi/exceptions/invalid_schema_error.rb +8 -0
- data/lib/stupidedi/exceptions/output_error.rb +8 -0
- data/lib/stupidedi/exceptions/parse_error.rb +8 -0
- data/lib/stupidedi/exceptions/stupidedi_error.rb +8 -0
- data/lib/stupidedi/exceptions/tokenize_error.rb +8 -0
- data/lib/stupidedi/exceptions/zipper_error.rb +8 -0
- data/lib/stupidedi/exceptions.rb +11 -0
- data/lib/stupidedi/guides/005010/X214-HN277.rb +409 -0
- data/lib/stupidedi/guides/005010/X221-HP835.rb +613 -0
- data/lib/stupidedi/guides/005010/X221A1-HP835.rb +613 -0
- data/lib/stupidedi/guides/005010/X222-HC837P.rb +2291 -0
- data/lib/stupidedi/guides/005010/X222A1-HC837P.rb +2297 -0
- data/lib/stupidedi/guides/005010/X231-FA999.rb +123 -0
- data/lib/stupidedi/guides/005010/X231A1-FA999.rb +119 -0
- data/lib/stupidedi/guides/005010/element_reqs.rb +38 -0
- data/lib/stupidedi/guides/005010/guide_builder.rb +180 -0
- data/lib/stupidedi/guides/005010/segment_reqs.rb +32 -0
- data/lib/stupidedi/guides/005010.rb +64 -0
- data/lib/stupidedi/guides.rb +5 -0
- data/lib/stupidedi/inspect.rb +26 -0
- data/lib/stupidedi/reader/input/abstract_input.rb +133 -0
- data/lib/stupidedi/reader/input/delegated_input.rb +111 -0
- data/lib/stupidedi/reader/input/file_input.rb +155 -0
- data/lib/stupidedi/reader/input.rb +30 -0
- data/lib/stupidedi/reader/position.rb +69 -0
- data/lib/stupidedi/reader/result.rb +168 -0
- data/lib/stupidedi/reader/segment_dict.rb +175 -0
- data/lib/stupidedi/reader/separators.rb +85 -0
- data/lib/stupidedi/reader/stream_reader.rb +172 -0
- data/lib/stupidedi/reader/token_reader.rb +466 -0
- data/lib/stupidedi/reader/tokens/component_element_tok.rb +56 -0
- data/lib/stupidedi/reader/tokens/composite_element_tok.rb +64 -0
- data/lib/stupidedi/reader/tokens/repeated_element_tok.rb +64 -0
- data/lib/stupidedi/reader/tokens/segment_tok.rb +51 -0
- data/lib/stupidedi/reader/tokens/simple_element_tok.rb +63 -0
- data/lib/stupidedi/reader.rb +121 -0
- data/lib/stupidedi/schema/abstract_def.rb +74 -0
- data/lib/stupidedi/schema/abstract_use.rb +73 -0
- data/lib/stupidedi/schema/code_list.rb +94 -0
- data/lib/stupidedi/schema/element_def.rb +173 -0
- data/lib/stupidedi/schema/element_req.rb +56 -0
- data/lib/stupidedi/schema/element_use.rb +251 -0
- data/lib/stupidedi/schema/functional_group_def.rb +114 -0
- data/lib/stupidedi/schema/interchange_def.rb +93 -0
- data/lib/stupidedi/schema/loop_def.rb +152 -0
- data/lib/stupidedi/schema/repeat_count.rb +85 -0
- data/lib/stupidedi/schema/segment_def.rb +108 -0
- data/lib/stupidedi/schema/segment_req.rb +43 -0
- data/lib/stupidedi/schema/segment_use.rb +98 -0
- data/lib/stupidedi/schema/syntax_note.rb +63 -0
- data/lib/stupidedi/schema/table_def.rb +139 -0
- data/lib/stupidedi/schema/transaction_set_def.rb +88 -0
- data/lib/stupidedi/schema.rb +28 -0
- data/lib/stupidedi/sets/absolute_set.rb +297 -0
- data/lib/stupidedi/sets/abstract_set.rb +174 -0
- data/lib/stupidedi/sets/null_set.rb +125 -0
- data/lib/stupidedi/sets/relative_complement.rb +137 -0
- data/lib/stupidedi/sets/relative_set.rb +269 -0
- data/lib/stupidedi/sets/universal_set.rb +104 -0
- data/lib/stupidedi/sets.rb +57 -0
- data/lib/stupidedi/tail_call.rb +109 -0
- data/lib/stupidedi/thread_local.rb +174 -0
- data/lib/stupidedi/values/abstract_element_val.rb +19 -0
- data/lib/stupidedi/values/abstract_val.rb +130 -0
- data/lib/stupidedi/values/composite_element_val.rb +95 -0
- data/lib/stupidedi/values/functional_group_val.rb +102 -0
- data/lib/stupidedi/values/interchange_val.rb +86 -0
- data/lib/stupidedi/values/invalid_envelope_val.rb +61 -0
- data/lib/stupidedi/values/invalid_segment_val.rb +78 -0
- data/lib/stupidedi/values/loop_val.rb +70 -0
- data/lib/stupidedi/values/repeated_element_val.rb +105 -0
- data/lib/stupidedi/values/segment_val.rb +104 -0
- data/lib/stupidedi/values/segment_val_group.rb +20 -0
- data/lib/stupidedi/values/simple_element_val.rb +80 -0
- data/lib/stupidedi/values/table_val.rb +66 -0
- data/lib/stupidedi/values/transaction_set_val.rb +66 -0
- data/lib/stupidedi/values/transmission_val.rb +52 -0
- data/lib/stupidedi/values.rb +21 -0
- data/lib/stupidedi/version.rb +3 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_defs.rb +54 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_reqs.rb +18 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/date_val.rb +527 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/fixnum_val.rb +335 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/float_val.rb +299 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/identifier_val.rb +287 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/string_val.rb +338 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types/time_val.rb +309 -0
- data/lib/stupidedi/versions/functional_groups/004010/element_types.rb +124 -0
- data/lib/stupidedi/versions/functional_groups/004010/functional_group_def.rb +30 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/GE.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/GS.rb +27 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/SE.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs/ST.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_defs.rb +23 -0
- data/lib/stupidedi/versions/functional_groups/004010/segment_reqs.rb +18 -0
- data/lib/stupidedi/versions/functional_groups/004010/syntax_notes.rb +174 -0
- data/lib/stupidedi/versions/functional_groups/004010.rb +38 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_defs.rb +1405 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_reqs.rb +18 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/date_val.rb +577 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/fixnum_val.rb +322 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/float_val.rb +354 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/identifier_val.rb +368 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/operators.rb +117 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/string_val.rb +398 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types/time_val.rb +327 -0
- data/lib/stupidedi/versions/functional_groups/005010/element_types.rb +132 -0
- data/lib/stupidedi/versions/functional_groups/005010/functional_group_def.rb +30 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK1.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK2.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AK9.rb +28 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/AMT.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BHT.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/BPR.rb +49 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CAS.rb +56 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CL1.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CLM.rb +41 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CLP.rb +34 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CN1.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR1.rb +32 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR2.rb +35 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CR3.rb +25 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CRC.rb +26 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CTP.rb +36 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CTX.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/CUR.rb +57 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DMG.rb +34 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DN1.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DN2.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DTM.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/DTP.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/FRM.rb +25 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/GE.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/GS.rb +27 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HCP.rb +39 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HI.rb +31 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/HL.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK3.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK4.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/IK5.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/K3.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LIN.rb +69 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LQ.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/LX.rb +19 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MEA.rb +39 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MIA.rb +45 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/MOA.rb +28 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N1.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N2.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N3.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/N4.rb +30 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/NM1.rb +35 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/NTE.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/OI.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PAT.rb +31 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PER.rb +32 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PLB.rb +40 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PRV.rb +26 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PS1.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/PWK.rb +30 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/QTY.rb +25 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/RDM.rb +23 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/REF.rb +23 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SBR.rb +28 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SE.rb +20 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/ST.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/STC.rb +30 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV1.rb +44 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV2.rb +29 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV3.rb +30 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SV5.rb +29 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SVC.rb +26 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/SVD.rb +24 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TOO.rb +21 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TRN.rb +22 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TS2.rb +40 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs/TS3.rb +45 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +227 -0
- data/lib/stupidedi/versions/functional_groups/005010/segment_reqs.rb +18 -0
- data/lib/stupidedi/versions/functional_groups/005010/syntax_notes.rb +165 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/FA999.rb +38 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +85 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HC837.rb +163 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HI278.rb +64 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HN277.rb +74 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835.rb +68 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HR276.rb +57 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HS270.rb +53 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/RA820.rb +240 -0
- data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs.rb +68 -0
- data/lib/stupidedi/versions/functional_groups/005010.rb +38 -0
- data/lib/stupidedi/versions/functional_groups.rb +8 -0
- data/lib/stupidedi/versions/interchanges/00401/element_defs.rb +224 -0
- data/lib/stupidedi/versions/interchanges/00401/interchange_def.rb +45 -0
- data/lib/stupidedi/versions/interchanges/00401/segment_defs/IEA.rb +20 -0
- data/lib/stupidedi/versions/interchanges/00401/segment_defs/ISA.rb +34 -0
- data/lib/stupidedi/versions/interchanges/00401/segment_defs/TA1.rb +23 -0
- data/lib/stupidedi/versions/interchanges/00401/segment_defs.rb +28 -0
- data/lib/stupidedi/versions/interchanges/00401.rb +23 -0
- data/lib/stupidedi/versions/interchanges/00501/element_defs.rb +269 -0
- data/lib/stupidedi/versions/interchanges/00501/interchange_def.rb +47 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs/IEA.rb +20 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISA.rb +34 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISB.rb +18 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs/ISE.rb +18 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs/TA1.rb +23 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs/TA3.rb +18 -0
- data/lib/stupidedi/versions/interchanges/00501/segment_defs.rb +37 -0
- data/lib/stupidedi/versions/interchanges/00501.rb +23 -0
- data/lib/stupidedi/versions/interchanges.rb +8 -0
- data/lib/stupidedi/versions.rb +6 -0
- data/lib/stupidedi/writer/claredi.rb +142 -0
- data/lib/stupidedi/writer/default.rb +124 -0
- data/lib/stupidedi/writer.rb +6 -0
- data/lib/stupidedi/zipper/abstract_cursor.rb +351 -0
- data/lib/stupidedi/zipper/dangling_cursor.rb +103 -0
- data/lib/stupidedi/zipper/edited_cursor.rb +157 -0
- data/lib/stupidedi/zipper/memoized_cursor.rb +131 -0
- data/lib/stupidedi/zipper/path.rb +124 -0
- data/lib/stupidedi/zipper/root_cursor.rb +120 -0
- data/lib/stupidedi/zipper.rb +25 -0
- data/lib/stupidedi.rb +66 -0
- data/spec/examples/integration/generating.example +551 -0
- data/spec/examples/integration/navigating.example +214 -0
- data/spec/examples/integration/parsing.example +445 -0
- data/spec/examples/ruby/array.example +476 -0
- data/spec/examples/ruby/blank.example +62 -0
- data/spec/examples/ruby/count.example +68 -0
- data/spec/examples/ruby/object.example +99 -0
- data/spec/examples/ruby/string.example +111 -0
- data/spec/examples/ruby/symbol.example +117 -0
- data/spec/examples/ruby/to_d.example +90 -0
- data/spec/examples/ruby/try.example +50 -0
- data/spec/examples/stupidedi/either.example +375 -0
- data/spec/examples/stupidedi/reader/failure.example +68 -0
- data/spec/examples/stupidedi/reader/input/delegated_input.example +292 -0
- data/spec/examples/stupidedi/reader/separators.example +73 -0
- data/spec/examples/stupidedi/reader/stream_reader.example +48 -0
- data/spec/examples/stupidedi/reader/success.example +34 -0
- data/spec/examples/stupidedi/reader/token_reader.example +775 -0
- data/spec/examples/stupidedi/reader.example +168 -0
- data/spec/examples/stupidedi/sets/absolute_set.example +1577 -0
- data/spec/examples/stupidedi/sets/null_set.example +2 -0
- data/spec/examples/stupidedi/sets/relative_set.example +2 -0
- data/spec/examples/stupidedi/sets/universal_set.example +1 -0
- data/spec/examples/stupidedi/versions/005010/element_types/an.example +201 -0
- data/spec/examples/stupidedi/versions/005010/element_types/dt.example +258 -0
- data/spec/examples/stupidedi/versions/005010/element_types/id.example +192 -0
- data/spec/examples/stupidedi/versions/005010/element_types/nn.example +177 -0
- data/spec/examples/stupidedi/versions/005010/element_types/r.example +178 -0
- data/spec/examples/stupidedi/versions/005010/element_types/tm.example +2 -0
- data/spec/examples/stupidedi/zipper/abstract_cursor.example +417 -0
- data/spec/examples/stupidedi/zipper.example +9 -0
- data/spec/fixtures/X186-AG824/1-bad.txt +21 -0
- data/spec/fixtures/X186-AG824/1-good.txt +17 -0
- data/spec/fixtures/X186-AG824/2-bad.txt +26 -0
- data/spec/fixtures/X186-AG824/2-good.txt +21 -0
- data/spec/fixtures/X186-AG824/3-bad.txt +87 -0
- data/spec/fixtures/X186-AG824/3-good.txt +61 -0
- data/spec/fixtures/X212-HN277/1-bad.txt +54 -0
- data/spec/fixtures/X212-HN277/1-good.txt +46 -0
- data/spec/fixtures/X212-HN277/2-bad.txt +37 -0
- data/spec/fixtures/X212-HN277/2-good.txt +29 -0
- data/spec/fixtures/X212-HN277/3-bad.txt +22 -0
- data/spec/fixtures/X212-HN277/3-good.txt +17 -0
- data/spec/fixtures/X212-HN277/4-bad.txt +30 -0
- data/spec/fixtures/X212-HN277/4-good.txt +24 -0
- data/spec/fixtures/X212-HR276/1-bad.txt +53 -0
- data/spec/fixtures/X212-HR276/1-good.txt +46 -0
- data/spec/fixtures/X212-HR276/2-bad.txt +45 -0
- data/spec/fixtures/X212-HR276/2-good.txt +38 -0
- data/spec/fixtures/X212-HR276/3-bad.txt +32 -0
- data/spec/fixtures/X212-HR276/3-good.txt +26 -0
- data/spec/fixtures/X212-HR276/4-bad.txt +32 -0
- data/spec/fixtures/X212-HR276/4-good.txt +26 -0
- data/spec/fixtures/X214-HN277/1-bad.txt +58 -0
- data/spec/fixtures/X214-HN277/1-good.txt +47 -0
- data/spec/fixtures/X214-HN277/2-bad.txt +34 -0
- data/spec/fixtures/X214-HN277/2-good.txt +22 -0
- data/spec/fixtures/X214-HN277/3-bad.txt +64 -0
- data/spec/fixtures/X214-HN277/3-good.txt +54 -0
- data/spec/fixtures/X214-HN277/4-bad.txt +77 -0
- data/spec/fixtures/X214-HN277/4-good.txt +63 -0
- data/spec/fixtures/X216-HI278/1-bad.txt +42 -0
- data/spec/fixtures/X216-HI278/1-good.txt +27 -0
- data/spec/fixtures/X216-HI278/2-bad.txt +43 -0
- data/spec/fixtures/X216-HI278/2-good.txt +29 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-1.txt +24 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-1_Clean.txt +20 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-2.txt +46 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-2_Clean.txt +30 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-3.txt +38 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-3_Clean.txt +24 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4a.txt +39 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4a_Clean.txt +24 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4b.txt +43 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-4b_Clean.txt +25 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-5.txt +63 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-5_Clean.txt +41 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-6.txt +36 -0
- data/spec/fixtures/X217-HI278/Sample_278_Request_5010X217-6_Clean.txt +20 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-1r.txt +34 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-1r_Clean.txt +23 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-2r.txt +46 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-2r_Clean.txt +31 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-3r.txt +44 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-3r_Clean.txt +26 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-4ar_Clean.txt +28 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-4br_Clean.txt +35 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-5r.txt +60 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-5r_Clean.txt +42 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-6r.txt +40 -0
- data/spec/fixtures/X217-HI278/Sample_278_Response_5010X217-6r_Clean.txt +24 -0
- data/spec/fixtures/X218-RA820/1-bad.txt +31 -0
- data/spec/fixtures/X218-RA820/1-good.txt +25 -0
- data/spec/fixtures/X218-RA820/2-bad.txt +37 -0
- data/spec/fixtures/X218-RA820/2-good.txt +29 -0
- data/spec/fixtures/X218-RA820/3-bad.txt +29 -0
- data/spec/fixtures/X218-RA820/3-good.txt +23 -0
- data/spec/fixtures/X218-RA820/4-bad.txt +36 -0
- data/spec/fixtures/X218-RA820/4-good.txt +27 -0
- data/spec/fixtures/X220-BE834/1-bad.txt +35 -0
- data/spec/fixtures/X220-BE834/1-good.txt +29 -0
- data/spec/fixtures/X220-BE834/10-bad.txt +26 -0
- data/spec/fixtures/X220-BE834/10-good.txt +19 -0
- data/spec/fixtures/X220-BE834/2-bad.txt +31 -0
- data/spec/fixtures/X220-BE834/2-good.txt +23 -0
- data/spec/fixtures/X220-BE834/3-bad.txt +36 -0
- data/spec/fixtures/X220-BE834/3-good.txt +26 -0
- data/spec/fixtures/X220-BE834/4-bad.txt +27 -0
- data/spec/fixtures/X220-BE834/4-good.txt +21 -0
- data/spec/fixtures/X220-BE834/5-bad.txt +26 -0
- data/spec/fixtures/X220-BE834/5-good.txt +17 -0
- data/spec/fixtures/X220-BE834/6-bad.txt +25 -0
- data/spec/fixtures/X220-BE834/6-good.txt +20 -0
- data/spec/fixtures/X220-BE834/7-bad.txt +25 -0
- data/spec/fixtures/X220-BE834/7-good.txt +20 -0
- data/spec/fixtures/X220-BE834/8-bad.txt +25 -0
- data/spec/fixtures/X220-BE834/8-good.txt +20 -0
- data/spec/fixtures/X220-BE834/9-bad.txt +27 -0
- data/spec/fixtures/X220-BE834/9-good.txt +21 -0
- data/spec/fixtures/X221-HP835/1-bad.txt +58 -0
- data/spec/fixtures/X221-HP835/1-good.txt +40 -0
- data/spec/fixtures/X221-HP835/2-bad.txt +51 -0
- data/spec/fixtures/X221-HP835/2-good.txt +40 -0
- data/spec/fixtures/X221-HP835/3a-bad.txt +78 -0
- data/spec/fixtures/X221-HP835/3a-good.txt +49 -0
- data/spec/fixtures/X221-HP835/3b-bad.txt +60 -0
- data/spec/fixtures/X221-HP835/3b-good.txt +32 -0
- data/spec/fixtures/X221-HP835/3c-bad.txt +55 -0
- data/spec/fixtures/X221-HP835/3c-good.txt +34 -0
- data/spec/fixtures/X222-HC837/1-bad.txt +60 -0
- data/spec/fixtures/X222-HC837/1-good.txt +53 -0
- data/spec/fixtures/X222-HC837/10a-bad.txt +52 -0
- data/spec/fixtures/X222-HC837/10a-good.txt +40 -0
- data/spec/fixtures/X222-HC837/10b-bad.txt +99 -0
- data/spec/fixtures/X222-HC837/10b-good.txt +80 -0
- data/spec/fixtures/X222-HC837/10c-bad.txt +105 -0
- data/spec/fixtures/X222-HC837/10c-good.txt +80 -0
- data/spec/fixtures/X222-HC837/11-bad.txt +69 -0
- data/spec/fixtures/X222-HC837/11-good.txt +45 -0
- data/spec/fixtures/X222-HC837/12-bad.txt +73 -0
- data/spec/fixtures/X222-HC837/12-good.txt +51 -0
- data/spec/fixtures/X222-HC837/13-bad.txt +64 -0
- data/spec/fixtures/X222-HC837/13-good.txt +46 -0
- data/spec/fixtures/X222-HC837/3a-bad.txt +83 -0
- data/spec/fixtures/X222-HC837/3a-good.txt +59 -0
- data/spec/fixtures/X222-HC837/3b-bad.txt +97 -0
- data/spec/fixtures/X222-HC837/3b-good.txt +70 -0
- data/spec/fixtures/X222-HC837/3c-bad.txt +95 -0
- data/spec/fixtures/X222-HC837/3c-good.txt +74 -0
- data/spec/fixtures/X222-HC837/4-bad.txt +67 -0
- data/spec/fixtures/X222-HC837/4-good.txt +48 -0
- data/spec/fixtures/X222-HC837/5-bad.txt +73 -0
- data/spec/fixtures/X222-HC837/5-good.txt +60 -0
- data/spec/fixtures/X222-HC837/6-bad.txt +50 -0
- data/spec/fixtures/X222-HC837/6-good.txt +39 -0
- data/spec/fixtures/X222-HC837/7-bad.txt +93 -0
- data/spec/fixtures/X222-HC837/7-good.txt +78 -0
- data/spec/fixtures/X222-HC837/8-bad.txt +64 -0
- data/spec/fixtures/X222-HC837/8-good.txt +52 -0
- data/spec/fixtures/X222-HC837/9-bad.txt +56 -0
- data/spec/fixtures/X222-HC837/9-good.txt +38 -0
- data/spec/fixtures/X223-HC837/1-bad.txt +66 -0
- data/spec/fixtures/X223-HC837/1-good.txt +53 -0
- data/spec/fixtures/X223-HC837/2-bad.txt +69 -0
- data/spec/fixtures/X223-HC837/2-good.txt +60 -0
- data/spec/fixtures/X223-HC837/3-bad.txt +89 -0
- data/spec/fixtures/X223-HC837/3-good.txt +61 -0
- data/spec/fixtures/X223-HC837/4-bad.txt +60 -0
- data/spec/fixtures/X223-HC837/4-good.txt +40 -0
- data/spec/fixtures/X223-HC837/5-bad.txt +75 -0
- data/spec/fixtures/X223-HC837/5-good.txt +58 -0
- data/spec/fixtures/X224-HC837/1-bad.txt +54 -0
- data/spec/fixtures/X224-HC837/1-good.txt +44 -0
- data/spec/fixtures/X224-HC837/2a-bad.txt +52 -0
- data/spec/fixtures/X224-HC837/2a-good.txt +42 -0
- data/spec/fixtures/X224-HC837/2b-bad.txt +67 -0
- data/spec/fixtures/X224-HC837/2b-good.txt +52 -0
- data/spec/fixtures/X224-HC837/3-bad.txt +67 -0
- data/spec/fixtures/X224-HC837/3-good.txt +51 -0
- data/spec/fixtures/X224-HC837/4-bad.txt +49 -0
- data/spec/fixtures/X224-HC837/4-good.txt +40 -0
- data/spec/fixtures/X230-FA997/1-bad.txt +19 -0
- data/spec/fixtures/X230-FA997/1-good.txt +16 -0
- data/spec/fixtures/X231-FA999/1-bad.txt +20 -0
- data/spec/fixtures/X231-FA999/1-good.txt +20 -0
- data/spec/fixtures/X279-HB271/1-bad.txt +36 -0
- data/spec/fixtures/X279-HB271/1-good.txt +30 -0
- data/spec/fixtures/X279-HB271/2-bad.txt +22 -0
- data/spec/fixtures/X279-HB271/2-good.txt +16 -0
- data/spec/fixtures/X279-HB271/3-bad.txt +44 -0
- data/spec/fixtures/X279-HB271/3-good.txt +36 -0
- data/spec/fixtures/X279-HS270/1-bad.txt +29 -0
- data/spec/fixtures/X279-HS270/1-good.txt +23 -0
- data/spec/fixtures/X279-HS270/2-bad.txt +32 -0
- data/spec/fixtures/X279-HS270/2-good.txt +25 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/support/fixtures.rb +26 -0
- data/spec/support/matchers/either_matchers.rb +26 -0
- data/spec/support/matchers/navigation_matchers.rb +247 -0
- data/spec/support/node.rb +41 -0
- data/spec/support/quickcheck/characters.rb +28 -0
- data/spec/support/quickcheck/property.rb +105 -0
- data/spec/support/quickcheck/serialized_edi.rb +399 -0
- data/spec/support/quickcheck.rb +302 -0
- data/spec/support/rcov.rb +34 -0
- metadata +577 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
module Guides
|
|
3
|
+
module FiftyTen
|
|
4
|
+
module X231
|
|
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
|
+
FA999 = b.build(t::FA999,
|
|
14
|
+
d::TableDef.header("Table 1 - Header",
|
|
15
|
+
b::Segment(100, s::ST, "Transaction Set Header",
|
|
16
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
17
|
+
b::Element(e::Required, "Transaction Set Identifier Code", b::Values("999")),
|
|
18
|
+
b::Element(e::Required, "Transaction Set Control Number"),
|
|
19
|
+
b::Element(e::Required, "Implementation Guide Version Name", b::Values("005010X231"))),
|
|
20
|
+
b::Segment(200, s::AK1, "Functional Group Response Header",
|
|
21
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
22
|
+
b::Element(e::Required, "Functional Identifier Code"),
|
|
23
|
+
b::Element(e::Required, "Group Control Number"),
|
|
24
|
+
b::Element(e::Required, "Version, Release, or Industry Identifier Code")),
|
|
25
|
+
|
|
26
|
+
d::LoopDef.build("2000 TRANSACTION SET RESPONSE HEADER",
|
|
27
|
+
d::RepeatCount.unbounded,
|
|
28
|
+
b::Segment(300, s::AK2, "Transaction Set Response Header",
|
|
29
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
30
|
+
b::Element(e::Required, "Transaction Set Identifier Code"),
|
|
31
|
+
b::Element(e::Required, "Transaction Set Control Number"),
|
|
32
|
+
b::Element(e::Situational, "Implementation Convention Reference")),
|
|
33
|
+
|
|
34
|
+
d::LoopDef.build("2100 ERROR IDENTIFICATION",
|
|
35
|
+
d::RepeatCount.unbounded,
|
|
36
|
+
b::Segment(400, s::IK3, "Error Identification",
|
|
37
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
38
|
+
b::Element(e::Required, "Segment ID Code"),
|
|
39
|
+
b::Element(e::Required, "Segment Position in Transaction Set"),
|
|
40
|
+
b::Element(e::Situational, "Loop Identifier Code"),
|
|
41
|
+
b::Element(e::Required, "Implementation Segment Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "I4", "I6", "I7", "I8", "I9"))),
|
|
42
|
+
b::Segment(500, s::CTX, "Segment Context",
|
|
43
|
+
r::Situational, d::RepeatCount.bounded(9),
|
|
44
|
+
b::Element(e::Required, "CONTEXT IDENTIFICATION",
|
|
45
|
+
b::Element(e::Required, "Context Name", b::Values("SITUATIONAL TRIGGER")),
|
|
46
|
+
b::Element(e::NotUsed, "Context Reference")),
|
|
47
|
+
b::Element(e::Required, "Segment ID Code"),
|
|
48
|
+
b::Element(e::Required, "Segment Position in Transaction Set"),
|
|
49
|
+
b::Element(e::Situational, "Loop Identifier Code"),
|
|
50
|
+
b::Element(e::Situational, "POSITION IN SEGMENT",
|
|
51
|
+
b::Element(e::Required, "Element Position in Segment"),
|
|
52
|
+
b::Element(e::Situational, "Component Data Element Position in Composite"),
|
|
53
|
+
b::Element(e::Situational, "Repeating Data Element Position")),
|
|
54
|
+
b::Element(e::Situational, "REFERENCE IN SEGMENT",
|
|
55
|
+
b::Element(e::Required, "Data Element Reference Number"),
|
|
56
|
+
b::Element(e::Situational, "Component Data Element Reference Number"))),
|
|
57
|
+
b::Segment(500, s::CTX, "Business Unit Identifier",
|
|
58
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
59
|
+
b::Element(e::Required, "CONTEXT IDENTIFICATION",
|
|
60
|
+
b::Element(e::Required, "Context Name", b::Values("TRN02", "NM109", "PATIENT NAME NM109", "SUBSCRIBER NAME NM109", "ENT01", "SUBSCRIBER NUMBER REF02", "CLM01")),
|
|
61
|
+
b::Element(e::Required, "Context Reference")),
|
|
62
|
+
b::Element(e::NotUsed, "Segment ID Code"),
|
|
63
|
+
b::Element(e::NotUsed, "Segment Position in Transaction Set"),
|
|
64
|
+
b::Element(e::NotUsed, "Loop Identifier Code"),
|
|
65
|
+
b::Element(e::NotUsed, "POSITION IN SEGMENT"),
|
|
66
|
+
b::Element(e::NotUsed, "REFERENCE IN SEGMENT")),
|
|
67
|
+
|
|
68
|
+
d::LoopDef.build("2110 IMPLEMENTATION DATA ELEMENT NOTE",
|
|
69
|
+
d::RepeatCount.unbounded,
|
|
70
|
+
b::Segment(600, s::IK4, "Implementation Data Element Note",
|
|
71
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
72
|
+
b::Element(e::Required, "POSITION IN SEGMENT",
|
|
73
|
+
b::Element(e::Required, "Element Position in Segment"),
|
|
74
|
+
b::Element(e::Situational, "Component Data Element Position in Composite"),
|
|
75
|
+
b::Element(e::Situational, "Repeating Data Element Position")),
|
|
76
|
+
b::Element(e::Situational, "Data Element Reference Number"),
|
|
77
|
+
b::Element(e::Required, "Implementation Data Element Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12", "13", "I10", "I11", "I12", "I13", "I6", "I9")),
|
|
78
|
+
b::Element(e::Situational, "Copy of Bad Data Element")),
|
|
79
|
+
b::Segment(700, s::CTX, "Element Context",
|
|
80
|
+
r::Situational, d::RepeatCount.bounded(10),
|
|
81
|
+
b::Element(e::Required, "CONTEXT IDENTIFICATION",
|
|
82
|
+
b::Element(e::Required, "Context Name", b::Values("SITUATIONAL TRIGGER")),
|
|
83
|
+
b::Element(e::NotUsed, "Context Reference")),
|
|
84
|
+
b::Element(e::Required, "Segment ID Code"),
|
|
85
|
+
b::Element(e::Required, "Segment Position in Transaction Set"),
|
|
86
|
+
b::Element(e::Situational, "Loop Identifier Code"),
|
|
87
|
+
b::Element(e::Situational, "POSITION IN SEGMENT",
|
|
88
|
+
b::Element(e::Required, "Element Position in Segment"),
|
|
89
|
+
b::Element(e::Situational, "Component Data Element Position in Composite"),
|
|
90
|
+
b::Element(e::Situational, "Repeating Data Element Position")),
|
|
91
|
+
b::Element(e::Situational, "REFERENCE IN SEGMENT",
|
|
92
|
+
b::Element(e::Required, "Data Element Reference Number"),
|
|
93
|
+
b::Element(e::Situational, "Component Data Element Reference Number"))))),
|
|
94
|
+
|
|
95
|
+
b::Segment(800, s::IK5, "Implementation Transaction Set Response Trailer",
|
|
96
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
97
|
+
b::Element(e::Required, "Transaction Set Acknowledgement Code", b::Values("A", "E", "M", "R", "W", "X")),
|
|
98
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I6")),
|
|
99
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I6")),
|
|
100
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I6")),
|
|
101
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I6")),
|
|
102
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I6")))),
|
|
103
|
+
|
|
104
|
+
b::Segment( 900, s::AK9, "Functional Group Response Trailer",
|
|
105
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
106
|
+
b::Element(e::Required, "Functional Group Acknowledgement Code", b::Values("A", "E", "M", "P", "R", "W", "X")),
|
|
107
|
+
b::Element(e::Required, "Number of Transaction Sets Included"),
|
|
108
|
+
b::Element(e::Required, "Number of Received Transaction Sets"),
|
|
109
|
+
b::Element(e::Required, "Number of Accepted Transaction Sets"),
|
|
110
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
111
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
112
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
113
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
114
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26"))),
|
|
115
|
+
b::Segment(200, s::SE, "Transaction Set Trailer",
|
|
116
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
117
|
+
b::Element(e::Required, "Transaction Segment Count"),
|
|
118
|
+
b::Element(e::Required, "Transaction Set Control Number"))))
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
module Guides
|
|
3
|
+
module FiftyTen
|
|
4
|
+
module X231A1
|
|
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
|
+
FA999 = b.build(t::FA999,
|
|
14
|
+
d::TableDef.header("Table 1 - Header",
|
|
15
|
+
b::Segment(100, s::ST, "Transaction Set Header",
|
|
16
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
17
|
+
b::Element(e::Required, "Transaction Set Identifier Code", b::Values("999")),
|
|
18
|
+
b::Element(e::Required, "Transaction Set Control Number"),
|
|
19
|
+
b::Element(e::Required, "Implementation Guide Version Name", b::Values("005010X231A1"))),
|
|
20
|
+
b::Segment(200, s::AK1, "Functional Group Response Header",
|
|
21
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
22
|
+
b::Element(e::Required, "Functional Identifier Code"),
|
|
23
|
+
b::Element(e::Required, "Group Control Number"),
|
|
24
|
+
b::Element(e::Required, "Version, Release, or Industry Identifier Code")),
|
|
25
|
+
|
|
26
|
+
d::LoopDef.build("2000 TRANSACTION SET RESPONSE HEADER",
|
|
27
|
+
d::RepeatCount.unbounded,
|
|
28
|
+
b::Segment(300, s::AK2, "Transaction Set Response Header",
|
|
29
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
30
|
+
b::Element(e::Required, "Transaction Set Identifier Code"),
|
|
31
|
+
b::Element(e::Required, "Transaction Set Control Number"),
|
|
32
|
+
b::Element(e::Situational, "Implementation Convention Reference")),
|
|
33
|
+
|
|
34
|
+
d::LoopDef.build("2100 ERROR IDENTIFICATION",
|
|
35
|
+
d::RepeatCount.unbounded,
|
|
36
|
+
b::Segment(400, s::IK3, "Error Identification",
|
|
37
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
38
|
+
b::Element(e::Required, "Segment ID Code"),
|
|
39
|
+
b::Element(e::Required, "Segment Position in Transaction Set"),
|
|
40
|
+
b::Element(e::Situational, "Loop Identifier Code"),
|
|
41
|
+
b::Element(e::Required, "Implementation Segment Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "I4", "I6", "I7", "I8", "I9"))),
|
|
42
|
+
b::Segment(500, s::CTX, "Segment Context",
|
|
43
|
+
r::Situational, d::RepeatCount.bounded(9),
|
|
44
|
+
b::Element(e::Required, "CONTEXT IDENTIFICATION",
|
|
45
|
+
b::Element(e::Required, "Context Name", b::Values("SITUATIONAL TRIGGER")),
|
|
46
|
+
b::Element(e::NotUsed, "Context Reference")),
|
|
47
|
+
b::Element(e::Required, "Segment ID Code"),
|
|
48
|
+
b::Element(e::Required, "Segment Position in Transaction Set"),
|
|
49
|
+
b::Element(e::Situational, "Loop Identifier Code"),
|
|
50
|
+
b::Element(e::Situational, "POSITION IN SEGMENT",
|
|
51
|
+
b::Element(e::Required, "Element Position in Segment"),
|
|
52
|
+
b::Element(e::Situational, "Component Data Element Position in Composite"),
|
|
53
|
+
b::Element(e::Situational, "Repeating Data Element Position")),
|
|
54
|
+
b::Element(e::NotUsed, "REFERENCE IN SEGMENT")),
|
|
55
|
+
b::Segment(500, s::CTX, "Business Unit Identifier",
|
|
56
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
57
|
+
b::Element(e::Required, "CONTEXT IDENTIFICATION",
|
|
58
|
+
b::Element(e::Required, "Context Name", b::Values("TRN02", "NM109", "PATIENT NAME NM109", "SUBSCRIBER NAME NM109", "ENT01", "SUBSCRIBER NUMBER REF02", "CLM01")),
|
|
59
|
+
b::Element(e::Required, "Context Reference")),
|
|
60
|
+
b::Element(e::NotUsed, "Segment ID Code"),
|
|
61
|
+
b::Element(e::NotUsed, "Segment Position in Transaction Set"),
|
|
62
|
+
b::Element(e::NotUsed, "Loop Identifier Code"),
|
|
63
|
+
b::Element(e::NotUsed, "POSITION IN SEGMENT"),
|
|
64
|
+
b::Element(e::NotUsed, "REFERENCE IN SEGMENT")),
|
|
65
|
+
|
|
66
|
+
d::LoopDef.build("2110 IMPLEMENTATION DATA ELEMENT NOTE",
|
|
67
|
+
d::RepeatCount.unbounded,
|
|
68
|
+
b::Segment(600, s::IK4, "Implementation Data Element Note",
|
|
69
|
+
r::Situational, d::RepeatCount.bounded(1),
|
|
70
|
+
b::Element(e::Required, "POSITION IN SEGMENT",
|
|
71
|
+
b::Element(e::Required, "Element Position in Segment"),
|
|
72
|
+
b::Element(e::Situational, "Component Data Element Position in Composite"),
|
|
73
|
+
b::Element(e::Situational, "Repeating Data Element Position")),
|
|
74
|
+
b::Element(e::Situational, "Data Element Reference Number"),
|
|
75
|
+
b::Element(e::Required, "Implementation Data Element Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "12", "13", "I10", "I11", "I12", "I13", "I6", "I9")),
|
|
76
|
+
b::Element(e::Situational, "Copy of Bad Data Element")),
|
|
77
|
+
b::Segment(700, s::CTX, "Element Context",
|
|
78
|
+
r::Situational, d::RepeatCount.bounded(10),
|
|
79
|
+
b::Element(e::Required, "CONTEXT IDENTIFICATION",
|
|
80
|
+
b::Element(e::Required, "Context Name", b::Values("SITUATIONAL TRIGGER")),
|
|
81
|
+
b::Element(e::NotUsed, "Context Reference")),
|
|
82
|
+
b::Element(e::Required, "Segment ID Code"),
|
|
83
|
+
b::Element(e::Required, "Segment Position in Transaction Set"),
|
|
84
|
+
b::Element(e::Situational, "Loop Identifier Code"),
|
|
85
|
+
b::Element(e::Situational, "POSITION IN SEGMENT",
|
|
86
|
+
b::Element(e::Required, "Element Position in Segment"),
|
|
87
|
+
b::Element(e::Situational, "Component Data Element Position in Composite"),
|
|
88
|
+
b::Element(e::Situational, "Repeating Data Element Position")),
|
|
89
|
+
b::Element(e::NotUsed, "REFERENCE IN SEGMENT")))),
|
|
90
|
+
|
|
91
|
+
b::Segment(800, s::IK5, "Implementation Transaction Set Response Trailer",
|
|
92
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
93
|
+
b::Element(e::Required, "Transaction Set Acknowledgement Code", b::Values("A", "E", "M", "R", "W", "X")),
|
|
94
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I5", "I6")),
|
|
95
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I5", "I6")),
|
|
96
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I5", "I6")),
|
|
97
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I5", "I6")),
|
|
98
|
+
b::Element(e::Situational, "Implementation Transaction Set Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "23", "24", "25", "26", "27", "I5", "I6")))),
|
|
99
|
+
|
|
100
|
+
b::Segment( 900, s::AK9, "Functional Group Response Trailer",
|
|
101
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
102
|
+
b::Element(e::Required, "Functional Group Acknowledgement Code", b::Values("A", "E", "M", "P", "R", "W", "X")),
|
|
103
|
+
b::Element(e::Required, "Number of Transaction Sets Included"),
|
|
104
|
+
b::Element(e::Required, "Number of Received Transaction Sets"),
|
|
105
|
+
b::Element(e::Required, "Number of Accepted Transaction Sets"),
|
|
106
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
107
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
108
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
109
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26")),
|
|
110
|
+
b::Element(e::Situational, "Functional Group Syntax Error Code", b::Values("1", "2", "3", "4", "5", "6", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "23", "24", "25", "26"))),
|
|
111
|
+
b::Segment(200, s::SE, "Transaction Set Trailer",
|
|
112
|
+
r::Required, d::RepeatCount.bounded(1),
|
|
113
|
+
b::Element(e::Required, "Transaction Segment Count"),
|
|
114
|
+
b::Element(e::Required, "Transaction Set Control Number"))))
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
module Guides
|
|
3
|
+
module FiftyTen
|
|
4
|
+
|
|
5
|
+
#
|
|
6
|
+
# @see X222.pdf 2.2 Implementation Usage
|
|
7
|
+
#
|
|
8
|
+
module ElementReqs
|
|
9
|
+
|
|
10
|
+
# Declares that this element must always be sent. Required elements
|
|
11
|
+
# within Situational segments when the segment occurs.
|
|
12
|
+
#
|
|
13
|
+
# Similarly, required component elements within situational composite
|
|
14
|
+
# elements only occur when the composite element occurs.
|
|
15
|
+
Required = Schema::ElementReq.new(true, false, "R")
|
|
16
|
+
|
|
17
|
+
# Use of this element varies, depending on data content and business
|
|
18
|
+
# context as described in the defining rule. The defining rule is
|
|
19
|
+
# documented in a Situational Rule attached to the element.
|
|
20
|
+
#
|
|
21
|
+
# There are two forms of Situational Rules. The first is "Required when
|
|
22
|
+
# <condition>. If not required by <condition>, the element may be
|
|
23
|
+
# provided at the discretion of the sender, but it cannot be required or
|
|
24
|
+
# requested by the receiver.'
|
|
25
|
+
#
|
|
26
|
+
# The other form is "Required when <condition>. If not required by
|
|
27
|
+
# <condition>, do not send". The element described by the rule cannot
|
|
28
|
+
# occur except when the condition holds.
|
|
29
|
+
Situational = Schema::ElementReq.new(false, false, "S")
|
|
30
|
+
|
|
31
|
+
# This element must never be sent.
|
|
32
|
+
NotUsed = Schema::ElementReq.new(false, true, "N")
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
module Guides
|
|
3
|
+
module FiftyTen
|
|
4
|
+
|
|
5
|
+
#
|
|
6
|
+
# {GuideBuilder} is a simple DSL for construction an implementation guide.
|
|
7
|
+
#
|
|
8
|
+
module GuideBuilder
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class << GuideBuilder
|
|
12
|
+
|
|
13
|
+
# @return [Schema::TransactionSetDef]
|
|
14
|
+
def build(transaction_set_def, *table_defs)
|
|
15
|
+
transaction_set_def.copy(:table_defs => table_defs)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @group Element Constraints
|
|
19
|
+
#######################################################################
|
|
20
|
+
|
|
21
|
+
# @param [String, ...] values
|
|
22
|
+
def Values(*values)
|
|
23
|
+
[:Values, values]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# @param [Integer] n
|
|
27
|
+
def MaxLength(n)
|
|
28
|
+
[:MaxLength, n]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param [Integer] n
|
|
32
|
+
def MaxPrecision(n)
|
|
33
|
+
[:MaxPrecision, n]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @endgroup
|
|
37
|
+
#######################################################################
|
|
38
|
+
|
|
39
|
+
# @group Definition Constructors
|
|
40
|
+
#######################################################################
|
|
41
|
+
|
|
42
|
+
# @param [Schema::ElementReq] requirement
|
|
43
|
+
# @param [String] name
|
|
44
|
+
def Element(requirement, name, *constraints)
|
|
45
|
+
[:Element, requirement, name, constraints]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @return [SegmentUse]
|
|
49
|
+
def Segment(position, segment_def, name, requirement, repeat_count, *elements)
|
|
50
|
+
unless elements.length == segment_def.element_uses.length
|
|
51
|
+
raise Exceptions::InvalidSchemaError,
|
|
52
|
+
"segment #{segment_def.id} has #{segment_def.element_uses.length}" <<
|
|
53
|
+
" elements but #{elements.length} arguments were specified"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
element_index = "00"
|
|
57
|
+
element_uses = elements.zip(segment_def.element_uses).map do |e, u|
|
|
58
|
+
e_tag, e_requirement, e_name, e_arguments = e
|
|
59
|
+
element_index.succ!
|
|
60
|
+
|
|
61
|
+
unless e_tag == :Element
|
|
62
|
+
raise Exceptions::InvalidSchemaError,
|
|
63
|
+
"given argument for #{segment_def.id}#{element_index} must be Element(...)"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if u.composite?
|
|
67
|
+
e_repeat_count, e_arguments = e_arguments.partition{|x| x.is_a?(Schema::RepeatCount) }
|
|
68
|
+
|
|
69
|
+
changes = Hash.new
|
|
70
|
+
changes[:requirement] = e_requirement
|
|
71
|
+
|
|
72
|
+
if e_repeat_count.length == 1
|
|
73
|
+
changes[:repeat_count] = e_repeat_count.head
|
|
74
|
+
elsif e_repeat_count.length > 1
|
|
75
|
+
raise Exceptions::InvalidSchemaError,
|
|
76
|
+
"more than one RepeatCount was specified"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
unless e_requirement.forbidden?
|
|
80
|
+
unless e_arguments.length == u.definition.component_uses.length
|
|
81
|
+
raise Exceptions::InvalidSchemaError,
|
|
82
|
+
"composite element #{u.definition.id} at #{segment_def.id}" <<
|
|
83
|
+
"#{element_index} has #{u.definition.element_uses.length}" <<
|
|
84
|
+
" component elements but #{e_arguments.length} were given"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# ComponentElementUses
|
|
88
|
+
component_index = "00"
|
|
89
|
+
component_uses = e_arguments.zip(u.definition.component_uses).map do |e, c|
|
|
90
|
+
c_tag, c_requirement, c_name, c_arguments = e
|
|
91
|
+
component_index.succ!
|
|
92
|
+
|
|
93
|
+
unless c_tag == :Element
|
|
94
|
+
raise Exceptions::InvalidSchemaError,
|
|
95
|
+
"given argument for #{segment_def.id}#{element_index}" <<
|
|
96
|
+
"-#{component_index} must be Element(...)"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
mod_element(c, c_requirement, c_name, c_arguments)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
changes[:definition] = u.definition.copy(:name => e_name,
|
|
103
|
+
:component_uses => component_uses)
|
|
104
|
+
else
|
|
105
|
+
changes[:definition] = u.definition.copy(:name => e_name)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
u.copy(changes)
|
|
109
|
+
else
|
|
110
|
+
mod_element(u, e_requirement, e_name, e_arguments)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
segment_def.copy(:name => name).
|
|
115
|
+
copy(:element_uses => element_uses).
|
|
116
|
+
use(position, requirement, repeat_count)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# @endgroup
|
|
120
|
+
#######################################################################
|
|
121
|
+
|
|
122
|
+
private
|
|
123
|
+
|
|
124
|
+
# @return [Schema::SimpleElementUse]
|
|
125
|
+
def mod_element(element_use, requirement, name, arguments)
|
|
126
|
+
unless requirement.is_a?(Schema::ElementReq)
|
|
127
|
+
raise Exceptions::InvalidSchemaError,
|
|
128
|
+
"first argument to Element must be a Schema::ElementReq but got #{requirement.inspect}"
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
unless name.is_a?(String)
|
|
132
|
+
raise Exceptions::InvalidSchemaError,
|
|
133
|
+
"element name must be a String"
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
changes = Hash.new # changes to SegmentUse
|
|
137
|
+
dhanges = Hash.new # changes to SegmentDef
|
|
138
|
+
|
|
139
|
+
changes[:requirement] = requirement
|
|
140
|
+
changes[:definition] = element_use.definition.copy(:name => name)
|
|
141
|
+
|
|
142
|
+
repeat_count = arguments.select{|x| x.is_a?(Schema::RepeatCount) }
|
|
143
|
+
|
|
144
|
+
if repeat_count.length == 1
|
|
145
|
+
changes[:repeat_count] = repeat_count.head
|
|
146
|
+
elsif repeat_count.length > 1
|
|
147
|
+
raise Exceptions::InvalidSchemaError,
|
|
148
|
+
"more than one RepeatCount specified for this Element"
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
allowed_values = arguments.select{|x| x.is_a?(Array) and x.head == :Values }
|
|
152
|
+
|
|
153
|
+
if allowed_values.length == 1
|
|
154
|
+
changes[:allowed_values] = element_use.allowed_values.replace(allowed_values.head.last)
|
|
155
|
+
elsif allowed_values.length > 1
|
|
156
|
+
raise Exceptions::InvalidSchemaError,
|
|
157
|
+
"more than one Values specified for this Element"
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
max_length = arguments.select{|x| x.is_a?(Array) and x.head == :MaxLength }
|
|
161
|
+
|
|
162
|
+
if max_length.length == 1
|
|
163
|
+
dhanges[:max_length] = max_length.head.last
|
|
164
|
+
elsif max_length.length > 1
|
|
165
|
+
raise Exceptions::InvalidSchemaError,
|
|
166
|
+
"more than one MaxLength specified for this Element"
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
if dhanges.empty?
|
|
170
|
+
element_use.copy(changes)
|
|
171
|
+
else
|
|
172
|
+
element_use.copy(changes.merge(:definition =>
|
|
173
|
+
element_use.definition.copy(dhanges)))
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
module Guides
|
|
3
|
+
module FiftyTen
|
|
4
|
+
|
|
5
|
+
#
|
|
6
|
+
# @see X222.pdf 2.2 Implementation Usage
|
|
7
|
+
#
|
|
8
|
+
module SegmentReqs
|
|
9
|
+
|
|
10
|
+
# Declares that this segment must always be sent. Required segments
|
|
11
|
+
# within Situational loops only occur when the loop occurs.
|
|
12
|
+
Required = Schema::SegmentReq.new(true, false, "R")
|
|
13
|
+
|
|
14
|
+
# Use of this segment varies, depending on data content and business
|
|
15
|
+
# context as described in the defining rule. The defining rule is
|
|
16
|
+
# documented in a Situational Rule attached to the segment.
|
|
17
|
+
#
|
|
18
|
+
# There are two forms of Situational Rules. The first is "Required when
|
|
19
|
+
# <condition>. If not required by <condition>, the segment may be
|
|
20
|
+
# provided at the discretion of the sender, but it cannot be required or
|
|
21
|
+
# requested by the receiver.'
|
|
22
|
+
#
|
|
23
|
+
# The other form is "Required when <condition>. If not required by
|
|
24
|
+
# <condition>, do not send". The segment described by the rule cannot
|
|
25
|
+
# occur except when the condition holds.
|
|
26
|
+
Situational = Schema::SegmentReq.new(false, false, "S")
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
module Guides
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# @see Stupidedi::Versions::FunctionalGroups::FiftyTen
|
|
6
|
+
#
|
|
7
|
+
module FiftyTen
|
|
8
|
+
|
|
9
|
+
autoload :SegmentReqs, "stupidedi/guides/005010/segment_reqs"
|
|
10
|
+
autoload :ElementReqs, "stupidedi/guides/005010/element_reqs"
|
|
11
|
+
|
|
12
|
+
autoload :GuideBuilder, "stupidedi/guides/005010/guide_builder"
|
|
13
|
+
|
|
14
|
+
module X214
|
|
15
|
+
autoload :HN277, "stupidedi/guides/005010/X214-HN277"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module X221
|
|
19
|
+
autoload :HP835, "stupidedi/guides/005010/X221-HP835"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
module X221A1
|
|
23
|
+
autoload :HP835, "stupidedi/guides/005010/X221A1-HP835"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
module X222
|
|
27
|
+
autoload :HC837P, "stupidedi/guides/005010/X222-HC837P"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
module X222A1
|
|
31
|
+
autoload :HC837P, "stupidedi/guides/005010/X222A1-HC837P"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# module X223
|
|
35
|
+
# autoload :HC837I, "stupidedi/guides/005010/X223-HC837I"
|
|
36
|
+
# end
|
|
37
|
+
|
|
38
|
+
# module X223A1
|
|
39
|
+
# autoload :HC837I, "stupidedi/guides/005010/X223A1-HC837I"
|
|
40
|
+
# end
|
|
41
|
+
|
|
42
|
+
# module X224
|
|
43
|
+
# autoload :HC837D, "stupidedi/guides/005010/X224-HC837D"
|
|
44
|
+
# end
|
|
45
|
+
|
|
46
|
+
# module X224A1
|
|
47
|
+
# autoload :HC837D, "stupidedi/guides/005010/X224A1-HC837D"
|
|
48
|
+
# end
|
|
49
|
+
|
|
50
|
+
# module X224A2
|
|
51
|
+
# autoload :HC837D, "stupidedi/guides/005010/X224A2-HC837D"
|
|
52
|
+
# end
|
|
53
|
+
|
|
54
|
+
module X231
|
|
55
|
+
autoload :FA999, "stupidedi/guides/005010/X231-FA999"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
module X231A1
|
|
59
|
+
autoload :FA999, "stupidedi/guides/005010/X231A1-FA999"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Stupidedi
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# When an exception is raised, in some cases `#inspect` is called on a
|
|
5
|
+
# huge object graph to generate the message `"undefined method '...' for
|
|
6
|
+
# <Stupidedi::Schema::TransactionSetDef:0x...>"`. This can take several
|
|
7
|
+
# seconds, since `Object#inspect` descends recursively into each instance
|
|
8
|
+
# variable.
|
|
9
|
+
#
|
|
10
|
+
# This mixin defines an alternative default implementation for `#inspect`,
|
|
11
|
+
# which should be significantly faster than the default Ruby implementation
|
|
12
|
+
# since it does not descend into the object.
|
|
13
|
+
#
|
|
14
|
+
module Inspect
|
|
15
|
+
|
|
16
|
+
# @return [String]
|
|
17
|
+
def inspect
|
|
18
|
+
if self.class.name.empty?
|
|
19
|
+
"#<\#<Class:0x#{self.class.object_id.abs.to_s(16)}>"
|
|
20
|
+
else
|
|
21
|
+
"#<#{self.class.name}"
|
|
22
|
+
end << ":0x#{object_id.abs.to_s(16)} ...>"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|