Patient Insurance

Donate to this project

Development Project Status: Completed

Total cost estimate (ex-Tax): 
Due date for completion of this stage: 
Current Percentage Funded: 
Project funding: 

You can donate money to this project by entering the amount above and clicking the 'Add to cart' button. In the Checkout process you can either choose to pay now (via Bank Transfer, Cheque or Pay Pal) or you can pledge the amount by choosing the 'Pledge a payment for a Development Project' method. If you make a pledge, then when we have 100% funding commitments, you will be notified by email and you can then action your payment. Note that development will not commence until all funds are received.

Project description: 

1. Overview

This project will:

  • allow insurance policies to be managed, per-patient
  • allow claims to be created for a given policy
  • allow claims to be printed or emailed
  • display the patient's current policy in the summary
  • optionally submit claims to an insurance provider, if one is configured

Insurance policies and claims may be created, edited and viewed in a new Insurance tab, in Patients - Medical Records.

2. Insurance Policies

Currently, insurance information is held on the customer; this was provided for migration from legacy systems.

This project will allow each patient to have their own policy, containing:

  • policy start time
  • policy end time
  • the patient
  • the policy number
  • the type of insurance
  • the insurer

3. Insurance Claims

Insurance Claims may be made against a patient's Insurance Policy.

An Insurance Claim contains:

  • a start date, indicating when the claim was created
  • the practice location managing the claim
  • the clinician responsible for the claim
  • the author of the claim (the logged in user who created the claim)
  • processing date, indicating when the insurer started processing the claim
  • an end date, indicating when the claim was settled, cancelled or declined
  • insurer claim identifier - the id the insurer has given the claim
  • a link to the Insurance Policy
  • optional clinical notes, to include with the claim
  • optional non-clinical notes, to include with the claim
  • 1 or more Insurance Claim Items
  • status (In Progress, Finalised, Cancelled, Settled, Declined)
  • a cancelled reason (only applicable when the status is Cancelled)
  • a declined reason (only applicable when the status is Declined)
  • payment details
  • flag to indicate if the claim should be paid to the vet
  • optional bank account details to pay the claim into:
    • account name
    • bank
    • branch
    • account number

An Insurance Claim Item contains:

  • a diagnosis
  • treatment dates
  • an optional deceased status indicating if the patient died as result of the condition being claimed. One of:
    • Deceased
    • Euthanased
  • a euthanasia reason, if deceased status is Euthanased
  • optional notes
  • a flag indicating if the Claim Item is for an ongoing condition
  • invoice items related to the Claim Item
  • total for the invoice items
  • attachments related to the Claim Item

E.g. a claim may look like:

  • Claim Item 1
    • Diagnosis: Glaucoma - primary
    • Ongoing: true
    • Treatment dates: 1/1/2015-2/1/2015
    • Invoice Items
      • Service 1: $100
      • Medication 1: $23
      • Medication 2:  $10
    • Total - $133
  • Claim Item 2
    • Diagnosis: Osteoarthritis - hip
    • Ongoing: true
    • Treatment dates: 1/1/2014-1/1/2014
    • Invoice Items
      • Medication 6 - $10
      • Medication 5 - $5
      • Medication 4 - $20
      • Service 3 -  $50
    • Attachments
      • Hip x-ray
    • Total - $85

3.1 Creating Claims

Insurance claims are made be selecting a patient's Insurance Policy, and clicking Claim. This displays an Insurance Claim editor.

Claim Items can be created using:

  • the Add button - all fields need to populated manually
  • the Add Problem button - this allows the fields to be pre-populated from one of the patient's Clinical Problems

Adding Invoice Items

Invoice items are added to a Claim Item by clicking the Add Charges button.

This displays an Add Charges popup that lists all invoice items for the patient between the entered treatment dates, that haven't already been claimed.

Each invoice item is displayed a tick-box next to it, that is selected by default.

Invoice items are listed with the following details, most recent first:

  • Invoice Id
  • Invoice Date/time
  • Invoice Item Id
  • Product name
  • Quantity
  • Total

Clicking OK adds all of the ticked invoice items.

Removing Invoice Items

Invoice items can be removed from the Claim Item by selecting them and pressing Delete.

Adding Attachments

Attachments are added to a Claim Item by clicking the Add Attachments button.

This displays an Add Attachment popup that lists all documents for the patient between the entered treatment dates, that haven't already been added.

Each document is displayed a tick-box next to it, that is selected by default.

Clicking OK adds all of the ticked documents.

Removing Attachments

Attachments can be removed from the Claim Item by selecting them and pressing Delete.

Creating Claim Items from Clinical Problems

The Add Problem button can be used to automatically create and fill in the details a Claim Item. This displays a list of all of the patient's Clinical Problems, most recent problem first.

