Skip to content
Last updated

Integrated Private Health Fund Claiming

Introduction

This document outlines the implementation process for integrating private health fund claiming into Practice Management Software (PMS) using the Tyro HealthPoint system. It is intended for software developers and integration specialists and covers:

  1. Overview
  2. iClient API
  3. Claim Requests
  4. Callbacks
  5. Claim Response
  6. Claim Cancel
  7. Testing and Demo

Overview

The PMS is responsible for building and validating claim payloads, including provider details, patient identifiers, and claimable service items. The terminal is used only to capture patient health fund member details via swipe or tap.

Once the claim payload has been drafted, the PMS invokes iClient passing in the list of claim items (in JSON format) along with some other details. The iClient window appears, and the claim is passed through to the terminal for processing. The patient swipes or taps their health fund card in the terminal when prompted, and the claim is sent off to the appropriate health fund for approval. Once approved, the terminal prints the claim receipt and shows the gap amount to the patient. On the PMS, iClient shows the gap amount and asks the operator to Accept or Reject the claim. Pressing the Accept button prompts the terminal to print the patient copy and finalise the claim. Pressing the Reject button prompts the terminal to void the claim and print receipts showing that the claim has been voided. In either case, the result of the original claim is returned to the PMS.

Before beginning development, review the Certification Criteria for iClient Health for minimum requirements.

iClient API

Refer to iClient API for sample HealthPoint claiming code. After downloading and extracting the zip folder, navigate to iclient-api/index.html, then Classes > TYRO.IClientWithUI. At the top left corner underneath the APIs, click on Classes, and then click on TYRO.IClientWithUI, scroll down until you see the index and method tabs, then click on index.

Claim Requests

Claim Payloads

The iClient API for Private Health Fund claims requires specific parameters, including a JSON claim payload. For cancellations, use the same payload as the original claim, and cancellations can only be performed on the same day.

HealthPoint Claiming Implementation

initiateHealthPointClaim(requestParams, transactionCallbacks) - Tell the terminal to start a HealthPoint claim.

Request Parameters

Request ParametersTypeDescription
claimItemsStringJSON array of claim items (max 16)
claimItemsCountintTotal number of claim items
midIntegerOptional - Required for headless pairing, multi-merchant, or if your browser does not support local storage
tidIntegerOptional - Required for headless pairing, multi-merchant, or if your browser does not support local storage
integrationKeyStringUse if your browser does not support local storage, headless pairing or multi-merchant as a feature
providerIdString8-character provider number (usually Medicare issued)
serviceTypeString1-character category of service. See table below
totalClaimAmountIntThe total amount of all claim items in cents
transactionidStringOptional - Supply a custom transaction ID
transactionCompleteCallbackFunctionInvoked when the transaction has been completed on the terminal
statusMessageCallback*FunctionInvoked to advertise what is happening on terminal, which is typically facing the customer rather than the provider
questionCallback*FunctionInvoked when the terminal requires the merchant to answer a question in order to proceed with the transaction

claimItems Table

Claim parameterTypeDescription
serviceReferenceStringclinical reference or tooth number suffix. See reference below. (max 3 chars)
claimAmountintClaim amount in cents (max 10 digits)
serviceDateStringClaim date (YYYYMMDD format)
descriptionStringItem description for receipt (max 32 chars)
serviceCodeStringItem number or service code (max 5 chars)
patientIdStringPatient identifier (exactly 2 digits)

Item Numbers

The PMS is responsible for maintaining and providing the item numbers for claims. Refer to the HealthPoint reference data for currently approved item numbers. Note that item numbers may change annually, typically on April 1st. Reference HealthPoint reference data for currently approved item numbers by modality.

Service Reference

Each claimable item has an optional 3-character serviceReference. This field is used by various professions to list elements required for claims with particular funds. Refer to the HealthPoint reference data for specific codes. This includes:

  • Psychology: Primary condition as 2 numerical characters
  • Occupational Therapy: Primary condition as 1 numeric character and Diagnostic Intervention as 1 numeric character
  • Physiotherapy and Chiropractic: Body part / Clinical code as 2 alphanumeric characters
  • Dentistry: FDI Tooth number as 2 numerical characters
  • Other professions: up to 3 alphanumeric characters

