Traitement des demandes de remboursement de soins médicaux et test des stratégies (exemple BizTalk Server)
L'exemple Stratégies de test et de traitement des demandes de remboursement de soins médicaux illustre la création d'un ensemble de règles qui examinent des faits dérivés d'une table de base de données et du document entrant et qui utilisent les objets .NET pour enregistrer les résultats du traitement des demandes de remboursement.
Cet exemple montre l'exécution de bout en bout du scénario de traitement des demandes de remboursement à l'aide d'une simple application .NET utilisant le Moteur de règles d'entreprise pour exécuter un ensemble de règles relatives aux demandes de remboursement de soins médicaux sur les demandes de remboursement entrantes afin de déterminer l'ÉTAT de la demande de remboursement et la RAISON de l'état.
Notes
Cet exemple présente également le suivi de l'exécution du Moteur de règles d'entreprise à l'aide d'un fichier de suivi de débogage.
Fonctions de l'exemple
Cet exemple applique la séquence suivante de règles aux demandes de remboursement envoyées :
Rejette la demande de remboursement si le montant total demandé dépasse le maximum autorisé par la police.
Rejette la demande de remboursement si le nombre de nuits passées à l'hôpital par le client dépasse le maximum autorisé par la police.
Rejette la demande de remboursement si la date sur la demande de remboursement est dans le futur.
Rejette la demande de remboursement si la police n'est pas valide.
Envoie un message au service commercial avec l'ID de police et le nom du client si la police a expiré.
Dans le cas contraire, approuve la demande de remboursement.
Accès à l'exemple
<Chemin d’accès> des exemples\Règles d’entreprise\Stratégies de traitement et de test des revendications médicales\
Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.
Fichier(s) | Description |
---|---|
Cleanup.bat | Utilisé pour annuler le déploiement des assemblys et les supprimer du Global Assembly Cache (GAC). Supprime les ports d'envoi et de réception. Supprime les répertoires virtuels Microsoft Internet Information Services (IIS) le cas échéant. |
Create_PolicyValidity_Table.sql | Script SQL qui ajoute une nouvelle table nommée PolicyValidity à l'exemple de base de données Northwind. |
Setup.bat | Utilisé pour générer et initialiser cet exemple. |
Dans le dossier \Claims : AssemblyInfo.cs, Claims.csproj, Claims.sln, Claims.cs |
Fichiers projet, solution, source et associés pour la partie de cet exemple qui enregistre le résultat du traitement des revendications, appelée partie THEN d’une règle. |
Dans le dossier \FactRetrieverForClaimsProcessing : AssemblyInfo.cs, FactRetrieverForClaimsProcessing.cs, FactRetrieverForClaimsProcessing.csproj, FactRetrieverForClaimsProcessing.sln |
Fichiers de projet, de solution, source et associé pour la partie de cet exemple qui fournit l'extracteur de faits à long terme qui extrait des informations de la table PolicyValidity créée par cet exemple. |
Dans le dossier \RulesForMedicalClaims : App.ico, AssemblyInfo.cs, RulesForMedicalClaims.cs, RulesForMedicalClaims.csproj, RulesForMedicalClaims.sln |
Fichiers projet, solution, source et associés pour la partie de cet exemple qui constitue l’exécutable main pour cet exemple (RulesForMedicalClaims.exe), qui définit et stocke par programmation l’ensemble de règles, construit des exemples de faits, puis exécute l’ensemble de règles à l’aide d’un objet PolicyTester. |
Dans le dossier \RulesForMedicalClaims : MedicalClaims.xsd |
Fichier de schéma qui définit la structure des exemples de demandes de remboursement de soins médicaux envoyés à cet exemple. |
Dans le dossier \RulesForMedicalClaims : sampleClaim.xml |
Exemple de fichier d'entrée correspondant au schéma défini dans le fichier MedicalClaims.xsd. |
Génération et initialisation de cet exemple
Pour créer et initialiser l'exemple Stratégies de test et de traitement des demandes de remboursement de soins médicaux
Vérifiez que vous disposez de la base de données Northwind sur votre ordinateur.
Important
Pour exécuter cet exemple, vous devez disposer de l’exemple de base de données Northwind SQL Server. Pour télécharger, accédez à Exemples de bases de données Northwind et pubs pour Microsoft SQL Server.
Dans une fenêtre de commande, accédez au dossier suivant :
<Chemin d’accès> des exemples\Règles d’entreprise\Stratégies de traitement et de test des revendications médicales\
Exécutez le fichier Setup.bat, qui effectue les actions suivantes :
- Compile et déploie les projets Visual Studio pour cet exemple, notamment Claims.dll, FactRetrieverForClaimsProcessing.dll et RulesForMedicalClaims.dll.
Notes
Avant d'essayer d'exécuter cet exemple, vous devez vous assurer que BizTalk Server n'a signalé aucune erreur lors du processus de création et d'initialisation.
Notes
Si vous choisissez d’ouvrir et de générer les projets dans cet exemple sans exécuter le fichier Setup.bat, vous devez d’abord créer une paire de clés de nom fort à l’aide de l’utilitaire .NET Framework Strong Name (sn.exe). Celle-ci permet de signer les assemblys obtenus.
Exécution du script SQL fourni, Create_PolicyValidity_Table.sql, à l'aide de l'Analyseur de requêtes SQL. Le script crée la table PolicyValidity avec deux exemples de lignes dans l'exemple de base de données Northwind. Cette table contient deux colonnes : ID et PolicyStatus.
Crée et lie les ports d’envoi et de réception BizTalk Server.
Active l'emplacement de réception, et démarre le port d'envoi.
Inscrit et démarre l’orchestration.
Notes
Pour annuler les modifications effectuées par Setup.bat, exécutez Cleanup.bat. Vous devez exécuter Cleanup.bat avant d'exécuter Cleanup.bat une seconde fois.
Exécution de cet exemple
Pour exécuter l'exemple Stratégies de test et de traitement des demandes de remboursement de soins médicaux
Dans une fenêtre de commande, accédez au dossier suivant :
<Chemin d’accès> des exemples\Business Rules\Medical Claims Processing and Testing Policies\RulesForMedicalClaims\bin\Debug\
Exécutez le fichier RulesForMedicalClaims.exe sur la ligne de commande.
Notes
Vous pouvez modifier les valeurs des éléments individuels dans l'exemple de fichier de demande de remboursement sampleClaim.xml, puis exécuter l'exemple de façon répétée. Les résultats attendus des différentes valeurs de ces éléments sont affichés dans la liste suivante.
Les scénarios de sortie en fonction des différentes combinaisons de valeurs dans l'exemple de fichier de demande de remboursement envoyé sont les suivants :
Pour une demande de remboursement dont le montant dépasse 1000 $, le résultat suivant est obtenu :
Status: REJECTED! Reason: Amount of claim has exceeded Policy limit
Pour une demande de remboursement dont le nombre de nuits dépasse 10, le résultat suivant est obtenu :
Status: REJECTED! Reason: Amount of Nights has exceeded Policy limit
Pour une revendication dont la date n’est pas valide (date > actuelle), la sortie suivante dans obtenue :
Status: REJECTED! Reason: Cannot submit claims for future dates!
Pour une revendication avec un ID de stratégie non valide (par exemple, en modifiant l’élément ID pour avoir une valeur 2) en raison de l’expiration de la stratégie, la sortie suivante est obtenue :
Sending to Renewal Department for Customer Smir with Policy # 2 Status: REJECTED! Reason: Policy ID is invalid
Pour une demande de remboursement valide, le résultat suivant est obtenu :
Status: Claim Accepted! Reason:
Notes
Un fichier texte, outputtrace.txt, est créé dans le dossier ...\RulesForMedicalClaims\bin\Debug à chaque exécution de cet exemple. Il contient un suivi de débogage de l'exécution des règles, et il est créé après chaque cycle d'exécution dans le dossier \RulesForMedicalClaims\bin\Debug. Vous pouvez examiner ce fichier pour afficher le suivi de sortie de l'exécution des règles.
Commentaires
Les sources de faits utilisées dans l'évaluation de l'ensemble de règles sont les suivantes :
Récupérateur de faits à long terme, . L’application basée sur NET qui implémente l’interface IFactReriever est générée dans le dossier FactRetrieverForClaimsProcessing. Il est utilisé par la stratégie de traitement des demandes de remboursement de soins médicaux pour extraire des données (sous forme de groupes de données) de la base de données PolicyValidity ainsi que pour l'évaluation de condition de règles.
La demande de remboursement est un document XML contenant les informations suivantes, stockées dans des éléments frères : Nom, ID, Montant, Nuits et Date.
Un. La bibliothèque de classes basée sur NET (Claims), avec une classe ClaimResults , permet d’enregistrer l’ÉTAT et la RAISON de la revendication à l’aide de propriétés, et d’envoyer un prospect (si la stratégie n’est pas valide) en appelant la méthode SendLeads avec l’ID et le nom en tant que paramètres.
En fonction de ces sources de faits, vous pouvez décrire de manière informelle les règles définies pour ce scénario comme suit :
Vérifiez si la demande de remboursement entrante est valide. La demande de remboursement n'est pas valide si le montant dépasse la limite autorisée pour une demande de remboursement, si la police a expiré (vérification de la table de base de données), si le nombre de nuits dépasse la limite autorisée et si la demande de remboursement est effectuée dans le futur. Si la demande de remboursement a été déterminée comme non valide, définissez l'ÉTAT et la RAISON de la demande de remboursement de manière appropriée.
Si l'ID de police de la demande de remboursement entrante a expiré, envoyez un message (avec l'ID de police et le nom du client) au service de renouvellement des polices.
Si la demande de remboursement est valide, définissez l'ÉTAT et la RAISON de la demande de remboursement de manière appropriée.
Une représentation plus formelle des règles et de leurs liaisons à terme est la suivante :
Règle 1. Montant case activée
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
Règle 2. Nuits passées à l’hôpital
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
Règle 3. Validité de la date
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
Règle 4. Validité de la stratégie
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
Règle 5. Prospect commercial
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.
Règle 6. Revendication acceptée
IF Claim.ClaimResults.Status = null THEN Set the claim status to be valid && Send the lead to the sales department