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:
La richiesta di rimborso viene rifiutata se l'importo totale del rimborso supera il valore massimo consentito dalla polizza.
La richiesta di rimborso viene rifiutata se il cliente ha trascorso in ospedale un numero di notti superiore al valore massimo consentito dalla polizza.
La richiesta di rimborso viene rifiutata se la data della richiesta è una data futura.
La richiesta di rimborso viene rifiutata se la polizza non è valida.
Se la polizza è scaduta, al reparto vendite viene inviato un lead con l'ID della polizza e il nome del cliente.
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
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.
In una finestra di comando passare alla seguente cartella:
<Percorso> esempi\Regole aziendali\Elaborazione attestazioni mediche e criteri di test\
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
In una finestra di comando passare alla seguente cartella:
<Percorso> esempi\Regole aziendali\Elaborazione attestazioni mediche e criteri di test\RulesForMedicalClaims\bin\Debug\
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:
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.
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.
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