Page tree

Background Information

The Financial Interactions diagram on https://www.hl7.org/fhir/financial-module.html depicts the interaction between the provider and payer related to claim submission and claim payment after the services have been rendered. There are other significant aspects to Providers Administrative workflows including Patient Check-in, and Billing. (I will exclude Scheduling appointments for now as it does not relate to payment).

 

Other specialty related use cases:

 

  1. Medicine refill - save payment method and then charge it later - automated payment collection
  2. Telemedicine - eCommerce
  3. Long term care - recurring billing
  4. Urgent care - there is no appointment, walk-in
  5. Pathology - the sample is collected the doctor and sent to the pathologist - patient billing challenges
  6. Primary care - consumer tends to have a wallet
  7. Durable Medical Equipment - equipment rental, rental agreement
  8. Diagnostic Lab - all of the tests aren’t known upfront - automated payment collection
  9. Surgery - they typically want to collect a portion upfront and the remainder later, scheduled
  10. Health Systems - tend to have multiple departments that may run on separate systems (One bill)
  11. Payers - collecting premiums from employers or members (individual market)
  12. Orthodontic, Physical therapy - episodic - bill after 10 visits - spans over weeks or months,
  13. Pharmacy

 

 

User experience

 

  1. Self Service patient portal
  2. Kiosk (self service check-in)
  3. IVR
  4. Back office
  5. Front office

 

Consumer initiated payments vs Staff initiated payments vs automated

Claim Submission & Payment

 

 

 

 

 

Patient Check-in

Patients check-in before they receive medical services.

 

There are several use cases:

 

  1. Walk-in check-in via paper, kiosk, personal mobile device
  2. Appointment check-in via paper, kiosk, personal mobile device

 

The check-in flow can be built into a Practice Management System or be handled by a 3rd party (i.e. InstaMed Engage).

 

Patient check-in workflows typically contain the following steps:

 

  1. Enter/Edit Patient and Billing Information (demographics, guarantor, billing address, etc)
  2. Enter/Edit Insurance Plan Information (possibly scan plastic insurance card)
  3. Perform Eligibility Inquiry
  4. Pay Copay
  5. Pay Outstanding Balance (optional)
  6. Enroll for Automated Payment (optional) - used to collect patient responsibility after claim submission and payment to avoid having to send a bill
  7. Complete Health Questionnaire (reason for visit, medical history, etc)

 

 

 

 

 

 

 

 

 

 

Automated Payment Collection / Refunds

If the patient has enrolled in automated payment collection, the provider will typically send a notification to the patient of an upcoming payment and then collect the payment. (retry logic)

 

 

If the Automated Payment Collection is facilitated through a 3rd party, the following flow is used:

 

 

Credit Card Chargebacks / Returns (Check)

Financial institution initiates

Refunds

Provider initiated

Voids

Provider initiated or consumer initiated

Patient Billing

After insurance claim(s) has/have been submitted, adjudicated, and paid by the primary, secondary, tertiary, etc health insurance plans, providers will bill the patient.

 

The Patient Billing flow is described in:

 

https://docs.google.com/document/d/1oQodRRWiNGNIZZWZl3rI_o9eh1cXNcH5WmwUqHPG-V0/edit#heading=h.kri1mr8e7g5o

 

Patient Healthcare Bill Pay

After the patient receives a statement, he/she will pay it using one of the following mechanisms:

 

  1. Mail a check or credit card details with the statement tear-off
  2. Call the billing office and pay over the phone
  3. Call an IVR system
  4. Pay their outstanding balance in person
  5. Pay via online bill pay (provider portal, payer portal, all provider portal)

 

Ideally, the patient would be able to pay all of his bills using a single, electronic, streamlined workflow.

 

 

The Account Lookup can be performed using statement data which may be updated on a frequency or be based on the data from the system of record.

 

The Patient will then make a payment to the provider.

 

Note that the Patient may also have a dispute about the bill and may need to reach out to his plan or provider.

Payment Plan

The provider may offer patients to pay large or recurring balances via payment plans.

 

In this case, there is typically a payment plan setup and then recurring process send notifications of upcoming payments and process the payments.

 

It is important that the provider record that a payment plan has been setup so that he/she doesn’t think that the patient is delinquent and send the bill to collections.

 

[1]

 

[2]

 

[3]

Data Model

Account Lookup

Request

The input fields for the Account Lookup can vary but typically are:

 

  1. Provider ID (may be implied)
  2. Account Number
  3. Birth Date
  4. Zip Code

Response

