共用方式為


醫療理賠處理和測試原則 (BizTalk Server 範例)

「醫療理賠處理和測試原則」範例示範如何建立一組規則集,其中多個規則會檢查衍生自資料庫資料表的事實和輸入文件,並使用 .NET 架構物件來記錄理賠處理的結果。

這個範例會示範端對端執行理賠處理的實例,透過使用「商務規則引擎」的簡單 .NET 架構應用程式,對輸入的理賠申請執行醫療理賠規則集,判斷理賠申請的 STATUS 及其 REASON。

注意

這個範例也會示範如何使用偵錯追蹤檔案,追蹤「商務規則引擎」的執行狀況。

此範例的用途

這個範例會將下列一連串規則套用至提交的理賠申請:

  1. 如果理賠申請的總金額超過原則允許的上限,則拒絕理賠申請。

  2. 如果客戶住院天數超過原則允許的上限,則拒絕理賠申請。

  3. 如果理賠申請上的日期是在未來,則拒絕理賠申請。

  4. 如果原則無效則拒絕理賠申請。

  5. 如果原則已過期,則傳送線索給銷售部門並附上原則識別碼和客戶名稱。

  6. 否則核准理賠申請。

可在何處找到此範例

< 範例路徑>\商務規則\醫療宣告處理和測試原則\

下表顯示此範例中的檔案,並描述其用途。

檔案 Description
Cleanup.bat 用來解除部署組件,並將這些組件從全域組件快取 (GAC) 移除。 移除傳送埠和接收埠。 視需要移除 Microsoft Internet Information Services (IIS) 虛擬目錄。
Create_PolicyValidity_Table.sql 將新資料表 PolicyValidity 加入 Northwind 範例資料庫的 SQL 指令碼。
Setup.bat 用來建置和初始化此範例。
在 \Claims 資料夾中:

AssemblyInfo.cs、Claims.csproj、Claims.sln、Claims.cs
此範例中記錄宣告處理結果的專案、方案、來源和相關檔案,稱為規則的 THEN 部分。
在 \FactRetrieverForClaimsProcessing 資料夾中:

AssemblyInfo.cs、FactRetrieverForClaimsProcessing.cs、FactRetrieverForClaimsProcessing.csproj、FactRetrieverForClaimsProcessing.sln
這個範例所屬的專案、解決方案、來源和相關檔案,其提供長期事實擷取器 (會從這個範例所建立的 PolicyValidity 資料表擷取資訊)。
在 \RulesForMedicalClaims 資料夾中:

App.ico、AssemblyInfo.cs、RulesForMedicalClaims.cs、RulesForMedicalClaims.csproj、RulesForMedicalClaims.sln
此範例中構成此範例主要可執行檔之部分的專案、方案、來源和相關檔案 (RulesForMedicalClaims.exe) ,並以程式設計方式定義並儲存規則集、建構範例事實,然後使用 PolicyTester 物件執行規則集。
在 \RulesForMedicalClaims 資料夾中:

MedicalClaims.xsd
結構描述檔案,定義提交至此範例之範例醫療理賠申請的結構。
在 \RulesForMedicalClaims 資料夾中:

sampleClaim.xml
範例輸入檔,與 MedicalClaims.xsd 檔中定義的結構描述相符。

建置和初始化此範例

若要建置及初始化醫療理賠處理和測試原則範例

  1. 確定您的電腦上已安裝 Northwind 資料庫。

    重要

    若要執行此範例,您必須有 Northwind SQL Server範例資料庫。 若要下載,請移至Northwind 和 pubs 範例資料庫,以取得 Microsoft SQL Server

  2. 在命令視窗中,瀏覽至下列資料夾:

    < 範例路徑>\商務規則\醫療宣告處理和測試原則\

  3. 執行檔案 Setup.bat,這會執行下列動作:

    • 編譯及部署此範例的 Visual Studio 專案,包括 Claims.dll、FactRetrieverForClaimsProcessing.dll 和 RulesForMedicalClaims.dll。

    注意

    在嘗試執行此範例之前,您應該確認 BizTalk Server 沒有在建置和初始化程序期間報告任何錯誤。

    注意

    若您選擇不執行 Setup.bat 檔案就開啟和建置此範例中的專案,您必須先使用 .NET Framework Strong Name Utility (sn.exe) 建立強式名稱金鑰組。 使用此金鑰組簽署所產生的組件。

    • 使用 SQL Query Analyzer 執行所提供的 SQL 指令碼 Create_PolicyValidity_Table.sql。 此指令碼會使用 Northwind 範例資料庫中的兩個範例資料列來建立資料表 PolicyValidity。 此資料表有兩個數據行:ID 和 PolicyStatus。

    • 建立並繫結 BizTalk Server 傳送和接收埠。

    • 啟用接收位置並啟動傳送埠。

    • 登錄和啟動協調流程。

    注意

    若要復原 Setup.bat 所進行的變更,請執行 Cleanup.bat。 您必須先執行 Cleanup.bat 才能再度執行 Setup.bat。

