2017-06-08 6 views
0

私はX12 EDIを初めて使用しており、少し混乱しています。最終目標は、データベース(またはCSV)にデータを抽出することです。VendorCentral Ruby X12 EDI:セグメント識別子の代わりに「1〜」が見つかりました

RubyライブラリSTUPIDEDIを使用して、一部のX12ファイルを解析しています。私はタイトルでこのエラーを超えていません。

例-830-ファイル:

ISA*00*   *00*   *ZZ*CHEESE   *12*VENDOR ISA  *160321*1828*U*00400*000004970*0*T*>~ 
GS*PS*CHEESE*2018584966*20160321*1828*4970*X*004010~ 
ST*830*0001~ 
BFR*00*Forecast ID**DL*A*20131229*20140323*20140104****MN~ 
REF*IA*Vendor Code~ 
N1*DU*CHEESE US*15*1526642~ 
N1*VN*Vendor Name*92*123456789~ 
LIN*1*UP*123456789123456*B123456789~ 
UIT*EA~ 
FST*0*D*W*20131229~ 
FST*0*D*W*20140105~ 
FST*0*D*W*20140112~ 
FST*0*D*W*20140119~ 
FST*0*D*W*20140126~ 
FST*0*D*W*20140202~ 
FST*0*D*W*20140209~ 
FST*0*D*W*20140216~ 
FST*0*D*W*20140223~ 
FST*0*D*W*20140302~ 
FST*0*D*W*20140309~ 
FST*0*D*W*20140316~ 
FST*0*D*W*20140323~ 
SE~1~0001~ 
GE~1~1~ 
IEA~1~000000001~ 

コード:

RuntimeError: 
     found "1~" instead of segment identifier at file /Users/foo/Documents/dev/project/public/X12_830_FORECAST/X12_Example_830.txt, line 23, column 4 

をC:

config = Stupidedi::Config.contrib 
parser = Stupidedi::Builder::StateMachine.build(config) 

input = File.open(file_path_to_example_830) 
# Reader.build accepts IO (File), String, and DelegateInput 
parser, result = parser.read(Stupidedi::Reader.build(input)) 

# Raises exception in title 
if result.fatal? 
    result.explain { |reason| raise reason + " at #{result.position.inspect}" } 
end 

# Hoping to Print some information 
parser.first 
    .flatmap { |m| m.find(:GS) } 
    .flatmap { |m| m.find(:ST) } 
    .tap do |m| 
    el(m.find(:N1, "PR"), 2) { |e| puts "Payer: #{e}" } 
    el(m.find(:N1, "PE"), 2) { |e| puts "Payee: #{e}" } 
end 
    .flatmap { |m| m.find(:LX) } 
    .flatmap { |m| m.find(:CLP) } 
    .flatmap { |m| m.find(:NM1, "QC") } 
    .tap { |m| el(m, 3, 4) { |l, f| puts "Patient: #{l}, #{f}" } } 

は、そのエラーを上げますSE〜(SE01と呼ばれる)の後SE~1~0001~

+0

私は確信してhttps://github.com/kputnam/stupidedi/blob/master/lib/stupidedi/contrib/004010/guides/PS830.rbこれを見つけなく、どのようにプラグインする? –

答えて

0

数ですline 23, column 4にlarifyエラーポイントは、私は、うまくに等しいカウントしていた場合、あなたの場合には、「セグメント数」でなければなりません。

SE~21~0001~とお試しください。

1

問題は、入力ファイルが無効であることです。最後の3つのセグメントは、要素の区切り文字として*の代わりに~を持つため、各要素を別々のセグメントとして認識しています。

これらのセグメントは、次のようになります。

SE*21*0001~ 
GE*1*4970~ 
IEA*1*000004970~ 
関連する問題