Details of these codes can be found in the HealthPoint reference data document.

Modalities

Modalities represent various types of health services. The serviceType field in the claim payload should contain the appropriate modality code. Reference HealthPoint reference data for modalities supported by each Health Fund. Modalities include:

ModalityDescription
0Dental Technician
1Osteopath
3Endodontist
4Oral Surgeon
5Orthodontist
6Paedodontist (Paediatric)
7Periodontist
8Prosthodontist
BAcupuncturist / Chinese Medicine
CChiropractor
DGeneral Dentist
EDietitian
FPodiatrist
GMedical Doctors (including GP claims for overseas cover)
HOccupational Therapist
JMyotherapy
MRemedial massage therapist
OOptometrist
PPhysiotherapist
QCounselling
SSpeech Pathologist
UExercise Physiology
VAudiology
YPsychologist
ZOptical Dispenser

Health funds supported by Tyro HealthPoint

Note this includes funds that support both Private Health Insurance. Some funds also support Overseas Visitors and Overseas Student Cover claims.

Health Fund NameHealth Fund IDIdentifying Digits
ACAPHF000100012
ADF Family HealthPHF005100109
AHMPHF005500041
AIAPHF004200138
Australian UnityPHF000400008
BUPAPHF003000007
~BUPA~~PHF00260~~0006~
~BUPA~~PHF00370~~0003~
CBHSPHF000700009
CBHS Corporate HealthPHF000750139
Credicare (See-U by HBF)PHF000600045
DefencePHF000300020
Doctors Health FundPHF000200005
EMERGENCY SERVICES HEALTHPHF004700140
~GMF Health~ (merged with HBF)~PHF00110~~0040~
GMHBA/FRANK/BUDGETPHF001000042
HBFPHF001800025
HCFPHF002000015
HCIPHF001400013
~health.com.au~ (merged w/GMHBA)~PHF00500~~0125~
Health PartnersPHF004500024
HIFPHF001600026
LatrobePHF002200038
Lysaght / PeoplecarePHF002300016
Medibak PrivatePHF002400004
NavyPHF003100010
nib (including brands AAMI, APIA, Australian Seniors, IMAN, ING Health, Priceline health insurance, QANTAS, Real Health insurance and Suncorp)PHF002900002
onemedifund (National Health Benefits Australia)PHF004600088
Phoenix HealthPHF003300019
PolicePHF003800021
QLD CountryPHF002800022
Reserve Bank Health SocietyPHF003500089
RT / Transport HealthPHF003500084
St Lukes / Astute SimplicityPHF003900044
Teachers UniHealthPHF003200011
TUHPHF003400018
WestfundPHF004400096
isoft Fund (for testing only)PHF009990099

Note: The test health fund (ISOFT Fund) is PHF00999 and has identifying card digits of 0099 and only works in non-production environments.

Current list of supported funds by provider modality

Reference the following Excel doc for a list of item codes and responses for each supported fund and modality: <ins><span style="color:red">HealthPoint reference data</span></ins>

Note: A category code is included in the reference data but does not need to be set by the PMS.

Health funds not currently supported by Tyro HealthPoint

  • CDH (Hunter Health Insurance)
  • GU Health *under migration to nib
  • MDHA (Mildura Health Fund)

Example request


iclient.initiateHealthPointClaim({
    providerId: "1455813F", 
    serviceType: "P", 
    claimItemsCount: "2", 
    totalClaimAmount: "20100", 
    claimItems: [
        {
            "claimAmount": "10000",
            "serviceCode": "500",
            "description": "Assessment Consult",
            "serviceReference": "01",
            "patientId": "02",
            "serviceDate": "20240921"
        },
        {
            "claimAmount": "10100",
            "serviceCode": "505",
            "description": "Subsequent Consult",
            "serviceReference": "01",
            "patientId": "02",
            "serviceDate": "20240921"
        }
    ]}, {
    transactionCompleteCallback: yourPosCode.handleComplete,
    statusMessageCallback: yourPosCode.handleStatusMessage,
    questionCallback: yourPosCode.questionAsked
});

transactionCallbacks

Callback functions that are only required when using TYRO.IClient. When using TYRO.IClientWithUI, status messages and questions are handled by the UI provided.