When a Clinical Problem is selected, this performs the following steps:

  1. creates a new Claim Item, with the diagnosis and treatment dates pre-filled
  2. displays the Add Charges popup, listing all invoice items between the treatment dates. Clicking OK adds the selected invoice items to the Claim Item
  3. displays the Add Attachments popup, listing all documents  between the treatment dates. Clicking OK adds the selected documents to the Claim Item

3.2 Editing Claims

Existing claims may only be edited if their status is In Progress.

3.3 Printing and Emailing Claims

Claims may be printed or emailed. This will be supported via a JasperReport template. This template will include:

  • patient summary information
  • policy information
  • claim items
  • a total of the claim
  • patient history, up to the time of the claim

If the claim is not finalised (i.e can still be edited), the output will include the text Draft, to indicate that it is not complete.

If a claim contains attachments, these will be automatically be included in emails.

Attachments must be printed separately.

3.4 Claim Workflow

An Insurance Claim may have one of the following statuses:

  • In Progress - the initial status for a claim. Indicates that the claim may be edited
  • Finalised - the claim claim has been finalised, and may not be edited
  • Processing - the insurer has received the claim, and is processing it
  • Cancel Pending - the claim is scheduled to be cancelled. Only applicable for online claims
  • Cancelled - the claim has been cancelled
  • Settled - the claim has been settled by the insurer
  • Declined - the claim has been declined by the insurer

Submitting a Claim

An Insurance Claim may be submitted by clicking the Submit Claim button. This is only enabled if the claim is In Progress.

If the associated insurer supports online claims, online claims, the claim will be submitted.

The claim status will be set to Finalised.

Processing a Claim

If a claim has been submitted to an insurer, this can be recorded by clicking the Process Claim. This is only enabled if the claim is Finalised, and the insurer doesn't support online claims.

The claim is updated with:

  • the Processing Date set to the current date/time
  • optional Insurer Claim Id if known
  • the status set to Processing

Cancelling a Claim

An Insurance Claim may be cancelled by clicking the Cancel Claim button. This is only enabled if the claim is In Progress or Finalised.

This displays a dialog prompting for the reason for the cancellation. The claim is updated with:

  • the End Date set to the current date/time
  • the Cancellation Reason set to the entered reason

If the insurer supports online claims, the cancellation will be submitted to the insurer, and the status set to Cancel Pending, otherwise its status will be set to Cancelled.

Settling a Claim

An Insurance Claim may be settled by clicking the Settle Claim button. This is only enabled if the claim is Processing, and the insurer doesn't support online claims.

The claim is updated with:

  • the End Date set to the current date/time
  • the status set to Settled

Declining a Claim

An Insurance Claim may be declined by clicking the Decline Claim button. This is only enabled if the claim is Processing and the insurer doesn't support online claims.

This displays a dialog prompting for the reason the claim was declined. The claim is updated with:

The claim is updated with:

  • the End Date set to the current date/time
  • the status set to Declined
  • the Declined Reason set to the entered reason

3.5 Copying Claims

Claims may be copied to create new claims, by clicking the Copy button. The new claim will be displayed in an editor. The copied claim has:

  • In Progress status
  • empty Processing Date,  End Date, Cancellation Reason and Declined Reason

4. Online claims

To support online claims, a plugin API will be provided that allows OpenVPMS to:

  • submit claims
  • cancel claims
  • provide additional attachments to an existing claim
  • obtain the declaration that users must accept before submitting a claim
  • synchronise supported insurers

4.1 Plugin Configuration

On initial deployment, insurance services will install an entity.insuranceService<Name> archetype containing the following mandatory fields:

  • name - the insurance provider name
  • description - the insurance provider description
  • - insurance provider phone contact
  • - insurance provider website URL contact
  • help - URL for online help for claims

The archetype can include additional fields required for connecting to the provider.
The entity.insuranceService* archetypes will be configurable by administrators in Administration - Organisation.
Typically, this would be used to provide usernames and passwords for connecting to the service.

4.2 Insurer synchronisation

An insurance service may accept claims for multiple insurers. The API will provide a method to synchronise party.supplierInsurer instances managed by the service.
This will:

  • locate all party.supplierInsurers currently associated with the plugin
  • retrieve the latest list of suppliers and:
    • add new suppliers where applicable
    • deactivate suppliers that are no longer applicable

New party.supplierInsurer instances will be associated with the entity.insuranceService*, so that it is invoked when claims are made

4.3 Declaration

An insurer may require users to accept a declaration prior to submitting a claim.

A method will be provided to return this declaration, as plain text.

When present, users must agree to the declaration, before the claim will be submitted.

4.4 Adding attachments

An insurer may request additional information if the claim is incomplete. For claims with Processing status, it will be possible to attach:

  • existing customer and patient documents
  • uploaded files

