Condividi tramite


Medical Claims Processing and Testing Policies (esempio di BizTalk Server)

Nell'esempio Medical Claims Processing and Testing Policies viene illustrato come creare un set di regole contenente più regole che esaminano fact derivati da una tabella di database e dal documento in arrivo e che utilizzano oggetti basati su .NET per registrare i risultati dell'elaborazione delle richieste di rimborso.

In questo esempio viene illustrata l'esecuzione di tipo fine-fine dello scenario di elaborazione delle richieste di rimborso, utilizzando una semplice applicazione basata su .NET che si avvale del Motore regole di business per eseguire un set di regole relative alle richieste di rimborso di spese mediche, per determinare i valori relativi a STATUS della richiesta e REASON di tale stato.

Nota

In questo esempio viene inoltre illustrato come tenere traccia dell'esecuzione del Motore regole di business utilizzando un file di analisi di debug.

Scopo dell'esempio

In questo esempio la sequenza di regole seguente viene applicata alle richieste di rimborso inviate:

  1. La richiesta di rimborso viene rifiutata se l'importo totale del rimborso supera il valore massimo consentito dalla polizza.

  2. La richiesta di rimborso viene rifiutata se il cliente ha trascorso in ospedale un numero di notti superiore al valore massimo consentito dalla polizza.

  3. La richiesta di rimborso viene rifiutata se la data della richiesta è una data futura.

  4. La richiesta di rimborso viene rifiutata se la polizza non è valida.

  5. Se la polizza è scaduta, al reparto vendite viene inviato un lead con l'ID della polizza e il nome del cliente.

  6. In caso contrario, la richiesta di rimborso viene approvata.

Percorso dell'esempio

<Percorso> esempi\Regole aziendali\Elaborazione attestazioni mediche e criteri di test\

Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.

File Descrizione
Cleanup.bat Viene utilizzato per annullare la distribuzione degli assembly e rimuoverli dalla Global Assembly Cache. Consente inoltre di rimuovere porte di trasmissione e ricezione. Consente infine di rimuovere le directory virtuali di Microsoft Internet Information Services (IIS), se necessario.
Create_PolicyValidity_Table.sql Script SQL che aggiunge una nuova tabella denominata PolicyValidity al database di esempio Northwind.
Setup.bat Utilizzato per compilare e inizializzare l'esempio.
Nella cartella \Claims:

AssemblyInfo.cs, Claims.csproj, Claims.sln, Claims.cs
Progetto, soluzione, origine e file correlati per la parte di questo esempio che registra il risultato dell'elaborazione delle attestazioni, denominata parte THEN di una regola.
Nella cartella \FactRetrieverForClaimsProcessing:

AssemblyInfo.cs, FactRetrieverForClaimsProcessing.cs, FactRetrieverForClaimsProcessing.csproj, FactRetrieverForClaimsProcessing.sln
Progetto, soluzione, origine e file correlati per la parte di questo esempio che fornisce la funzione recupero fact a lungo termine, che recupera le informazioni dalla tabella PolicyValidity creata da questo esempio.
Nella cartella \RulesForMedicalClaims:

App.ico, AssemblyInfo.cs, RulesForMedicalClaims.cs, RulesForMedicalClaims.csproj, RulesForMedicalClaims.sln
Progetto, soluzione, origine e file correlati per la parte di questo esempio che costituisce il file eseguibile principale per questo esempio (RulesForMedicalClaims.exe) e che definisce e archivia a livello di codice il set di regole, costruisce i fatti di esempio e quindi esegue il set di regole usando un oggetto PolicyTester .
Nella cartella \RulesForMedicalClaims:

MedicalClaims.xsd
File di schema che definisce la struttura delle richieste di rimborso di spese medico di esempio inviate a questo esempio.
Nella cartella \RulesForMedicalClaims:

sampleClaim.xml
File di input di esempio conforme allo schema definito nel file MedicalClaims.xsd.

Compilazione e inizializzazione dell'esempio

Per compilare e inizializzare l'esempio Medical Claims Processing and Testing Policies

  1. Verificare che nel computer in uso sia presente il database Northwind.

    Importante

    Per eseguire questo esempio, è necessario disporre del database di esempio Northwind SQL Server. Per scaricare, passare ai database di esempio Northwind e pub per Microsoft SQL Server.

  2. In una finestra di comando passare alla seguente cartella:

    <Percorso> esempi\Regole aziendali\Elaborazione attestazioni mediche e criteri di test\

  3. Eseguire il file Setup.bat. Verranno eseguite le operazioni seguenti:

    • Compila e distribuisce i progetti di Visual Studio per questo esempio, tra cui Claims.dll, FactRetrieverForClaimsProcessing.dll e RulesForMedicalClaims.dll.

    Nota

    Prima di provare a eseguire l'esempio, è necessario verificare che BizTalk Server non abbia segnalato errori durante il processo di generazione e inizializzazione.

    Nota

    Se si sceglie di aprire e compilare i progetti dell'esempio senza eseguire il file Setup.bat, è necessario creare prima una coppia di chiavi con nome sicuro utilizzando l'utilità Nome sicuro di .NET Framework (sn.exe). e utilizzarla per firmare gli assembly risultanti.

    • Esecuzione del file SQL script Create_PolicyValidity_Table.sql tramite Query Analyzer di SQL Server. Lo script crea la tabella PolicyValidity con due righe di esempio nel database di esempio Northwind. Questa tabella include due colonne: ID e PolicyStatus.

    • Crea e associa le porte di invio e ricezione BizTalk Server.

    • Abilita l'indirizzo di ricezione e avvia la porta di trasmissione.

    • Integrazione e avvio dell'orchestrazione.

    Nota

    Per annullare le modifiche apportate da Setup.bat, eseguire Cleanup.bat. È necessario eseguire Cleanup.bat prima di eseguire Setup.bat una seconda volta.