The response fields can include :

 

  1. Amount Due
  2. Statement pdf
  3. Statement data (see https://docs.google.com/document/d/1oQodRRWiNGNIZZWZl3rI_o9eh1cXNcH5WmwUqHPG-V0/edit#heading=h.kri1mr8e7g5o )

 

Payment

Response

 

  1. IsCopay

{

  "ResponseDateTime": "12/14/2017 11:58:06 PM",

  "PaymentTransactionID": "c1ed2480fe4847eca58547eeb073b7a6",

  "TransactionAction": "Sale",

  "IsMultiAR": "false",

  "TransactionType": "CreditCard",

  "SaveCardOnFile": "false",

  "CardHolderFirstName": null,

  "CardHolderLastName": null,

  "CardHolderName": null,

  "CardLastFourDigits": "************1111",

  "CardType": "VISA",

  "ExpDate": "12/26",

  "AuthorizationCode": "9B5A7F",

  "RoutingNumber": null,

  "AccountNumberLastFourDigits": null,

  "CheckNumber": null,

  "CheckingAccountHolderFirstName": null,

  "CheckingAccountHolderLastName": null,

  "DriversLicense": null,

  "CheckingAccountType": null,

  "CheckState": null,

  "SaveBankAccountOnFile": null,

  "ReasonCode": null,

  "ReasonCodeDescription": null,

  "AddressVerificationResponseCode": null,

  "AddressVerificationResponseDescription": null,

  "CardVerificationResponseCode": null,

  "CardVerificationResponseDescription": null,

  "ResponseCode": "000",

  "ResponseMessage": "APPROVAL",

  "CurrentTransactionStatusCode": "C",

  "OriginalTransactionStatusCode": "C",

  "CurrentTransactionStatusDescription": "Approved",

  "OriginalTransactionStatusDescription": "Approved",

  "AuthorizationText": "I AGREE TO PAY THE ABOVE AMOUNT ACCORDING TO MY CARD HOLDER AGREEMENT.",

  "TransactionServiceFee": null,

  "FreeFormTextResponse": null,

  "MarketSegment": null,

  "HasCheckImage": null,

  "InstallmentSequenceNumber": null,

  "InstallmentCount": null,

  "LineItemNumber": null,

  "ReturnCheckFee": null,

  "EMVApplicationIdentifier": null,

  "EMVTerminalVerificationResults": null,

  "EMVIssuerApplicationData": null,

  "EMVTransactionStatusInformation": null,

  "EMVApplicationResponseCode": null,

  "RequestAmount": "1.00",

  "Amount": "1.00",

  "IsPartiallyApproved": "false",

  "PartialApprovalAmount": null,

  "Outlet": "JSONPOSTING-1-1",

  "OutletDescription": null,

  "Alias": null,

  "PatientID": null,

  "PatientMedicalRecordNumber": null,

  "TransactionCode": null,

  "TransactionDescription": null,

  "PatientFirstName": null,

  "PatientLastName": null,

  "PatientMiddleName": null,

  "PatientBirthDate": null,

  "PatientServiceBeginDate": null,

  "PatientServiceEndDate": null,

  "PatientAddress1": null,

  "PatientAddress2": null,

  "PatientCity": null,

  "PatientState": null,

  "PatientZip": null,

  "PatientCountry": "US",

  "PatientPhoneNumber": null,

  "GuarantorID": null,

  "GuarantorFirstName": null,

  "GuarantorLastName": null,

  "AccountHolderEmail": null,

  "AdditionalCode1": null,

  "AdditionalCode1Description": null,

  "AdditionalCode2": null,

  "AdditionalCode2Description": null,

  "AdditionalCode3": null,

  "AdditionalCode3Description": null,

  "AdditionalCode4": null,

  "AdditionalCode4Description": null,

  "AdditionalCode5": null,

  "AdditionalCode5Description": null,

  "AdditionalCode6": null,

  "AdditionalCode6Description": null,

  "AdditionalInfo1": null,

  "AdditionalInfo2": null,

  "AdditionalInfo3": null,

  "AdditionalInfo4": null,

  "AdditionalInfo5": null,

  "AdditionalInfo6": null,

  "EstimatedAmount": null,

  "SaveOnFileTransactionID": null,

  "AccountHolderAddress1": null,

  "AccountHolderAddress2": null,

  "AccountHolderCity": null,

  "AccountHolderState": null,

  "AccountHolderZip": null,

  "AccountHolderCountry": null,

  "AccountHolderPhoneNumber": null,

  "EstimateID": null,

  "PaymentPlanID": null,

  "StatementID": null,

  "CardInputMode": null,

  "CardPresentStatus": "PresentManualKey",

  "WorkflowStatus": "Complete",

  "SingleSignOnToken": null,

  "MerchantID": "JSONPOSTING",

  "StoreID": "1",

  "TerminalID": "1",

  "UserID": "user@account",

  "OriginalTransactionID": "c1ed2480fe4847eca58547eeb073b7a6"

}

 

Payment Plan

Payment Plans may include an initial payment.

 

Response

{

  "PaymentPlanTransactionType" : "CreditCard" ,

  "PaymentPlanType" : "I" ,

  "PaymentPlanStatus" : "Active" ,

  "StartDate" : "12/15/2017 12:00:00 AM" ,

  "EndDate" : "2/15/2018 12:00:00 AM" ,

  "Frequency" : "M" ,

  "TotalAmountDue" : "60.00" ,

  "PaymentAmount" : "20.00" ,

  "TotalPaidToDate" : "0.00" ,

  "TotalBalanceRemaining" : "60.00" ,

  "InitialPaymentAmount" : null ,

  "NumberOfPayments" : "3" ,

  "NumberOfPaymentsRemaining" : "3" ,

  "NumberOfPaymentsToDate" : "0" ,

  "NumberOfCheckPaymentsToDate" : "0" ,

  "NumberOfCreditCardPaymentsToDate" : "0" ,

  "CreatedDate" : "12/14/2017 5:50:21 PM" ,

  "CreatedBy" : "user@account" ,

  "LastUpdatedDate" : null ,

  "LastUpdatedBy" : null ,

  "InitialPaymentMarketSegment" : "MOTO" ,

  "PreviousTransactionDate" : null ,

  "PreviousTransactionAmount" : null ,

  "NextTransactionDate" : "12/15/2017 2:00:00 AM" ,

  "NextTransactionAmount" : "20.00" ,

  "NextTransactionStatus" : null ,

  "PaymentMethodID" : null ,

  "AccountHolderEmailAddress" : null ,

  "CardHolderFirstName" : null ,

  "CardHolderLastName" : null ,

  "CardHolderName" : null ,

  "CardLastFourDigits" : "************1111" ,

  "CardType" : "VISA" ,

  "CardExpirationDate" : "12/2026" ,

  "RoutingNumber" : null ,

  "AccountNumberLastFourDigits" : null ,

  "CheckNumber" : null ,

  "CheckingAccountHolderFirstName" : null ,

  "CheckingAccountHolderLastName" : null ,

  "DriversLicense" : null ,

  "CheckingAccountType" : null ,

  "CheckState" : null ,

  "HasCheckImage" : "false" ,

  "PatientAutomaticPaymentEnrolled" : null ,

  "PatientAutomaticPaymentLimit" : null ,

  "PatientAutomacPaymentPlanID" : null ,

  "ScheduledTransactions" : [

    {

      "Amount" : "20.00" ,

      "PaymentDate" : "12/15/2017" ,

      "Status" : "I" ,

      "StatusDescription" : null

    }

  ],

  "RequestAmount" : "0.00" ,

  "Amount" : "0.00" ,

  "IsPartiallyApproved" : "false" ,

  "PartialApprovalAmount" : null ,

  "Outlet" : "0269000000049706-1-2" ,

  "OutletDescription" : null ,

  "Alias" : null ,

  "PatientID" : null ,

  "PatientMedicalRecordNumber" : null ,

  "TransactionCode" : null ,

  "TransactionDescription" : null ,

  "PatientFirstName" : null ,

  "PatientLastName" : null ,

  "PatientMiddleName" : null ,

  "PatientBirthDate" : null ,

  "PatientServiceBeginDate" : null ,

  "PatientServiceEndDate" : null ,

  "PatientAddress1" : null ,

  "PatientAddress2" : null ,

  "PatientCity" : null ,

  "PatientState" : null ,

  "PatientZip" : null ,

  "PatientCountry" : "US" ,

  "PatientPhoneNumber" : null ,

  "GuarantorID" : null ,

  "GuarantorFirstName" : null ,

  "GuarantorLastName" : null ,

  "AccountHolderEmail" : null ,

  "AdditionalCode1" : null ,

  "AdditionalCode1Description" : null ,

  "AdditionalCode2" : null ,

  "AdditionalCode2Description" : null ,

  "AdditionalCode3" : null ,

  "AdditionalCode3Description" : null ,

  "AdditionalCode4" : null ,

  "AdditionalCode4Description" : null ,

  "AdditionalCode5" : null ,

  "AdditionalCode5Description" : null ,

  "AdditionalCode6" : null ,

  "AdditionalCode6Description" : null ,

  "AdditionalInfo1" : null ,

  "AdditionalInfo2" : null ,

  "AdditionalInfo3" : null ,

  "AdditionalInfo4" : null ,

  "AdditionalInfo5" : null ,

  "AdditionalInfo6" : null ,

  "EstimatedAmount" : null ,

  "SaveOnFileTransactionID" : null ,

  "AccountHolderAddress1" : null ,

  "AccountHolderAddress2" : null ,

  "AccountHolderCity" : null ,

  "AccountHolderState" : null ,

  "AccountHolderZip" : null ,

  "AccountHolderCountry" : null ,

  "AccountHolderPhoneNumber" : null ,

  "EstimateID" : null ,

  "PaymentPlanID" : "9bbb3077fb5a401996506ac9cf3386ed" ,

  "StatementID" : null ,

  "CardInputMode" : "Keyed" ,

  "CardPresentStatus" : null ,

  "WorkflowStatus" : "Active" ,

  "SingleSignOnToken" : null ,

  "MerchantID" : "0269000000049706" ,

  "StoreID" : "1" ,

  "TerminalID" : "2" ,

  "UserID" : "user@account" ,

  "OriginalTransactionID" : "8ba82dff3583457b86524315290f36d4"

}

 


[1] distinguish between provider vs patient notifications

[2] distinguish between provider vs patient notifications

[3] distinguish between provider vs patient notifications