執行此範例

若要執行醫療理賠處理和測試原則範例

  1. 在命令視窗中,瀏覽至下列資料夾:

    < 範例路徑>\Business Rules\Medical Claims Processing and Testing Policies\RulesForMedicalClaims\bin\Debug\

  2. 在命令列上執行檔案 RulesForMedicalClaims.exe。

    注意

    您可以變更範例理賠申請檔案 sampleClaim.xml 中的個別項目值,重複執行範例。 下列清單中會顯示不同項目值的預期輸出。

    根據所提交的範例理賠申請檔案中的各種組合值,輸出實例如下:

  • 對於金額超過 $1000 的理賠申請,會取得下列輸出:

    Status:  REJECTED!  
    Reason:  Amount of claim has exceeded Policy limit  
    
  • 對於住院天數超過 10 的理賠申請,會取得下列輸出:

    Status:  REJECTED!  
    Reason:  Amount of Nights has exceeded Policy limit  
    
  • 對於日期不正確宣告, (日期目前日期 >) ,取得下列輸出:

    Status:  REJECTED!  
    Reason:  Cannot submit claims for future dates!  
    
  • 例如,如果宣告的原則識別碼無效 (,藉由將 ID 元素變更為因為原則到期而具有值為 2) ,則會取得下列輸出:

    Sending to Renewal Department for Customer Smir with Policy # 2  
    Status:  REJECTED!  
    Reason:  Policy ID is invalid  
    
  • 對於有效的理賠申請,會取得下列輸出:

    Status:  Claim Accepted!  
    Reason:  
    

    注意

    每次您執行這個範例時,都會在資料夾 ...\RulesForMedicalClaims\bin\Debug 中建立文字檔 outputtrace.txt。 它包含規則執行的偵錯追蹤,每個執行循環之後都會在資料夾 \RulesForMedicalClaims\bin\Debug 中建立。 您可以檢查這個檔案來查看規則執行的追蹤輸出。

註解

評估規則集時,所使用的事實來源如下:

  • 長期事實擷取器,也就是 。實作 IFactReriever 介面的 NET 應用程式內建在 FactRetrieverForClaimsProcessing 資料夾中。 醫療理賠處理原則會使用它從 PolicyValidity 資料庫擷取資料 (資料集格式),用於評估規則條件。

  • 宣告的格式為 XML 檔,其中包含下列資訊,並儲存在同層級元素中:Name、ID、Amount、以日期為單位。

  • A .NET 型類別庫 (Claims) , 使用 ClaimResults 類別來記錄宣告的 STATUS 和 REASON,並使用屬性來傳送潛在客戶 (,如果原則無效,) 方法是叫用識別碼和名稱為參數的 SendLeads 方法,以傳送潛在客戶 (。

    根據這些事實來源,您可以將針對此實例所定義的規則非正式地描述如下:

  1. 檢查輸入的理賠申請是否有效。 如果理賠申請金額超過允許的上限、如果原則已過期 (可檢查資料庫資料表來驗證)、如果住院天數超過允許的上限,而且如果理賠申請的日期是在未來,則理賠申請無效。 如果判斷理賠申請無效,則適當地設定理賠申請的 STATUS 和 REASON。

  2. 如果輸入的理賠申請的原則識別碼已過期,則傳送線索給原則更新部門 (並附上原則識別碼和客戶名稱)。

  3. 如果理賠申請有效,則適當地設定理賠申請的 STATUS 和 REASON。

    規則及其條件繫結的正式表示如下:

  • 規則 1. 金額檢查

    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  
    
    
  • 規則 2. 在醫院中花費的醫院

    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  
    
    
  • 規則 3。 日期有效性

    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  
    
    
  • 規則 4。 原則有效性

    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  
    
    
  • 規則 5。 銷售潛在客戶

    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.  
    
    
  • 規則 6. 已接受宣告

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

另請參閱

商務規則 (BizTalk Server Samples 資料夾)