to the claim. These will be automatically submitted.

No other changes to the claim are possible.

5. Patient Summary

The patient summary will be updated to include the current policy for the patient, if any e.g.:

  • Insurance: None
  • Insurance: Pet Plan
  • Insurance: Expired

6. Archetypes

The following archetypes will be required:

  • entity.insurancePolicyType. This contains:
    • the policy name
    • a link to a claims document template, for printing and emailing
  • party.supplierInsurer. This contains:
    • the insurer name
    • the insurer identifier, if the ensure was created by an insurance service
    • contacts
    • insurance policy types
    • a link to the insurance service that handles e-claims for this insurer
  • act.patientInsurancePolicy. This contains:
    • policy start time
    • policy end time
    • the patient
    • the policy number
    • the type of insurance
  • act.patientInsuranceClaim. This contains:
    • link to the act.patientInsurancePolicy
    • link to 1 or more act.patientInsuranceClaimItem
    • the total for the claim items
  • act.patientInsuranceClaimItem. This contains:
    • the diagnosis
    • the treatment start time
    • the treatment end time
    • an optional patient deceased status
    • an optional euthanasia reason
    • optional notes
    • the invoice items being claimed
    • the total for the invoice items
  • entity.patientInsuranceService*

7. Migration

Existing insurance information needs to be migrated as follows:

  • for each lookup.customerInsurance, create a corresponding entity.insuranceType
  • for each customer with an insurance plan, create a corresponding act.patientInsurancePolicy linked to each of their pets. As the current customer insurance doesn't specify any start time, the policy start time will be left blank. This means that the policy will need to be manually edited in order for it to be considered valid.
  • remove the lookup.customerInsurance archetype

8. Reporting Framework Changes

In order to support printing claims the reporting framework will need to extended to support subreports nested within subreports.

9. See Also




Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: Patient Insurance

It would be great if the pet insurace company name (if present or at least a display of 'yes' or 'no' for pet insurance) is listed in the Patient Summary space on the left too, much the same as adding patient's DOB which is also under discussion.

Kind regards,

Anthony (ActiVet)

Kind regards,

Anthony (ActiVet)

Re: Patient Insurance

Any news on progress on this report ?

Re: Patient Insurance

Which report are you referring to?

The project itself needs more feedback from users before it can be costed.

Can you review the requirements above, and see if they meet your needs?


Re: Patient Insurance

We would be very supportive of this addition. Insurance claims are taking an increasingly large amount of time to handle, and any mechanism to streamline the process would be appreciated. I cannot see where any of the suggested reforms could be improved.

Re: Patient Insurance

I have been watching this area over the last few months unfortunately Insurance uptake in our area is still low, so this is low priority personally, but from a larger scale point of few I think Openvpms needs to watch this space carefully.

I mentioned it early, but there is a significant push in the UK to move to a standard called VETXML, thier own "pitch" shows uptake by big industry partners, the concern here is if we try and reinvent the wheel and ignore this sort of standardization we could marginalize Openvpms in the UK and potentially other markets.

Shows where this consortium is pushing into various markets. This has ramifications for both ordering, insurance, lab results IMO....

This comment may be better read in the overall context of where Openvpms is headed, but I noticed that one of the larger commercial software companies in the Australian market has recently signed into this system, with them pushing labs/wholesalers/insurers to compy it might be a matter of when not if.

I would be interested in other's comments regarding opinions of this group and the relevant parties.


Re: Patient Insurance

Hi Ben,

I agree we should be keeping an eye on emerging standards and Vetxml is just one that is out there.

Back in late 2010 when I first became aware of Vetxml I sent an email to introduce the OpenVPMS project and to offer to become involved in the Consortium.  The response was as I was based in Australia and couldn't attend the meetings and to essentially just look at the published standards and send feedback. I must admit I thought this was a interesting response from an organisation wanting to promote an open and global standard. :-)

Do you know if any insurance companies here and in the states are promoting VetXML ?

Cheers Tony

Re: Patient Insurance

The software company I refer to is one I am sure we have all had contact with at one time or another...and you can look at the vetxml partners to see.

Re: Patient Insurance


I just noticed this discussion.

My thoughts are that we should probably start this process rather than waiting for a standard to emerge. Insurance claims are becoming a bigger and bigger impediment on our time so efficiencies here would be welcomed.

The project listed above looks like a great start.

Has anyone managed to integrate any sort of Insurance Form into OpenVPMS? I have had a half hearted crack at it but the fiddling around with a complex document in Word/OO was a bit much and I couldn't integrate enough information to make it worthwhile pursing.

Thus I think points 3 & 4 are very important as this is where major efficiencies can be gained.

Would the claim forms be saved in this proposal?

Re: Patient Insurance