Esecuzione dell'esempio

Per eseguire l'esempio Medical Claims Processing and Testing Policies

  1. In una finestra di comando passare alla seguente cartella:

    <Percorso> esempi\Regole aziendali\Elaborazione attestazioni mediche e criteri di test\RulesForMedicalClaims\bin\Debug\

  2. Eseguire il file RulesForMedicalClaims.exe nella riga di comando.

    Nota

    È possibile modificare i valori dei singoli elementi nel file di richiesta di rimborso di esempio sampleClaim.xml e quindi eseguire più volte l'esempio. Gli output previsti per i valori diversi specificati in tali elementi vengono visualizzati nell'elenco seguente.

    Di seguito sono riportati gli scenari di output in base alle diverse combinazioni di valori nel file di richiesta di rimborso di esempio inviato:

  • Per una richiesta di rimborso con importo superiore a $1000 si ottiene l'output seguente:

    Status:  REJECTED!  
    Reason:  Amount of claim has exceeded Policy limit  
    
  • Per una richiesta di rimborso con numero di notti superiore a 10 si ottiene l'output seguente:

    Status:  REJECTED!  
    Reason:  Amount of Nights has exceeded Policy limit  
    
  • Per un'attestazione la cui data non è valida (data > corrente), l'output seguente in ottenuto:

    Status:  REJECTED!  
    Reason:  Cannot submit claims for future dates!  
    
  • Per un'attestazione con un ID criterio non valido (ad esempio, modificando l'elemento ID in modo che abbia un valore pari a 2) a causa della scadenza dei criteri, viene ottenuto l'output seguente:

    Sending to Renewal Department for Customer Smir with Policy # 2  
    Status:  REJECTED!  
    Reason:  Policy ID is invalid  
    
  • Per una richiesta di rimborso valida si ottiene l'output seguente:

    Status:  Claim Accepted!  
    Reason:  
    

    Nota

    Un file di testo, outputtrace.txt, viene creato nella cartella ...\RulesForMedicalClaims\bin\Debug ogni volta che questo esempio viene eseguito. Tale file contiene una analisi di debug dell'esecuzione della regola e viene creato dopo ogni ciclo di esecuzione nella cartella \RulesForMedicalClaims\bin\Debug. Per visualizzare la traccia dell'output dell'esecuzione delle regole, è possibile esaminare questo file.

Commenti

Di seguito sono riportate le origini dei fact utilizzati nella valutazione del set di regole:

  • Recupero di fatti a lungo termine, un . L'applicazione basata su NET che implementa l'interfaccia IFactReriever viene compilata nella cartella FactRetrieverForClaimsProcessing. Viene utilizzata dai criteri di elaborazione delle richieste di rimborso medico per recuperare i dati, sotto forma di set di dati, dal database PolicyValidity e utilizzarli nella valutazione delle condizioni delle regole.

  • L'attestazione è sotto forma di un documento XML contenente le informazioni seguenti, archiviate in elementi di pari livello: Name, ID, Amount, Nights e Date.

  • Un. La libreria di classi basata su NET (Attestazioni), con una classe ClaimResults viene usata per registrare LO STATO e la RAGIONE dell'attestazione usando le proprietà e per inviare un lead (se il criterio non è valido) richiamando il metodo SendLeads con ID e nome come parametri.

    In base a tali origini di fact è possibile illustrare in modo informale le regole definite per questo scenario come segue:

  1. Verifica della validità della richiesta di rimborso in arrivo. La richiesta di rimborso non è valida se l'importo supera il limite consentito per una richiesta di rimborso, se la polizza è scaduta (verificato tramite controllo della tabella di database), se il numero di notti supera il limite massimo consentito e se la richiesta di rimborso è relativa a una data futura. Se è stato determinato che la richiesta di rimborso non è valida, impostare in modo appropriato i valori per STATUS e REASON della richiesta di rimborso.

  2. Se l'ID della polizza della richiesta di rimborso in arrivo è scaduto, inviare un lead (contenente ID della polizza e nome del cliente) al reparto di rinnovo polizze.

  3. Se la richiesta di rimborso è valida, impostare in modo appropriato i valori per STATUS e REASON della richiesta di rimborso.

    Di seguito è disponibile una rappresentazione più formale delle regole e dei vincoli delle rispettive condizioni:

  • Regola 1. Controllo importo

    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  
    
    
  • Regola 2. Notti trascorse in ospedale

    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  
    
    
  • Regola 3. Validità della data

    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  
    
    
  • Regola 4. Validità dei criteri

    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  
    
    
  • Regola 5. Lead vendite

    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.  
    
    
  • Regola 6. Attestazione accettata

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

Vedere anche

Business Rules (cartella di esempi di BizTalk Server)