Giter Site home page Giter Site logo

claims-network's Introduction

Claims Processing Business Network

This is a proof of concept, which demonstrates the core functionality of Hyperledger Composer by modelling a health care claims processing system, specifically using dental claims. Processing a claim is extremely complex involing several processing steps, some of which need to refer to value of assets that belong in other ledgers/channels.

This business network defines:

Assets
Claim - abstract supertype of all the claims types.
DentalClaim - abstract supertype of the dental claims - namely submitted and adjudicated. A complete model shall have medical, hosptial, pharmacy etc. claim types, which would also extend Claim.
SubmittedDentalClaim - a representation of a ADA dental claims form, that captures the claims input and is a record of the receipt from the provider that submits the claim.
DentalClaimAttachment - represents additional informaiton that supports the claim. This might be such things as doctors notes, X-Ray images, DICOM files etc. this encapsulates a Blob "type" which is modelled as a concept.
SubmittedDentalServiceLine - mutiple instances of these, referenced from the Submitted DentalClaim represent the services delivered under the submimtted claim. These itemize the specific services. The line contains a fee - which is the amount the provider is billing the payer and hopes to receive - the actual amout is determined by the contract the provider has with the payer and what the payer has agreed to pay undder the terms of a contract with the insured group. The type of the fee is a concept - BigDecimal - which represents fixed point decimal numbers. This is a compromise in abeyance of either a builtin type or support for an extensible type system.
AdjudicatedDentalClaim - this asset represents the claim as it is transformed dring several processing steps (the adjudication) from the point at which it is submitted to the point at which a payment is made to whomever is nomimated to receive the payment.
AdjudicatedDentalServiceLine - this corresponds to the submitted service lines, although there maybe a one to many relationship between the adjudicate line and the submitted lines. In the model so far only the back reference from the adjudicated line to the submited line is maintained. Each adjudicated line is a result of the adjudication processing and it forms a record of the chnages the adjudication perfomed on the claim. A line might add state the amount to be paid for a specific service line, and then later in the processing a subsequent line might indicate a reduction in the service payment based on further assessment. The eventual payment is made by totally all adudicated service line containing both positive (credits) and negative (debits) payments for the specific service.
Payment - this represents money that gets paid to the beneficairy of the claim - this might be the provider or the member, depdending upon the contracts.

Participants

HumanProvider - a human provider is named to distinguish it from a Provider which in medical terminology can sometimes refer both to a human and a facility at which medical services can be provided. A human provider participant will also be represented fully in a provider channel/ledger.
BillingProvider - this is the provider that submits the claim and to whom payments are rendered.
Member - is anyone who is a coverged by insurance, and might be either the subscriber or a depdendent of the subscriber - TODO is this needed? must this be the same model as the membership model?
Subscriber - this is the person covered by the helth isurance policy agsint which the claim is submitted and is potentially someone who coud receive payment for the claim depending on the terms of the contract with the provider.

Transactions
CreateSubmittedClaim - creates a submitted claim to start the process.
AdjudicateDentalClaim - this processes the submitted claim, the processing starts by creating an ajudicated claim from the submitted claim and then evaluating it against the terms of a contract. If the claim is a pre-dtermination the result is an estimated payment, else the result is a payment or the claim is placed into a pend state in abyeance of additional information.
PayDentalClaim - this pays the claim by sending a payment to the designated payee of the adjudicated claim.
PaymentCredits - these are payment adjustments that are returned to the payer as over payments of some type, and might appear from the AR system. GetAllSubmittedClaims - returns all the submitted claims an writes their ids to the console log.
PostTransaction - this is a test of the http post - experimental ...

Events
PayClaimEvent - notifiy a participant that the claim has been paid.

A billing provider submits claims to the system to be paid or adjudicated. Once the claim is submitted the adjudication processes is run against the claim. If the claim type is a pre-determination the claim is asessed and a amount returned that would be paid if the claim is submitted as an encounter. If the claim is submitted as an encounter it's processed and a payment generated. The payment is made to the billing provider by running the payment transaction on the adjudicated claim that must be in a "payable" state.

To test this Business Network Definition in the Test tab:

Create a BillingProvider participant:

{
  "$class": "org.acme.claim.BillingProvider",
  "tin": "123",
  "npi": "222",
  "name": {
    "$class": "org.acme.claim.HumanName",
    "firstName": "Adrian",
    "lastName": "Blakey"
  }
}

Create a CreateSubmittedClaim asset:

{
  "$class": "org.acme.claim.CreateSubmittedClaim"
}

Submit a AdjudicateDentalClaim transaction:

{
  "$class": "org.acme.claim.AdjudicateDentalClaim",
  "submittedDentalClaim": "resource:org.acme.claim.SubmittedDentalClaim#1"
}

You should then have an AdjudicatedClaim like this:

{
  "$class": "org.acme.claim.AdjudicatedDentalClaim",
  "claimStatus": "HELD",
  "amount": 21.21,
  "submittedDentalClaim": "resource:org.acme.claim.SubmittedDentalClaim#1",
  "dentalClaimType": "ENCOUNTER",
  "claimId": "1"
}

Submit a PayDentalClaim transaction to pay the claim.

{
  "$class": "org.acme.claim.PayDentalClaim",
  "adjudicatedDentalClaim": "resource:org.acme.claim.AdjudicatedDentalClaim#1"
}

After submitting this transaction, you should now see the transaction in the Transaction Registry and that a AdjudicatedDentalClaim and Payment have been emitted. As a result, the value of the assetId:1 should now be new value in the Asset Registry.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.