Medical Claims Processing and Testing Policies (ejemplo de BizTalk Server)

El ejemplo Medical Claims Processing and Testing Policies muestra cómo crear un conjunto de reglas compuesto por varias reglas que examinen hechos derivados de una tabla de la base de datos y del documento entrante, y que usan objetos basados en .NET para registrar los resultados del procesamiento de reclamaciones.

Este ejemplo muestra la ejecución integral del escenario de procesamiento de reclamaciones mediante una aplicación sencilla basada en .NET que usa el Motor de reglas de negocios para ejecutar un conjunto de reglas de reclamaciones médicas en las reclamaciones entrantes y determinar el estado (STATUS) de la reclamación y la razón (REASON) de dicho estado.

Nota

Este ejemplo también muestra como realizar el seguimiento de la ejecución del Motor de reglas de negocios mediante un archivo de seguimiento de depuraciones.

Descripción del ejemplo

Este ejemplo aplica la secuencia de reglas siguiente a las reclamaciones enviadas:

  1. Rechaza la reclamación si el importe total reclamado supera el máximo permitido por la póliza.

  2. Rechaza la reclamación si el cliente ha estado en el hospital más noches que el máximo permitido por la póliza.

  3. Rechaza la reclamación si la fecha que figura en ella está en el futuro.

  4. Rechaza la reclamación si la póliza no es válida.

  5. Si la póliza ha vencido, envía una indicación al departamento de ventas con el Id. de la póliza y el nombre del cliente.

  6. En caso contrario, aprueba la reclamación.

Ubicación del ejemplo

<Ruta de acceso de> ejemplos\Reglas de negocios\Directivas de procesamiento y pruebas de notificaciones médicas\

En la tabla siguiente se enumeran los archivos del ejemplo y se describe su propósito.

Archivos Descripción
Cleanup.bat Se utiliza para anular la implementación de ensamblados y quitarlos de la caché de ensamblados global (GAC). Quita los puertos de envío y recepción. Quita los directorios virtuales de los Servicios de Microsoft Internet Information (IIS) según sea necesario.
Create_PolicyValidity_Table.sql Secuencia de comandos SQL que agrega una tabla nueva con el nombre PolicyValidity a la base de datos de ejemplo Northwind.
Setup.bat Se utiliza para crear e iniciar este ejemplo.
En la carpeta \Claims:

AssemblyInfo.cs, Claims.csproj, Claims.sln, Claims.cs
Proyecto, solución, origen y archivos relacionados para la parte de este ejemplo que registra el resultado del procesamiento de notificaciones, denominado la parte THEN de una regla.
En la carpeta \FactRetrieverForClaimsProcessing:

AssemblyInfo.cs, FactRetrieverForClaimsProcessing.cs, FactRetrieverForClaimsProcessing.csproj, FactRetrieverForClaimsProcessing.sln
Archivos del proyecto, la solución, de origen y relacionados correspondientes a la parte de este ejemplo que proporciona el administrador de almacenes de datos a largo plazo que recupera información de la tabla PolicyValidity creada por este ejemplo.
En la carpeta \RulesForMedicalClaims:

App.ico, AssemblyInfo.cs, RulesForMedicalClaims.cs, RulesForMedicalClaims.csproj, RulesForMedicalClaims.sln
Proyecto, solución, origen y archivos relacionados para la parte de este ejemplo que constituye el ejecutable principal de este ejemplo (RulesForMedicalClaims.exe) y que define y almacena mediante programación el conjunto de reglas, construye hechos de ejemplo y, a continuación, ejecuta el conjunto de reglas mediante un objeto PolicyTester .
En la carpeta \RulesForMedicalClaims:

MedicalClaims.xsd
Archivo de esquema que define la estructura de las reclamaciones médicas de ejemplo enviadas a este ejemplo.
En la carpeta \RulesForMedicalClaims:

sampleClaim.xml
Archivo de entrada de ejemplo que se ajusta al esquema definido en el archivo MedicalClaims.xsd.

Crear e inicializar este ejemplo

Para crear e inicializar el ejemplo Medical Claims Processing and Testing Policies

  1. Asegúrese de que la base de datos Northwind esté instalada en el equipo.

    Importante

    Para ejecutar este ejemplo, debe tener la base de datos de ejemplo Northwind SQL Server. Para descargarlo, vaya a Bases de datos de ejemplo northwind y pubs para Microsoft SQL Server.

  2. En una ventana de comandos, desplácese a la siguiente carpeta:

    <Ruta de acceso de> ejemplos\Reglas de negocios\Directivas de procesamiento y pruebas de notificaciones médicas\

  3. Ejecute el archivo Setup.bat que realiza las acciones siguientes:

    • Compila e implementa los proyectos de Visual Studio para este ejemplo, incluidos Claims.dll, FactRetrieverForClaimsProcessing.dll y RulesForMedicalClaims.dll.

    Nota

    Debe confirmar que BizTalk Server no ha notificado ningún error durante el proceso de generación e inicialización antes de intentar ejecutar este ejemplo.

    Nota

    Si decide abrir y compilar los proyectos de este ejemplo sin ejecutar el archivo Setup.bat, primero debe crear un par de claves de nombre seguro mediante la utilidad de nombre seguro (sn.exe) de .NET Framework. Utilice este par de claves para firmar los ensamblados resultantes.

    • Ejecuta la secuencia de comandos SQL suministrada Create_PolicyValidity_Table.sql mediante el Analizador de consultas SQL. La secuencia de comandos crea la tabla, PolicyValidity, con dos filas de ejemplo en la base de datos de ejemplo Northwind. Esta tabla tiene dos columnas: ID y PolicyStatus.

    • Crea y enlaza los puertos de recepción y envío de BizTalk Server.

    • Habilita la ubicación de recepción e inicia el puerto de envío.

    • Inscribe e inicia la orquestación.

    Nota

    Para deshacer los cambios realizados por Setup.bat, ejecute Cleanup.bat. Debe ejecutar Cleanup.bat antes de ejecutar Setup.bat por segunda vez.

