我試圖使用OOPFactory來解析271個文件。 (源代碼在這裏:https://x12parser.codeplex.com/SourceControl/latest)我目前正在努力的部分是獲取好處信息。 (我可以獲得訂閱者和源代碼信息)。嘗試使用OOPFactory解析271好處使用EligibilityBenefitDocument
我跟着這個帖子的說明: (Anyone translate a X12 271 Healthcare response)我可以與認購人及來源的信息得到一個EligibilityBenefitDocument,但文件上的優惠信息捲起是要麼空,空,或其他一些無益的價值。
我已經通過了原始271的數據,並驗證我正在尋找的信息確實在那裏。 (作爲參考,我已經運行多個付款人的多個文件)
我在追蹤X12SteamReader和X12Parser的同時運行它們,並驗證數據是否完全通過解析器。看起來事情在解析器中運行良好。我不完全確定應該如何生成EligiblityBenefitDocument。它看起來像它使用某種xslt翻譯,似乎不適合我的271文件。我已將此調整應用於我的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,並且Source,Receiver和Subscriber屬性都工作正常,我不認爲這就是爲什麼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
======= 編輯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
我更新了我的答案。如果你給我一個關於你在程序中做什麼的例子,我可以幫助你做出更具體的答案。確保您輸入了您對患者所有可能的政策信息。對於實例,我使用名字,姓氏,政策#,dateOfBirth和ServiceType18(因爲這是特定於我的目的) – Rinktacular
這聽起來像你習慣於往返應用程序,並進行EDI調用和解析響應即時的。我打算最終將這兩者結合起來,但直到解析部分工作之後。現在,我正在處理一個包含271個響應的.txt文件,每行存儲1個響應。我創建了該文件,並且可以檢查該文件以查看完成的響應。因此,我不認爲這是一個不準確的政策信息問題,因爲我沒有處理這個小應用程序中的任何政策信息。但是,我已經提前編輯了最初的帖子,以包含我正在做的更多細節。 – vesuvian7