Freigeben über


Medical Claims Processing and Testing Policies (BizTalk Server-Beispiel)

Das Beispiel „Medical Claims Processing and Testing Policies“ veranschaulicht das Erstellen eines Regelsatzes mit mehreren Regeln, die zum Untersuchen von aus einer Datenbanktabelle und dem eingehenden Dokument stammenden Fakten dienen und mit auf .NET basierenden Objekten arbeiten, um die Ergebnisse der Verarbeitung von Rückerstattungsanträgen aufzuzeichnen.

Dieses Beispiel veranschaulicht das vollständige Szenario der Verarbeitung von Rückerstattungsanträgen mittels einer einfachen auf .NET basierenden Anwendung, die die Geschäftsregel-Engine zum Anwenden eines Regelsatzes für Rückerstattungsanträge auf eingehende Anträge anwendet, um den Status des Antrags und den Grund des Status zu bestimmen.

Hinweis

Dieses Beispiel demonstriert ferner das Nachverfolgen der Anwendung der Geschäftsregel-Engine mithilfe einer Ablaufverfolgungsdatei für das Debugging.

Ziel des Beispiels

In diesem Beispiel werden die folgende Regeln in der angegebenen Reihenfolge auf die eingereichten Anträge angewendet:

  1. Der Antrag wird abgelehnt, wenn der Gesamtbetrag der Rückerstattung den von der Police zugelassenen Höchstwert überschreitet.

  2. Der Antrag wird abgelehnt, wenn der Kunde länger als die von der Police zugelassene Höchstdauer im Krankenhaus verblieben ist.

  3. Der Antrag wird abgelehnt, wenn das Antragsdatum in der Zukunft liegt.

  4. Der Antrag wird abgelehnt, wenn die Police nicht ungültig ist.

  5. Wenn die Police abgelaufen ist, wird ein Hinweis mit der Policen-ID und dem Kundennamen an den Vertrieb gesendet.

  6. Andernfalls wird dem Antrag stattgegeben.

Speicherort dieses Beispiels

<Beispielpfad>\Geschäftsregeln\Richtlinien für die Verarbeitung und Prüfung medizinischer Ansprüche\

In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.

Datei(en) BESCHREIBUNG
Cleanup.bat Wird verwendet, um die Bereitstellung von Assemblys aufzuheben und sie aus dem globalen Assemblycache (GAC) zu entfernen. Entfernt Sende- und Empfangsports. Entfernt nach Bedarf virtuelle Verzeichnisse von Microsoft Internetinformationsdienste (IIS).
Create_PolicyValidity_Table.sql SQL-Skript zum Hinzufügen der neuen Tabelle PolicyValidity zur Beispieldatenbank Northwind.
Setup.bat Dient zum Erstellen und Initialisieren dieses Beispiels.
Im Ordner \Claims:

AssemblyInfo.cs, Claims.csproj, Claims.sln, Claims.cs
Projekt-, Projektmappen-, Quell- und zugehörige Dateien für den Teil dieses Beispiels, in dem das Ergebnis der Anspruchsverarbeitung aufgezeichnet wird, der als THEN-Teil einer Regel bezeichnet wird.
Im Ordner \FactRetrieverForClaimsProcessing:

AssemblyInfo.cs, FactRetrieverForClaimsProcessing.cs, FactRetrieverForClaimsProcessing.csproj, FactRetrieverForClaimsProcessing.sln
Projekt-, Lösungs-, Quell- und zugehörige Dateien für den Teil dieses Beispiels, der den langfristigen Faktenabrufer bereitstellt, der Informationen aus der Tabelle PolicyValidity abruft, die von diesem Beispiel erstellt wird.
Im Ordner \RulesForMedicalClaims:

App.ico, AssemblyInfo.cs, RulesForMedicalClaims.cs, RulesForMedicalClaims.csproj, RulesForMedicalClaims.sln
Projekt-, Projektmappen-, Quell- und verwandte Dateien für den Teil dieses Beispiels, der die Standard ausführbare Datei für dieses Beispiel (RulesForMedicalClaims.exe) darstellt und den Regelsatz programmgesteuert definiert und speichert, Beispieldaten erstellt und dann den Regelsatz mithilfe eines PolicyTester-Objekts ausführt.
Im Ordner \RulesForMedicalClaims:

MedicalClaims.xsd
Schemadatei, welche die Struktur der Rückerstattungsanträge im Beispiel definiert, die an dieses Beispiel übermittelt werden.
Im Ordner \RulesForMedicalClaims:

sampleClaim.xml
Beispieleingabedatei, die das in der Datei MedicalClaims.xsd definierte Schema einhält.

Erstellen und Initialisieren dieses Beispiels

