2016-07-11 15 views
2

benutze Ich versuche, OOPFactory zu verwenden, um 271 Dateien zu analysieren. (Quellcode hier: https://x12parser.codeplex.com/SourceControl/latest) Der Teil, mit dem ich im Moment zu kämpfen habe, erhält Informationen über die Vorteile. (Ich kann Abonnenten- und Quellinformationen problemlos erhalten).Der Versuch, OOPFactory zu verwenden, um 271 Vorteile zu analysieren, indem ich EligibilityBenefitDocument

Ich habe die Anweisungen in diesem Beitrag nicht gefolgt: (Anyone translate a X12 271 Healthcare response) Ich kann ein EligibilityBenefitDocument mit dem Abonnenten und Quelle Informationen erhalten, aber der Nutzen Informationen über das Dokument windet sich entweder null, leer oder einige andere nicht hilfreich Wert nach oben .

Ich habe die rohen 271 Daten durchlaufen und überprüft, dass die Informationen, die ich suche, tatsächlich da sind. (Als Referenz habe ich mehrere Dateien von mehreren Kostenträgern ausgeführt)

Ich habe sowohl den X12SteamReader als auch den X12Parser während der Ausführung verfolgt und überprüft, dass die Daten den gesamten Parser durchlaufen haben. Es sieht so aus, als ob die Dinge gut mit dem Parser funktionieren. Ich bin mir nicht ganz sicher, wie das EligibilityBenefitDocument erzeugt werden soll. Es sieht so aus, als ob es irgendeine Art von xslt-Übersetzung verwendet, die für meine 271-Dateien nicht gut zu funktionieren scheint. Ich habe diese Optimierung auf meine XSLT-Datei angewendet (https://x12parser.codeplex.com/workitem/2765) - es räumt einige Nullwerte auf, analysiert aber immer noch nicht korrekt.

Was soll ich als nächstes betrachten?

  • Es ist möglich, dass ich ein nicht unterstütztes EDI-Format verwende. Ich bin mir nicht sicher, wie ich sagen kann, ob das der Fall ist
  • Ich habe schon lange programmiert, aber ich habe nie die XSLT-Funktionen von .NET verwendet. Hat jemand gute Links, wo man dort anfangen kann?
  • Eine schnelle Lösung wäre FANTASTISCH, wenn jemand einen hat.

Thx!

========= Edit 1:

Hier ist mein Code, die Dinge weg tritt:

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 

Ich rufe es von VB.NET anstelle von C#, Aber da alles auf MSIL kompiliert wird und alle Quellen-, Empfänger- und Abonnenteneigenschaften funktionieren, glaube ich nicht, dass dies ein Grund ist, warum BenefitInfos fehlschlagen würde.

========= Edit 2: einschließlich mehr Code als Antwort auf eine Anfrage für weitere Einzelheiten von dem, was ich versuche,

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 

zu tun ======= EDIT 3:

Ich versuche, eine 5010-Datei zu verarbeiten; OOPFactory sagt: „Die Einbau-Spezifikationen enthalten alle 4010-Standards und einige 5010 Spezifikationen“ https: // x12parser.codeplex.com/ (kann eine andere Arbeits Link noch keine Beiträge aufgrund des Fehlens von Rating-Punkte)

=== ==== Edit 4:

Der Fehler scheint in EligibilityTransformationService.cs Zeile 35 zu passieren. Die richtige Information macht es in das XML, ist aber nicht ordnungsgemäß deserializing.

var response = EligibilityBenefitDocument.Deserialize(responseXml); 

Ich untersuche, warum das sein könnte.

===== Bearbeiten 5: In EligiblityTransformationService.cs, beginnend in Zeile 32, wird das XML transformiert und anschließend deserialisiert. Die fraglichen Daten werden zuletzt in Zeile 35 in der Variablen responseXml angezeigt, sie wird jedoch nie in das Antwortobjekt übernommen.

Es sieht aus wie ein Problem mit der XSLT-Datei.

  transform.Transform(XmlReader.Create(new StringReader(xml)), new XsltArgumentList(), outputStream); 
      outputStream.Position = 0; 
      string responseXml = new StreamReader(outputStream).ReadToEnd(); 
      var response = EligibilityBenefitDocument.Deserialize(responseXml); 

Antwort

0

Ich benutze diese Methode auch für meine eigene Arbeit im Büro. Die Probleme, auf die wir immer stoßen, sind die Antwort, die wir erhalten, entweder null oder zufällige Werte. Was wir tun mussten, war weiter zu suchen Patienteninformationen, bis wir so viele mögliche Ergebnisse gefunden haben, die zu uns zurückkommen würden. So zum Beispiel, wenn wir sehen Politik aktueller Informationen wollten, verwenden wir:

var service = new EligibilityTransformationService(); 
EligibilityBenefitDocument eligibilityBenefitDocument = service.Transform271ToBenefitResponse(response271Stream); 
eligibilityBenefitDocument.EligibilityBenefitResponses = eligibilityBenefitDocument.EligibilityBenefitResponses; 

foreach (EligibilityBenefitInformation benefitInfo in eligibilityBenefitDocument.EligibilityBenefitResponses[0].BenefitInfos) 
     {    
      if (benefitInfo.InfoType.Code == "V") 
       return Tuple.Create(false, "Medicare cannot process"); 

      if (benefitInfo.InfoType.Code == "6") 
       return Tuple.Create(false, "Inactive Policy"); 


      if (benefitInfo.InsuranceType.Code == "HN" || benefitInfo.InsuranceType.Code == "12") 
      { 
       try 
       { 
        return Tuple.Create(false, "MADV " + benefitInfo.Identifications[0].Id + " " + benefitInfo.RelatedEntities[0].Name.LastName); 
       } 
       catch 
       { 
        return Tuple.Create(false, "MADV"); 
       } 
      } 
     } 

Wir haben noch abarbeiten und mit diesen Antworten zu versuchen und sie so genau wie möglich zu bekommen, aber leider scheint es, wie die Codes können sich für verschiedene Kostenträger ändern, und es ist ein wenig zeitaufwändig, herauszufinden, wie jeder funktioniert, bis Sie ihre möglichen Antwortvariationen bekommen.

EDIT:

Wenn es keine benefitInfos in der Antwort ist, bedeutet dies, dass Sie die falschen Patienteninformationen einreichen. Ich habe folgende Überprüfung in meinem Programm:

if(eligiblityBenefitDocument.EligiblityBenefitResponses[0].BenefitInfos.Count() < 1) 
    return "Subscriber Info Invalid" 
+0

Ja. Das ist sehr ähnlich zu dem, was ich mache. Die BenefitInfos-Eigenschaft aller Antworten wird jedoch immer leer angezeigt. Hast du das jemals gesehen? – vesuvian7

+0

Ich aktualisierte meine Antwort. Wenn Sie mir ein Beispiel geben, was Sie in Ihrem Programm tun, kann ich Ihnen vielleicht in einer spezifischeren Antwort helfen. Stellen Sie sicher, dass Sie alle möglichen Richtlinieninformationen eingeben, die Sie auch für den Patienten haben. Zum Beispiel benutze ich Vorname, Nachname, Policy #, DateOfBirth und ServiceType18 (weil das für meinen Zweck spezifisch ist) – Rinktacular

+0

Es klingt wie Sie eine Anwendung round-Trip gewöhnt sind und das EDI aufrufen und die Antwort in analysieren Echtzeit. Ich plane, die beiden schließlich zu kombinieren, aber erst nachdem ich den Parsing-Teil funktioniere. Im Moment arbeite ich mit einer TXT-Datei mit 271 Antworten, die 1 pro Zeile gespeichert sind. Ich habe die Datei erstellt und kann sie überprüfen, um zu sehen, dass die Antworten vollständig sind. Daher denke ich nicht, dass es ein Problem mit ungenauen Richtlinieninformationen ist, da ich mich in dieser kleinen App nicht mit Richtlinieninformationen befasse. Wie auch immer, ich habe den ersten Post bearbeitet, um mehr Details von dem zu erhalten, was ich mache. – vesuvian7