obsidiansystems / ex-healthcare-claims-processing

Reference DAML application demonstrating a healthcare use case.
Apache License 2.0
0 stars 1 forks source link

Reference Application: Healthcare Claims Processing

Overview

This application simulates processing a healthcare claim, starting with the referral from the Primary Care Provider (PCP) and including the creation of an appointment with the radiologist, checking in the patient on the date of the appointment, checking out the patient after service delivery, generation of the claim, and finally, payment for the procedure.

Getting Started

Installing

Disclaimer: This reference application is intended to demonstrate the capabilities of Daml. You are recommended to consider other non-functional aspects, like security, resiliency, recoverability, etc prior to production use.

Prerequisites

Be sure you have the following installed.

Starting the App

  1. Build the App. Type:

    make build

    Note: If you change the Daml models locally, you need to re-run this command before starting the application.

  2. Use separate terminals to launch the individual components:

    launchers/sandbox+populate
    launchers/automation
    launchers/healthcareUI

Stopping the App

  1. Stop the every running command by pressing Ctrl+C.

Working with Daml Hub

  1. As a first step, build the whole project
    make clean build
  2. Create a project and a ledger in Daml Hub
  3. Upload the DARs
  4. Add the parties to the ledger
    • PrimaryCareProvider
    • Radiologist
    • Patient1
    • Operator
    • InsuranceCompany
  5. Download participants.json from the ledger settings
  6. Create the ledger-setup.json file manually or by running

    node scripts/create-ledger-setup.js participants.json ledger-setup.json

    The resulting file should like this:

    {
      "parties": {
        "payer1": "ledger-party-92d3fc64-a589-4a18-9e47-30541fdc7824",
        "operator": "ledger-party-01328c4d-a7b1-49d4-92cc-400badcb46c2",
        "patient1": "ledger-party-841214e1-cb38-42fa-88a9-08710592f74d",
        "provider1": "ledger-party-5292e717-bbd6-43d5-8cdc-67b463427ee9",
        "provider2": "ledger-party-bd952624-9142-412d-ae39-f6025cd94ac8"
      }
    }

    The following table contains the necessary name mapping:

    Daml Hub name (in participants.json) Ledger Setup name
    primaryCareProvider provider1
    radiologist provider2
    patient1 patient1
    operator operator
    insuranceCompany payer1
  7. Run the ledger setup
    daml script \
      --participant-config participants.json \
      --json-api \
      --dar models.dar \
      --script-name DemoOnboardScenario.StartScript:setupLedger \
      --input-file ledger-setup.json
  8. Run the triggers from the Daml Hub UI

    Party Trigger
    InsuranceCompany Triggers.AcceptClaimTrigger:acceptClaimTrigger
    InsuranceCompany Triggers.AcknowledgeAppointmentTrigger:acknowledgeAppointmentTrigger
    Radiologist Triggers.EvaluateReferralTrigger:evaluateReferralTrigger
    Radiologist Triggers.UpdateReferralDetailsTrigger:updateReferralDetailsTrigger
    Patient1 Triggers.AcknowledgeAndDiscloseTrigger:acknowledgeAndDiscloseTrigger
    Patient1 Triggers.AcceptPatientPaymentRequestTrigger:acceptPatientPaymentRequestTrigger

User Guide

This User Guide will take you step-by-step through healthcare claims processing, executing one successful claim.

Note: This demo is designed to show successful processing of a claim without exceptions or error conditions. A full production implementation would include additional features, handle errors and exceptions, and incorporate appropriate security controls.

Workflow

Roles and Responsibilities

Role Responsibility
Primary Care Provider A physician, who creates a referral for a Patient to a Radiologist
Patient Visits the Primary Care Provider and is referred to a Radiologist
Pays their portion of the Bill/Claim after the Radiologist submits a Claim
Radiologist Checks Referrals and schedules an Appointment for a Patient
On the Appointment date they Check-In the Patient in and perform a treatment
Marks the Treatment as Completed which creates a Claim for the Insurance Company
Insurance Company Pays their portion of the Claim/Bill after the Radiologist submits a Claim

Steps

