의료 보험 청구 처리 및 테스트 정책(BizTalk Server 샘플)
의료 보험 청구 처리 및 테스트 정책 샘플은 데이터베이스 테이블과 인바운드 문서에서 파생된 사실을 검사하는 여러 규칙이 포함된 규칙 집합을 만드는 방법을 보여 줍니다. 규칙 집합은 .NET 기반 개체를 사용하여 청구 처리 결과를 기록합니다.
이 샘플은 들어오는 청구에 대해 의료 보험 청구 규칙 집합을 실행하여 보험 청구 상태 및 해당 상태에 대한 사유를 결정하는 데 비즈니스 규칙 엔진을 사용하는 간단한 .NET 기반 응용 프로그램으로 보험 청구 처리 실행의 전 과정을 보여 줍니다.
참고
또한 이 샘플은 디버그 추적 파일을 사용하여 비즈니스 규칙 엔진 실행을 추적하는 방법도 보여 줍니다.
이 샘플의 용도
이 샘플은 제출된 청구에 대해 다음 규칙 시퀀스를 적용합니다.
청구된 총액이 정책에서 허용하는 최대값을 초과할 경우 청구를 거부합니다.
고객이 정책에서 허용하는 최대 일수를 초과하여 입원하고 있는 경우 청구를 거부합니다.
청구 일자가 미래인 경우 청구를 거부합니다.
정책이 유효하지 않은 경우 청구를 거부합니다.
정책이 만료된 경우 정책 ID와 고객 이름을 포함한 잠재 고객 정보를 영업 부서로 보냅니다.
그렇지 않으면 청구를 승인합니다.
이 샘플이 있는 위치
<샘플 경로>\Business Rules\Medical Claims Processing and Testing Policies\
다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.
파일 | Description |
---|---|
Cleanup.bat | 어셈블리의 배포를 취소하고 GAC(전역 어셈블리 캐시)에서 어셈블리를 제거하는 데 사용됩니다. 송신 및 수신 포트를 제거합니다. 필요한 경우 Microsoft IIS(인터넷 정보 서비스) 가상 디렉터리를 제거합니다. |
Create_PolicyValidity_Table.sql | Northwind 샘플 데이터베이스에 PolicyValidity라는 새 테이블을 추가하는 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 파일에 정의된 스키마를 따르는 샘플 입력 파일 |
이 샘플 빌드 및 초기화
의료 보험 청구 처리 및 테스트 정책 샘플을 빌드하고 초기화하려면
사용자의 컴퓨터에 Northwind 데이터베이스가 있어야 합니다.
중요
이 샘플을 실행하려면 Northwind SQL Server 샘플 데이터베이스가 있어야 합니다. 다운로드하려면 Microsoft SQL Server 대한 Northwind 및 pubs 샘플 데이터베이스로 이동합니다.
명령 창에서 다음 폴더로 이동합니다.
<샘플 경로>\Business Rules\Medical Claims Processing and Testing Policies\
다음 작업을 수행하는 Setup.bat 파일을 실행합니다.
- Claims.dll, FactRetrieverForClaimsProcessing.dll 및 RulesForMedicalClaims.dll 포함하여 이 샘플에 대한 Visual Studio 프로젝트를 컴파일하고 배포합니다.
참고
이 샘플을 실행하기 전에 BizTalk Server가 빌드 및 초기화 프로세스 동안 오류를 보고하지 않았는지 확인해야 합니다.
참고
Setup.bat 파일을 실행하지 않은 채 이 샘플에서 프로젝트를 열고 빌드하려는 경우 먼저 .NET Framework Strong Name 유틸리티(sn.exe)를 사용하여 강력한 이름 키 쌍을 만들어야 합니다. 이 키 쌍을 사용하여 결과 어셈블리를 등록합니다.
SQL 쿼리 분석기를 사용하여 제공된 SQL 스크립트 Create_PolicyValidity_Table.sql을 실행합니다. 스크립트는 Northwind 샘플 데이터베이스에 두 개의 샘플 행과 함께 PolicyValidity 테이블을 만듭니다. 이 테이블에는 ID 및 PolicyStatus의 두 열이 있습니다.
BizTalk Server 송신 및 수신 포트를 만들고 바인딩합니다.
수신 위치를 사용하도록 설정하고 송신 포트를 시작합니다.
오케스트레이션을 등록하고 시작합니다.
참고
Setup.bat가 변경한 내용을 실행 취소하려면 Cleanup.bat를 실행합니다. Setup.bat를 두 번째로 실행하기 전에 Cleanup.bat를 실행해야 합니다.
이 샘플 실행
의료 보험 청구 처리 및 테스트 정책 샘플을 실행하려면
명령 창에서 다음 폴더로 이동합니다.
<샘플 경로>\Business Rules\Medical Claims Processing and Testing Policies\RulesForMedicalClaims\bin\Debug\
명령줄에서 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가 없는 클레임(예: ID 요소를 값 2로 변경)의 경우 다음 출력을 가져옵니다.
Sending to Renewal Department for Customer Smir with Policy # 2 Status: REJECTED! Reason: Policy ID is invalid
유효한 청구의 경우 다음 출력이 표시됩니다.
Status: Claim Accepted! Reason:
참고
이 샘플을 실행할 때마다 outputtrace.txt라는 텍스트 파일이 ...\RulesForMedicalClaims\bin\Debug 폴더에 만들어집니다. 이 파일은 규칙 실행의 디버그 추적을 포함하며, 매 실행 주기 후 \RulesForMedicalClaims\bin\Debug 폴더 아래에 만들어집니다. 이 파일을 확인하여 규칙 실행의 추적 출력을 볼 수 있습니다.
의견
규칙 집합 평가에 사용되는 팩트 소스는 다음과 같습니다.
장기 팩트 리트리버, 입니다. IFactReriever 인터페이스를 구현하는 NET 기반 애플리케이션은 FactRetrieverForClaimsProcessing 폴더에 빌드됩니다. 이는 PolicyValidity 데이터베이스에서 (데이터 집합 형식으로) 데이터를 검색하고 규칙 조건 평가에 사용하기 위해 의료 보험 청구 처리 정책에서 사용됩니다.
클레임은 이름, ID, 금액, 밤 및 날짜와 같은 형제 요소에 저장된 다음 정보를 포함하는 XML 문서의 형식입니다.
A . ClaimResults 클래스가 있는 NET 기반 클래스 라이브러리(Claims)는 속성을 사용하여 클레임의 STATUS 및 REASON를 기록하고 ID와 이름을 매개 변수로 사용하여 SendLeads 메서드를 호출하여 잠재 고객(정책이 유효하지 않은 경우)을 보내는 데 사용됩니다.
이러한 팩트 소스를 기반으로 이 시나리오에 정의된 규칙을 다음과 같이 약식으로 설명할 수 있습니다.
들어오는 청구가 유효한지 확인합니다. 액수가 청구 허용 한도를 초과한 경우, 정책이 만료된 경우(데이터베이스 테이블을 확인하여 검증됨), 입원 일수가 최대 허용 한도를 초과한 경우, 미래 날짜에 대한 청구일 경우 해당 청구는 유효하지 않습니다. 청구가 유효하지 않은 것으로 결정되면 청구의 상태와 사유를 적절하게 설정합니다.
들어오는 청구의 정책 ID가 만료되었으면 리드(정책 ID 및 고객 이름 포함)를 정책 갱신 부서로 보냅니다.
정책이 유효한 경우 청구의 상태와 사유를 적절하게 설정합니다.
규칙 및 해당 용어 바인딩에 대한 보다 공식적인 표현은 다음과 같습니다.
규칙 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