I've updated the spec to indicate that the claim form will be saved to the patient history.

What sort of information were you trying to get to add to the form? This will feed into the requirements for point 4 - "Provide extension functions required to merge data into claim forms".


Re: Patient Insurance

Adrian wrote:

>Has anyone managed to integrate any sort of Insurance Form into OpenVPMS?

The only thing I've been able to create is a Cruciate Ligament Examination Form (as I seem to be doing one of these every week) which I've uploaded here to Users|Shared Resources.  The frustrating thing I've found is that there's no standardisation across any of the various claim forms to enable creating an OV repoort, so I usually just print a Patient Clinical Event and write on the claim form "see attached"; otherwise it seems to take longer to write up the claim form than perform the consult.


Re: Patient Insurance

I think we might be reaching a stage where we could produce a draft "standard" form and give it to the various bigger players giving them a month or so to provide feedback on whether they would require changes before accepting it. If the changes suggested were mutally exclusive, we might have a problem, but this is unlikely.

There might need to be a tab to hit if it is the first claim - which would attach a full copy of the patient history - and I think that the form would need to be emailable. Might get some stink about requesting this. So perhaps we start with something we print, sign and send. Regardless, I think we could take the draft to the masses and get some sort of consensus that then could be adopted as the standard. No-one has ever told me we MUST use their forms after all.


Maybe we could even get funding from them.....

Re: Patient Insurance

Do we have a cost for this project as yet?

OpenVPMS Installer and Helper (Smalltime Developer) 
Ph: +61423044823 

Re: Patient Insurance

It has recently undergone major revision, so it would be great if interested parties can review it before it is costed.

Lacking from the specification is the ability to collate details if a claim item is related to a patient's death, and if that was as a result of euthanasia. This may not be relevant to claims submitted via mail, but does come up in the VetXML eClaims documentation.


Re: Patient Insurance

One of the broad issues facing this project is the fact that its overimplemented for Australian practices - basically the best an Australian practice could hope for at the moment is 

1.  Link the patient and insurance company

2.  A form based on that link to process a claim

The rest really is designed around processing a claim quickly with a insurance company - as a result they are the interested parties but last I checked we had no interest.


OpenVPMS Installer and Helper (Smalltime Developer) 
Ph: +61423044823 

Re: Patient Insurance

Presumably in the Australian setting you still need to be able to collate the relevant data to go into the form, and the above will allow you to do that.

One thing that isn't supported is claim specific information, e.g. Pet Plan has fields for vaccinations, urinary problems etc. These could be collated using provider specific claim items.

I imagine that claim forms change on a regular basis, so I don't really want to maintain insurer specific jasper report templates that replicate their claims layout.



Re: Patient Insurance

We are interested in insurance claims, VetXML and VetEnvoy.  Was there ever a final price decided on for this project?

Cahir P. King

Re: Patient Insurance

The issue with VetEnvoy in Australia atleast is that noone will support it ...and typically none of the insurers here are interested in even supporting electronic claims submission.


OpenVPMS Installer and Helper (Smalltime Developer) 
Ph: +61423044823 

Re: Patient Insurance

I've updated the project but the VetEnvoy Insurance Claims integration project still needs to have the mapping specified. This may feed further requirements back in to this project.

Re: Patient Insurance

This looks really well specified guys. Congratulations.


Can I humbly suggest this option:

  • flag to indicate if the claim should be paid to the vet
  • optional bank account details to pay the claim into:
    • account name
    • bank
    • branch
    • account number

Be configurable per insurer at an admin level so that associates cant tick a box during an online claim submission by accident?


On a side note, to update claim status, does this involve exposing the OpenVPMS server to the web or does it just poll the insurer when the claim status is requested?


Great work!

Matt Costa

Re: Patient Insurance

For OpenVPMS 2.0, claims will be limited to those where the insurer pays the customer after the customer has paid the vet.

We are currently in the process of specifying support for gap claims (i.e. where the insurer pays the vet for some or all of a procedure), which will hopefully be in the 2.1 release.

There will be a flag to indicate if a claim is a gap claim or not. This cannot be accidentally ticked as the preconditions for each claim is different:

1. Where the insurer pays the customer, only invoices that have been paid may be claimed

2. Where the insurer pays the vet, only unpaid invoices may be claimed. Once the benefit amount is determined by the insurer, the customer must pay the gap.

With regards to bank account details, at the moment we haven't found a need to collect them. This is handled by the insurer outside of the claims API.

With regards to exposing the OpenVPMS server to the web, this should not be required. It certainly isn't required with the PetSure plugin.


Re: Patient Insurance

My apologies for neglecting to note that this project was fully funded by Petsure. Development is happening right now and is in the early stages of testing.

Many thanks to Julie and the team at Petsure for your support.

Syndicate content