Ejecución del ejemplo

Para ejecutar el ejemplo Medical Claims Processing and Testing Policies

  1. En una ventana de comandos, desplácese a la siguiente carpeta:

    <Ruta de acceso de> ejemplos\Business Rules\Medical Claims Processing and Testing Policies\RulesForMedicalClaims\bin\Debug\

  2. Ejecute el archivo RulesForMedicalClaims.exe en la línea de comandos.

    Nota

    Puede cambiar los valores de los elementos individuales en el archivo de reclamaciones de ejemplo (sampleClaim.xml) y ejecutar el ejemplo varias veces. La lista que figura a continuación muestra los resultados previstos para los distintos valores de estos elementos.

    Los escenarios de resultados basados en las diversas combinaciones de valores en el archivo de reclamaciones de ejemplo enviado son:

  • En el caso de una reclamación cuyo importe supere los 1000 dólares, se obtiene el resultado siguiente:

    Status:  REJECTED!  
    Reason:  Amount of claim has exceeded Policy limit  
    
  • En el caso de una reclamación cuyo número de noches sea superior a 10, se obtiene el resultado siguiente:

    Status:  REJECTED!  
    Reason:  Amount of Nights has exceeded Policy limit  
    
  • Para una notificación cuya fecha no es válida (fecha > actual), se obtiene la siguiente salida:

    Status:  REJECTED!  
    Reason:  Cannot submit claims for future dates!  
    
  • Para una notificación con un identificador de directiva que no es válido (por ejemplo, cambiando el elemento ID para que tenga un valor de 2) debido a la expiración de la directiva, se obtiene la siguiente salida:

    Sending to Renewal Department for Customer Smir with Policy # 2  
    Status:  REJECTED!  
    Reason:  Policy ID is invalid  
    
  • En el caso de una reclamación válida, se obtiene el resultado siguiente:

    Status:  Claim Accepted!  
    Reason:  
    

    Nota

    Cada vez que ejecute este ejemplo, se creará un archivo de texto (outputtrace.txt) en la carpeta ...\RulesForMedicalClaims\bin\Debug. Contiene un seguimiento de depuración de la ejecución de la regla y se crea tras cada ciclo de ejecución en la carpeta \RulesForMedicalClaims\bin\Debug. Puede examinar este archivo para ver el seguimiento de resultados de la ejecución de la regla.

Comentarios

Los orígenes de los datos empleados en la evaluación del conjunto de reglas son:

  • Un recuperador de hechos a largo plazo, un objeto . La aplicación basada en NET que implementa la interfaz IFactReriever está integrada en la carpeta FactRetrieverForClaimsProcessing. La directiva de procesamiento de reclamaciones médicas lo emplea para recuperar datos (con forma de conjunto de datos) de la base de datos PolicyValidity y para la evaluación de las condiciones de las reglas.

  • La notificación tiene el formato de un documento XML que contiene la siguiente información, almacenada en elementos relacionados: Name, ID, Amount, Nights y Date.

  • Un. La biblioteca de clases basada en NET (Claims), con una clase ClaimResults se usa para registrar el ESTADO y el MOTIVO de la notificación mediante propiedades, y para enviar un cliente potencial (si la directiva no es válida) invocando el método SendLeads con id. y nombre como parámetros.

    Según estos orígenes de los datos, se pueden describir de manera informal las reglas definidas para este escenario del siguiente modo:

  1. Comprobar si la reclamación entrante es válida. La reclamación no es válida si el importe supera el límite permitido para una reclamación, si la póliza ha vencido (verificado mediante la comprobación de la tabla de la base de datos), si el número de noches supera el límite máximo permitido y si se ha realizado la reclamación para una fecha en el futuro. Si se ha determinado que la reclamación no es válida, establecer los valores de STATUS y REASON de la reclamación de forma adecuada.

  2. Si el Id. de la póliza de la reclamación entrante ha vencido, enviar una indicación (con el Id. de la póliza y el nombre del cliente) al departamento de renovación de pólizas.

  3. Si la reclamación es válida, establecer los valores de STATUS y REASON de la reclamación de forma adecuada.

    Una representación más formal de las reglas y sus enlaces de términos es la siguiente:

  • Regla 1. Comprobación de importe

    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  
    
    
  • Regla 2. Noches pasadas en el hospital

    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  
    
    
  • Regla 3. Validez de fecha

    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  
    
    
  • Regla 4. Validez de la directiva

    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  
    
    
  • Regla 5. Cliente potencial de ventas

    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.  
    
    
  • Regla 6. Notificación aceptada

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

Consulte también

Reglas de negocio (carpeta de ejemplos de BizTalk Server)