The Healthcare Process workflow involves these steps:

  1. Referral

    The Primary Care Provider creates a referral for "John Doe" in the system, sending the patient to a radiology lab (Radiologist) for an x-ray of a possible fracture. The system checks to verify that the patient is eligible for treatment under their insurance and calculates the cost of the procedure for this patient.

    Checks include:

    • Validity of the patient’s insurance policy (in good standing, not expired)
    • Network status of the radiologist (whether in or out of the insurance company’s approved provider list)
    • Verification of eligibility and pre-authorization for the treatment
  2. Appointment

    The Radiologist now creates an appointment for the patient in the system. The system ensures that the treatment is appropriate for the diagnosis and that any necessary pre-authorization has been done. It checks again to ensure that the patient insurance status has not changed since the referral was created.

  3. Check-In

    The patient goes to the lab and is checked in. Again the system reruns all the previous checks to determine if any parameter has changed, for example, whether the patient has satisfied more of their deductible before this date.

  4. Treatment Completion and Claim Creation

    The x-ray is done. The treatment is completed, and the claim is automatically created. The system creates an obligation for the patient to pay their portion of the cost (if any) and for the insurance company to pay its portion.

  5. Payment

    The insurance company now pays the claim to the lab. The patient pays any required amount as well. The amounts paid are the verified amount established in first steps of the process.

Running the Application

Choosing and Changing Roles

When you launch the application, you will see a login screen with the option to choose your Role.

To switch from one Role to another click on "Change Roles" in the lower left hand corner of the screen.

Note: In this application each Role is represented by a different Party, this is a simplified design for demonstration purposes.

Refer the Patient ("John Doe") to the Radiologist

The workflow begins with the patient visiting their Primary Care Provider physician (PCP) for treatment. The PCP decides the patient needs an X-Ray and creates a referral to a Radiologist.

Create a Referral

  1. Log in as the Primary Care Provider Role
  2. Go to Patients tab
  3. Click on the Patient "John Doe"
  4. Select "Refer Patient"
  5. Fill out the "Create Referral" screen and click "Create Referral.
    • You can select the "Policy", "Diagnosis Code", and "Procedure Code" from their respective dropdowns
    • Receiver must be "Radiologist" (without quotes)
    • All other fields can contain any text

Schedule an Appointment for the Patient as the Radiologist

The next step is scheduling the appointment for the x-ray.

Schedule the Patient

  1. Log in as the Radiologist
  2. Choose the Referrals tab
  3. Click on the referral for "John Doe" that you just created
  4. Choose Schedule Appointment
  5. Select the date and time for the appointment on the New Appointment pane and click the Schedule Appointment button.

    • You'll typically want to leave this as the current date and time, otherwise the system won't let you check in "John Doe" until the scheduled appointment time has passed.

    • This new appointment is now visible to the Radiologist and "John Doe".

    • The various checks are run again, and the payment requirements are displayed, showing now what payment the lab will receive and what the patient will owe.

    • The Primary Care Provider cannot see this part of the workflow, as the appointment scheduling is only disclosed to the Patient, the Radiologist, and the Insurance Company.

Check-In the Patient as the Radiologist

The next step is for the patient to arrive at the lab for the x-ray and be checked in.

Check-In

  1. Choose the Appointments tab as the Radiologist
  2. Click on "John Doe"s appointment
  3. Click "Check In Patient" and confirm in the dialog window

    The various checks are run again to confirm that the patient is still eligible and to recalculate the payments to account for any changes, such as a situation where the patient has satisfied part of their deductible.

Complete Treatment and Create the Claim as the Radiologist

After the x-ray is done, the patient is checked out from the facility, and the claim is created.

Complete Treatment

  1. Choose the Treatments tab as the Radiologist
  2. On the Treatments tab, click on the treatment with "John Doe"s name and click Complete Treatment and confirm in the dialog window
    • You can see the pending unpaid claim by locating it on the Claims tab. It will show both the Patient and Insurance Company's payment responsibilities.

Make Payments from Insurance Company and Patient

The last step of this workflow is for payment to be made to the lab by both the Insurance Company and the Patient

Make Payment

  1. Log in as Insurance Company and choose the Claims tab

  2. On the Claims list screen, click on the claim made from the Radiologist to the Insurance Company

    • Details of this claim will be displayed.
  3. Click the Pay Claim button, and confirm in the dialog window

  4. Log in as the Patient and choose the Bills tab

    • In a production system, the patient would likely log in through a patient portal rather than through this application.
  5. Click on the open claim from the Radiologist, click the Pay Bill button and confirm on the dialog window

And that's the whole workflow! You've just worked through a complicated but typical workflow involving 4 separate parties with their respective privacy preserved throughout and information disclosed only where necessary.

CONFIDENTIAL © 2019 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. Any unauthorized use, duplication or distribution is strictly prohibited.