Steps to follow

The steps to be followed to handle the response are given as follows:

  1. You are required to code callback functions to handle the responses returned by iClient via the statusMessageCallback , the questionCallback , and the transactionCompleteCallback. Examples of callback functions are given in the below.
  2. You must associate the callback functions that you have created with the callbacks in the function invocation.
  3. The PMS must use the response fields returned by the callback, and use them to control any subsequent workflows within the PMS e.g. using the result field to control when the PMS closes the transaction off, displays the result on the screen, and mark the transaction in the correct status e.g. "Approved".
  4. The PMS must conduct all follow-up actions/workflows in the callback function.

transactionCompleteCallback Function:

Callback NameTypeDescription
transactionCompleteCallbackFunctionInvoked when the transaction has been completed on the terminal.

statusMessageCallback Function:

Callback NameTypeDescription
statusMessageCallbackFunctionInvoked to advertise what is happening on terminal, which is typically facing the customer rather than the merchant. Called with a single String argument. For example "Patient Approval".

questionCallback Function:

Callback NameTypeDescription
questionCallbackFunctionInvoked when the terminal requires the merchant to answer a question in order to proceed with the transaction. This may include a prompt for the patient to Approve or Decline a claim

Question Callbacks may not be applicable for all transactions. However, when

FieldTypeDescriptionUsage Required
textStringThe question message to present to the merchant.Required (if the callback itself is being used.)
optionsArray[String]The set of button labels to present. A button should be presented to the merchant for each element in this array.Required (if the callback itself is being used.)
answerCallbackFunctionThe callback to be used to provide the merchant's answer to the question. The PMS should call this function when the merchant clicks one of the buttons passing the label of the clicked button (from the options array in the question).Required (if the callback itself is being used.)

Claim Response

Claim responses are typically returned within 5 seconds but may take up to 55 seconds with some funds. If a response is not returned within 55 seconds, the terminal will send an Autovoid and the claim must be reattempted.

Key response fields:

FieldDescription
resultOverall transaction result as one of the following values: APPROVED, CANCELLED, REVERSED, DECLINED, SYSTEM ERROR, NOT STARTED, UNKNOWN. The provider will only receive settlement if this value is APPROVED. UNKNOWN means the provider should look at the terminal to determine what happened. Typically this would indicate a network error.
transactionIdThe 36 character id for an integrated transaction
healthpointFreeTextOptional text returned from the health fund - can include patient name, policy details or loyalty information
healthpointGapAmountAggregate Gap amount
healthpointHealthFundNameHealth fund name
healthpointPhfResponseCodeClaim level response code
healthpointRefTagA claim unique identifier printed on the receipt
healthpointSettlementDateTimeSettlement timestamp from HealthPoint
healthpointTerminalDateTimeTerminal local timestamp
healthpointTotalBenefitAmountAggregate benefit amount
healthpointClaimItems.rebateAmountService item benefit amount
healthpointClaimItems.responseCodeService item response code
healthpointClaimItems.responseCodeDescriptionService item response short description

Other elements will echo the request submission.

All responses except "00 - APPROVED" mean the item has been declined by the fund. Items may return a response code other than '00' and still pay a limited benefit. Reference Response codes for details on each type of response.

Loyalty and bonus codes

For select funds like HCF, it's possible to receive back an additional benefit only item code not submitted by the PMS as part of a Health Fund loyalty or bonus program. This benefit only item code will reduce the gap owed by a patient. The code will be displayed on patient and provider receipts with:

  • $0 charge amount
  • a benefit only amount
  • item serviceCode '00992'
  • additional detail may be returned in the field healthpointFreeText, such as "Limit Boost"

Example response