So erstellen und initialisieren Sie das Beispiel „Medical Claims Processing and Testing Policies“

  1. Stellen Sie sicher, dass die Datenbank Northwind auf dem Computer vorhanden ist.

    Wichtig

    Zum Ausführen dieses Beispiels benötigen Sie die Beispieldatenbank Northwind SQL Server. Wechseln Sie zum Herunterladen zu Beispieldatenbanken northwind und pubs für Microsoft SQL Server.

  2. Navigieren Sie in einem Befehlsfenster zum folgenden Ordner:

    <Beispielpfad>\Geschäftsregeln\Richtlinien für die Verarbeitung und Prüfung medizinischer Ansprüche\

  3. Führen Sie die Datei "Setup.bat" aus, von der folgende Aktionen ausgeführt werden:

    • Kompiliert und stellt die Visual Studio-Projekte für dieses Beispiel bereit, einschließlich Claims.dll, FactRetrieverForClaimsProcessing.dll und RulesForMedicalClaims.dll.

    Hinweis

    Sie sollten sicherstellen, dass von BizTalk Server während des Erstellungs- und Initialisierungsprozesses keine Fehler gemeldet wurden, bevor Sie dieses Beispiel ausführen.

    Hinweis

    Wenn Sie die Projekte in diesem Beispiel öffnen und erstellen möchten, ohne die Datei Setup.bat auszuführen, müssen Sie zunächst ein Schlüsselpaar mit starkem Namen mit dem entsprechenden .NET Framework-Hilfsprogramm für starke Namen (sn.exe) erstellen. Verwenden Sie dieses Schlüsselpaar zum Signieren der resultierenden Assemblys.

    • Ausführen des bereitgestellten SQL-Skripts Create_PolicyValidity_Table.sql in SQL Query Analyzer. Dieses Skript erstellt die Tabelle PolicyValidity mit zwei Beispielzeilen in der Beispieldatenbank Northwind. Diese Tabelle enthält zwei Spalten: ID und PolicyStatus.

    • Erstellt und bindet die BizTalk Server Sende- und Empfangsports.

    • Aktiviert den Empfangsspeicherort und startet den Sendeport.

    • Führt die Orchestrierung ein und startet sie.

    Hinweis

    Wenn Sie von "Setup.bat" vorgenommene Änderungen rückgängig machen möchten, führen Sie "Cleanup.bat" aus. "Cleanup.bat" müssen Sie ausführen, bevor "Setup.bat" ein zweites Mal ausgeführt wird.

Ausführen dieses Beispiels

So führen Sie das Beispiel „Medical Claims Processing and Testing Policies“ aus

  1. Navigieren Sie in einem Befehlsfenster zum folgenden Ordner:

    <Beispielpfad>\Geschäftsregeln\Verarbeitungs- und Testrichtlinien für medizinische Ansprüche\RulesForMedicalClaims\bin\Debug\

  2. Führen Sie in der Befehlszeile die Datei RulesForMedicalClaims.exe aus.

    Hinweis

    Sie können die Werte der einzelnen Elemente in der Beispieldatei für die Rückerstattung sampleClaim.xml ändern und das Beispiel wiederholt ausführen. Die erwarteten Ausgaben bei verschiedenen Werten in diesen Elementen finden Sie in der folgenden Liste.

    Es folgen Ausgabeszenarien basierend auf verschiedenen Kombinationen von Werten in der Beispieldatei für die Rückerstattung:

  • Bei einem Rückerstattungsantrag mit einem Betrag größer als $ 1000 lautet die Ausgabe wie folgt:

    Status:  REJECTED!  
    Reason:  Amount of claim has exceeded Policy limit  
    
  • Bei einem Rückerstattungsantrag mit einer Anzahl von Nächten im Krankenhaus größer als 10 lautet die Ausgabe wie folgt:

    Status:  REJECTED!  
    Reason:  Amount of Nights has exceeded Policy limit  
    
  • Für einen Anspruch, dessen Datum ungültig ist (aktuelles Datum > ), erhält die folgende Ausgabe in:

    Status:  REJECTED!  
    Reason:  Cannot submit claims for future dates!  
    
  • Für einen Anspruch mit einer Richtlinien-ID, die aufgrund des Ablaufs der Richtlinie ungültig ist (z. B. durch Ändern des ID-Elements in den Wert 2), wird die folgende Ausgabe abgerufen:

    Sending to Renewal Department for Customer Smir with Policy # 2  
    Status:  REJECTED!  
    Reason:  Policy ID is invalid  
    
  • Bei einem gültigen Rückerstattungsantrag ist die Ausgabe:

    Status:  Claim Accepted!  
    Reason:  
    

    Hinweis

    Bei jeder Ausführung dieses Beispiels wird die Textdatei outputtrace.txt im Ordner ...\RulesForMedicalClaims\bin\Debug erstellt. Sie enthält eine Debugablaufverfolgung der Regelausführung und wird nach jedem Ausführungszyklus im Ordner \RulesForMedicalClaims\bin\Debug erstellt. Anhand dieser Datei können Sie die Ausgabeablaufverfolgung der Regelausführung überprüfen.

