OOPFactoryを使用して271個のファイルを解析しようとしています。 (ソースコードはこちら:https://x12parser.codeplex.com/SourceControl/latest)現時点で私が苦労している部分は、利益情報を得ることです。 (私は加入者とソース情報をうまく取得できます)。OOPFactoryを使用してEligibilityBenefitDocumentを使用して271の利点を解析しようとしています
私はこの記事の手順に従ってきた:私は加入者とソース情報とEligibilityBenefitDocumentを得ることができます (Anyone translate a X12 271 Healthcare response)が、ドキュメント上の利益の情報は、ヌル、空、または他のいくつかの役に立たない値のいずれかであること巻き上げます。
私は生の271データを見て、私が探している情報が本当にそこにあることを確認しました。 (参考のため、私は複数の支払人から複数のファイルを実行しました)
実行中にX12SteamReaderとX12Parserの両方をトレースして、データがパーサーを通過したことを確認しました。パーサとうまくやっているようです。私はEligiblityBenefitDocumentがどのように生成されるべきかについて完全にはわかりません。それは私の271のファイルのためにうまく動作していないようなxslt翻訳のいくつかの並べ替えを使用するように見えます。私はxsltファイル(https://x12parser.codeplex.com/workitem/2765)にこの微調整を適用しました - いくつかのヌル値をクリーンアップしますが、それでも正しく解析しません。
次はどうすればいいですか?
- サポートされていないEDI形式を使用している可能性があります。私はそれが事実であるかどうかを伝える方法がわかりません
- 私は長い間プログラミングしてきましたが、.NETのXSLT機能を使ったことは一度もありませんでした。
- 誰かがいる場合、すばらしい解決策は素晴らしいでしょう。
Thx!
========= 編集1:ここでは
は、物事をキックオフ私のコードです:
Dim ediFileString = path_to_my_file
Dim fstream = New FileStream(ediFileString, FileMode.Open, FileAccess.Read)
Dim service = New EligibilityTransformationService()
Dim benefitDoc = service.Transform271ToBenefitResponse(fstream)
Dim responses = benefitDoc.EligibilityBenefitResponses
私はVB.NETの代わりに、C#からそれを呼んでいます、それがすべてMSILにコンパイルされ、ソース、受信者、およびサブスクライバのプロパティがすべて動作していることを考えると、それがBenefitInfosが失敗する理由ではないと私は考えています。
========= 編集2:私は
Dim ediFileString = path_to_my_file
Dim fstream = New FileStream(ediFileString, FileMode.Open, FileAccess.Read)
Dim service = New EligibilityTransformationService()
Dim benefitDoc = service.Transform271ToBenefitResponse(fstream)
Dim responses = benefitDoc.EligibilityBenefitResponses
Dim strClient = ""
For Each client In benefitDoc.EligibilityBenefitResponses
Try
strClient = "MemberID: " + tidyNull(client.Subscriber.MemberId) + " Transaction Control Number: " + tidyNull(client.TransactionControlNumber) + Constants.vbCrLf
Catch ex As Exception
End Try
Try
strClient += "Member Name: " + tidyNull(client.Subscriber.Name.FirstName) + " " + tidyNull(client.Subscriber.Name.MiddleName) + " " + tidyNull(client.Subscriber.Name.LastName) + Constants.vbCrLf
Catch ex As Exception
End Try
Try
strClient += "Payer Name: " + tidyNull(client.Source.Name.LastName) + Constants.vbCrLf
Catch ex As Exception
End Try
Try
strClient += "Date of Birth: " + tidyNull(client.Subscriber.SerializableDateOfBirth) + Constants.vbCrLf
Catch ex As Exception
End Try
Try
strClient += "Address: " + tidyNull(client.Subscriber.Address.Line1)
strClient += " " + tidyNull(client.Subscriber.Address.Line2) + " " + Constants.vbCrLf
strClient += "Address: " + tidyNull(client.Subscriber.Address.City) + ", " + tidyNull(client.Subscriber.Address.StateCode) + ", " + tidyNull(client.Subscriber.Address.PostalCode) + Constants.vbCrLf
Catch ex As Exception
End Try
Dim results As List(Of EligibilityBenefitInformation)
Try
results = client.BenefitInfos.FindAll(AddressOf searchPlanActive)
If results.Count > 0 Then
strClient += "Active Coverage!" + Constants.vbCrLf
End If
Catch ex As Exception
strClient += "Coverage Type: Couldn't be found"
End Try
For Each benefit In client.BenefitInfos
If benefit.Amount IsNot Nothing Then
strClient &= " Code: " & benefit.Amount
End If
strClient &= " Percentage: " & benefit.Percentage
Try
strClient &= " CoverageLevel: " & benefit.CoverageLevel.Description
Catch ex As Exception
End Try
Try
strClient &= " InPlanNetwork: " & benefit.InPlanNetwork.Description
Catch
End Try
Try
strClient &= " PlanCoverageDescription: " & benefit.PlanCoverageDescription
Catch ex As Exception
End Try
'strClient &= " Messages: " & benefit.Messages.FindLast()
Try
strClient &= " Amount: " & benefit.Amount.Value
Catch ex As Exception
End Try
'strClient &= " Amount: " & benefit.AdditionalInfos
strClient &= Constants.vbCrLf
Next
MsgBox(strClient)
Next
をやろうとしているかの詳細の要求に応じて、より多くのコードを含む======= EDIT 3:
5010ファイルを処理しようとしています。 OOPFactoryは「ビルトイン仕様にはすべての4010規格と5010仕様が含まれています」https:// x12parser.codeplex.com/(評判ポイントの不足のために別の作業リンクをまだ投稿できません)
=== ==== 編集4:
エラーは35行目のEligibilityTransformationService.csで発生しているようです。正しい情報がXMLに作成されていますが、正しくデシリアライズされていません。
var response = EligibilityBenefitDocument.Deserialize(responseXml);
私はその理由を調査しています。
===== 編集5: EligiblityTransformationService.csでは、32行目から、XMLが変換されてからデシリアライズされます。問題のデータは、最後にresponseXml変数の35行目に表示されますが、応答オブジェクトには入れません。
これはXSLTファイルの問題のようです。
transform.Transform(XmlReader.Create(new StringReader(xml)), new XsltArgumentList(), outputStream);
outputStream.Position = 0;
string responseXml = new StreamReader(outputStream).ReadToEnd();
var response = EligibilityBenefitDocument.Deserialize(responseXml);
はい。それは私がやっていることに非常に似ています。ただし、すべての応答のBenefitInfosプロパティは常に空になります。あなたはそれを見たことがありますか? – vesuvian7
答えを更新しました。私があなたのプログラムで何をしているかの例を私に教えれば、より具体的な答えをお手伝いできるかもしれません。あなたは、患者についても可能なすべてのポリシー情報を入力していることを確認してください。インスタンスの場合は、firstname、lastname、policy#、dateOfBirth、およびServiceType18を使用します(これは目的に合っているためです)。 – Rinktacular
往復してEDIコールを行い、応答を解析するアプリケーションに慣れているようですリアルタイム。私は結局2つを組み合わせるつもりですが、解析部分を動かすまではそうではありません。今のところ、1行に1つずつ格納された271応答の.txtファイルを使って作業しています。私はファイルを作ったので、応答が完全であることを調べるために調べることができます。したがって、私はこの小さなアプリでポリシー情報を扱っていないので、不正確なポリシー情報を持つ問題ではないと私は考えています。しかし、最初の投稿を編集して、自分が行っていることの詳細を追加しました。 – vesuvian7