{
"result": "APPROVED",
    "transactionId": "6dbdaffd58adac4e89387f2c9d2c0cdd7c1e",
    "healthpointRefTag": "2120599",
    "healthpointTotalBenefitAmount": "6600",
    "healthpointSettlementDateTime": "20240921093316",
    "healthpointTerminalDateTime": "20240921093316",
    "healthpointMemberNumber": "12345678",
    "healthpointProviderId": "2147661H",
    "healthpointServiceType": "P",
    "healthpointClaimItems": [
        {
            "claimAmount": "1000",
            "rebateAmount": "600",
            "serviceCode": "00500",
            "description": "Assessment Consult",
            "serviceReference": "01",
            "patientId": "02",
            "serviceDate": "20240921",
            "responseCode": "0000"
        },
        {
            "claimAmount": "10000",
            "rebateAmount": "6000",
            "serviceCode": "00520",
            "description": "Extended Consult",
            "patientId": "02",
            "serviceDate": "20240921",
            "responseCode": "0000"
        }
    ],
    "healthpointGapAmount": "4400",
    "healthpointPhfResponseCode": "00",
    "healthpointPhfResponseCodeDescription": "APPROVED",
    "healthpointHealthFundName": "ISOFT FUND",
    "healthpointHealthFundIdentifyingDigits": "0099"
}

Gap Payments

Once a claim has been approved, there is typically a gap between the benefit amount paid by the health fund and the amount charged by the practitioner. If the patient would like to use a card to pay for the gap amount, the standard purchase method can be used to process the payment. Please be sure to pass in the healthpointTransactionId which is the transactionId returned in the response to the original HealthPoint claim.

Settlement

An aggregated single settlement (aside from HCF who issues a separate settlement) is issued by HealthPoint to the provider the following business day for all approved claims. The settlement claims period is 00:00:00 to 23:59:59 Australian Eastern time, adjusted for daylight savings.

Claim Cancel

An Approved Claim can be cancelled on the same day it was processed prior to settlement (23:59:59 Australian Eastern Time, adjusted for daylight savings).

HealthPoint Claim Cancel Implementation

cancelHealthPointClaim (requestParams, transactionCallbacks) - Tell the terminal to cancel a HealthPoint claim.

Request Parameters

Request ParametersTypeDescription
claimItemsStringJSON array of claim items (max 16) - must be same as original claim
claimItemsCountintTotal number of claim items - must be same as original claim
midIntegerOptional - must be same as original claim if set
tidIntegerOptional - must be same as original claim if set
integrationKeyStringmust be same as original claim if set
providerIdString8-character provider number - must be same as original claim
serviceTypeString1-character category of service - must be same as original claim
totalClaimAmountIntThe total amount of all claim items in cents - must be same as original claim
refTagStringThe reference tag (healthpointRefTag) returned in the original claim's final transaction status response - required
transactionidStringOptional - Supply a custom transaction ID. Must be different from the original claim
transactionCompleteCallbackFunctionInvoked when the transaction has been completed on the terminal
statusMessageCallback*FunctionInvoked to advertise what is happening on terminal, which is typically facing the customer rather than the provider
questionCallback*FunctionInvoked when the terminal requires the merchant to answer a question in order to proceed with the transaction

Example Claim Cancel

// to initiate a cancel of a completed healthpoint claim with two claim items totaling $250
iclient.cancelHealthPointClaim({providerId: "2147661H", serviceType: "D", claimItemsCount: "2", totalClaimAmount: "25000", refTag: "0960001", claimItems: [
        {
            "claimAmount": "10000",
            "serviceCode": "00001",
            "description": "SKULL XRAY",
            "serviceReference": "01",
            "patientId": "02",
            "serviceDate": "20131010"
        },
        {
            "claimAmount": "15000",
            "serviceCode": "00001",
            "description": "SKULL XRAY",
            "serviceReference": "01",
            "patientId": "02",
            "serviceDate": "20140508"
        }
    ]}, {
   transactionCompleteCallback: yourPosCode.handleComplete,
   statusMessageCallback: yourPosCode.handleComplete,
   questionCallback: yourPosCode.questionAsked
 });

Testing and Demo

Use the Tyro non-production integration environment and development terminals to test HealthPoint integrations. A set of test health fund cards can be issued by Tyro - contact your partnerships manager for details.

The following patient and provider details can be used for tests:

Patient IDs on Card:

  • 00 John Citizen
  • 01 Judy Citizen
  • 02 Jack Citizen

Provider details:

NameProvider NumberService Type
Katy Cobrin2159081WP
Leonore Marsh1455813FP

HealthPoint Claiming Demo

Demo - JS Fiddle

Please don't click on the Save button if you make any changes in the JS Fiddle sample app. Instead, please press run if you have made any changes. If you click save, it may break sample functionality.