Kommentare

Es folgen die bei der Regelsatzauswertung verwendeten Faktenquellen:

  • Ein langfristiger Fakten-Retriever, ein . NET-basierte Anwendung, die die IFactReriever-Schnittstelle implementiert, wird im Ordner FactRetrieverForClaimsProcessing erstellt. Diese wird von der Richtlinie zur Verarbeitung von Rückerstattungsanträgen zum Abrufen von Daten (in Form eines Datasets) aus der Tabelle PolicyValidity und bei der Auswertung von Regelbedingungen verwendet.

  • Der Anspruch liegt in Form eines XML-Dokuments vor, das die folgenden Informationen enthält und in gleichgeordneten Elementen gespeichert ist: Name, ID, Betrag, Nächte und Datum.

  • Eine. Net-basierte Klassenbibliothek (Claims) mit einer ClaimResults-Klasse wird verwendet, um den STATUS und reason des Anspruchs mithilfe von Eigenschaften aufzuzeichnen und einen Lead (wenn die Richtlinie ungültig ist) zu senden, indem die SendLeads-Methode mit ID und Name als Parameter aufgerufen wird.

    Basierend auf diesen Faktenquellen können Sie informell die Regeln, die für dieses Szenario definiert sind, wie folgt beschreiben:

  1. Überprüfen, ob der eingehende Rückerstattungsantrag gültig ist. Der Antrag ist nicht gültig, wenn der Betrag über der für einen Antrag zulässigen Obergrenze liegt, die Police abgelaufen ist (was im Abgleich mit der Datenbanktabelle bestimmt wird), die Anzahl der Nächte im Krankenhaus über der zulässigen Obergrenze liegt oder der Antrag ein zukünftiges Datum hat. Wenn sich der Antrag als ungültig herausstellt, legen Sie die Werte STATUS und REASON entsprechend fest.

  2. Wenn die Policen-ID des eingehenden Rückerstattungsantrags abgelaufen ist, senden Sie einen Hinweis (mit Policen-ID und Kundenname) an die für die Policenverlängerung zuständige Abteilung.

  3. Wenn der Antrag gültig ist, legen Sie die Werte STATUS und REASON entsprechend fest.

    Es folgt eine formellere Abbildung der Regeln und ihrer Bedingungsbindungen:

  • Regel 1. Betragsprüfung

    IF Amount in the XML document is > 1000  
      AND  
    IF Claims.ClaimResults object has not been modified (if ClaimResults.RESULT = null)  
    
    THEN Claims.ClaimResults.Status = "REJECTED"\  
         &&  
         Claims.ClaimResults.Reason = "Amount of claim has exceeded limit"  
         &&  
         Assert this object back into working memory  
    
    
  • Regel 2. Übernachtungen im Krankenhaus

    IF number of nights in the XML document is > 10  
      AND  
    IF Claims.ClaimResults object has not been modified (if ClaimResults.RESULT = null)  
    
    THEN Claims.ClaimResults.Status = "REJECTED"  
         &&  
         Claims.ClaimResults.Reason = "Amount of claim has exceeded limit"  
         &&  
         Assert this object back into working memory  
    
    
  • Regel 3. Datumsgültigkeit

    IF date on the incoming XML claim is > Today  
      AND   
    IF Claims.ClaimResults object has not been modified (if ClaimResults.RESULT = null)  
    
    THEN Claims.ClaimResults.Status = "REJECTED"  
         &&  
         Claims.ClaimResults.Reason = "Cannot submit claims in the future!"  
         &&  
         Assert this object back into working memory  
    
    
  • Regel 4. Gültigkeit der Richtlinie

    IF Policy is invalid for the ID in the XML claim (check database)  
      AND  
    IF Claims.ClaimResults object has not been modified (if ClaimResults.RESULT = null)  
    
    THEN Claims.ClaimResults.Status = "REJECTED"  
         &&  
         Claims.ClaimResults.Reason = "Policy Invalid"  
         &&  
         Assert this object back into working memory  
    
    
  • Regel 5. Vertriebsleiter

    IF Claim.ClaimResults.Reason = "Policy invalid"  
    
    THEN send a lead to the policy department by invoking the function Claim.ClaimResults.SendLead with customer ID and Name from the incoming XML document.  
    
    
  • Regel 6. Angenommener Anspruch

    IF Claim.ClaimResults.Status = null  
    
    THEN Set the claim status to be valid  
         &&  
         Send the lead to the sales department  
    
    

Weitere Informationen

Geschäftsregeln (Ordner für BizTalk Server-Beispiele)