@medipass/transaction-sdk

1.5.7 • Public • Published

Medipass Transaction SDK

The Medipass Transaction SDK is a client-side JavaScript library which allows you to interact with Medipass from your web interface.

Table of Contents

Install

yarn add @medipass/transaction-sdk

or NPM:

npm install @medipass/transaction-sdk

Basic Usage

import medipassTransactionSDK from '@medipass/transaction-sdk';
// or: const medipassTransactionSDK = require('@medipass/transaction-sdk');

medipassTransactionSDK.setConfig({
  env: 'stg',
  apiKey: 'xyz',
  appId: 'my-app',
  appVersion: '1.0.0'
});

medipassTransactionSDK.renderCreateTransaction(
  {},
  {
    onSuccess: data => {
      // handle success
    },
    onError: data => {
      // handle success
    },
    onCancel: () => {
      // handle cancel
    }
  }
);

With a <script> tag

<html>
  <head>
    <script src="https://unpkg.com/@medipass/transaction-sdk/umd/@medipass/transaction-sdk.min.js"></script>
  </head>
  <body>
    <script>
      MedipassTransactionSDK.setConfig({
        env: 'stg',
        apiKey: 'xyz',
        appId: 'my-app',
        appVersion: '1.0.0'
      });

      MedipassTransactionSDK.renderCreateTransaction(
        {},
        {
          onSuccess: data => {
            // handle success
          },
          onError: data => {
            // handle success
          },
          onCancel: () => {
            // handle cancel
          }
        }
      );
    </script>
  </body>
</html>

API

sdk.setConfig(config)

config

Object | required

{
  env: 'stg' | 'prod',
  apiKey: string,
  appId: string,
  appVersion: string
}

sdk.renderCreateTransaction(payload, options)

payload

Object | required

With the payload parameter, you are able to pre-populate SDK fields. All attributes in the payload are optional (however, attributes marked with a ! are required) - so you can pre-populate what you wish.

{
  /* ====== START: GENERAL PRE-POPULATION ATTRIBUTES ====== */
  funder: "medicare" | "hicaps" | "patient-funded" | "ghs",

  providerNumber: string,

  invoiceReference: string,

  memberId: string, // Medipass Member ID
  // OR
  patient: {
    firstName: string,
    lastName: string,
    mobile: string,
    dob: string, // "YYYY-MM-DD" format
    accountNumber: string, // Medicare card number / PHI card number
    reference: string // Medicare card reference / PHI card rank
  },

  claimableItems: [{
    itemCode!: string,
    serviceDateString: string, // "YYYY-MM-DD" format
    price: string, // E.g. "$40.00"
    quantity: number,
    isTaxable: boolean
  }],

  nonClaimableItems: [{
    description!: string,
    price: string
  }],

  webhooks: [{
    url!: string,
    event!:
      'memberApprovedInvoice' |
      'memberRejectedInvoice' |
      'medipassAutoCancelledInvoice' |
      'healthFundApprovedInvoice' |
      'healthFundRejectedInvoice',
    method!: 'GET' | 'PUT' | 'POST' | 'DELETE',
    headers: { [key: string]: string }
  }],
  /* ====== END: GENERAL PRE-POPULATION ATTRIBUTES ====== */

  /* ====== START: FUNDER-SPECIFIC PRE-POPULATION ATTRIBUTES ====== */
  funderData: {
    hicaps: {
      patient: {
        healthFundCode: string
      },
      transactionMethod: 'phone' | 'terminal'
    },
    medicare: {
      isBulkBilled: boolean,

      claimantMemberId: string, // Medipass Member ID
      // OR
      claimant: {
        firstName: string,
        lastName: string,
        mobile: string,
        dob: string, // "YYYY-MM-DD" format
        accountNumber: string, // Medicare card number / PHI card number
        reference: string // Medicare card reference / PHI card rank
      },

      referral: {
        providerNumber: string,
        providerName: string,
        issueDateString: string,
        period: 'standard' | 'non-standard' | 'indefinite'
      }
    },
    ghs: {
      isEmergencyTreatment: boolean,
      includesHospitalInpatientItems: boolean,
      failedToAttendClaim: boolean,
      dan: string,
      referringJointHealthCentre: string,
      referringMedicalOfficer: string,
      noDan: boolean,
      noDanReason: string,
      noEpId: boolean,
      noEpIdReason: string
    }
  }
  /* ====== END: FUNDER-SPECIFIC PRE-POPULATION ATTRIBUTES ====== */
}

options

Object

{
  onSuccess: function(transaction) {},  // Invoked when the transaction has submitted successfully.
  onError: function(error) {},          // Invoked when the transaction submission failed.
  onCancel: function() {},              // Invoked when the 'Cancel' button is clicked.

  // Optional config overrides - if not set, will use global config from sdk.setConfig().
  env: 'stg' | 'prod',
  apiKey: string,
  appId: string,
  appVersion: string
}

sdk.renderViewTransaction(query, options)

query

Object | required

{
  // required
  transactionId: string,

  // Optional override Business ID - by default, it uses business attached to API Key.
  businessId: string
}

options

Object

{
  // Optional config overrides - if not set, will use global config from sdk.setConfig().
  env: 'stg' | 'prod',
  apiKey: string,
  appId: string,
  appVersion: string
}

sdk.members.discoverMember(options)

options

Object | required

Discover a member using query parameters.

The response will be the matching member's internal ID. If a custodians array field is also present, the matching member is a dependant. Each custodian object contains the custodian's member ID, first name and last name. The custodian is important when creating an invoice for a dependant because the claim/payment authorisation can only be performed by a custodian. A dependant inherits their custodians' email and mobile, and therefore will be included in such a search.

Email and mobile are the primary search parameters. The order of search parameter priorities are as follows: email > mobile > dobString > lastName > firstName.

The following search sets are recommended:

  • { email }
  • { mobile, dobString }
  • { mobile, firstName, lastName }
  • { dobString, firstName, lastName }

The following query sets are not allowed:

  • { firstName }
  • { lastName }
  • { dobString }
  • { firstName, dobString }
  • { lastName, dobString }
{
  query: {
    email: string,
    mobile: string,
    dobString: string, // "YYYY-MM-DD"
    firstName: string,
    lastName: string
  }
}

Example

medipassTransactionSDK.members.discoverMember({ email: 'john@example.com' });

sdk.claimItems.getBusinessClaimItems(options)

options

Object | required

Get a list of claim items. A claim item describes a service that a patient can claim against.

{
  query: {
    page: number,
    limit: number,
    searchText: string
    itemCode: string,
    funderId: string,
    modalityId: string,
    serviceDateString: string,
    isBulkBilled: string,
    isInHospital: string
  },

  // Optional override Business ID - by default, it uses business attached to API Key.
  businessId: string
}

Example

medipassTransactionSDK.claimItems.getBusinessClaimItems({
  query: {
    page: 1,
    limit: 10,
    searchText: 'Awesome Item'
  }
});

sdk.transactions.getBusinessTransaction(options)

options

Object | required

Get transaction details for a business.

{
  // Required
  transactionId: string,

  // Optional override Business ID - by default, it uses business attached to API Key.
  businessId: string
}

Example

medipassTransactionSDK.transactions.getBusinessTransaction({ transactionId: '123' });

sdk.transactions.downloadPDF(options)

options

Object | required

Downloads the transaction summary in PDF format. When this method is invoked, it will automatically download the PDF on the client.

Note: this method is only supported for Medicare transactions and downloads the Medicare statement.

{
  // Required
  transactionId: string,

  // Optional override Business ID - by default, it uses business attached to API Key.
  businessId: string
}

Example

medipassTransactionSDK.transactions.downloadPDF({ transactionId: '123' });

sdk.transactions.getPaymentReport(options)

options

Object | required

Fetches the payment report for a given transaction. Response is in JSON format.

Note: this method is only supported for Medicare transactions.

{
  // Required
  transactionId: string,

  query: {
    // When true, the payment report is retrieved in real time and the cache is updated if successful.
    forceRefresh: boolean
  },

  // Optional override Business ID - by default, it uses business attached to API Key.
  businessId: string
}

Response

{
  requestedDate: string,
  reportResult: number,
  sessionId: number,
  paymentRunDateString: string,
  paymentRunNumber: string,
  amountBenefitPaidString: string,
  bankAccount: {
    accountNumber: string,
    bsb: string,
    accountName: string
  },
  payments: [
    {
      claimId: string,
      claimDateString: string,
      amountChargedString: string,
      amountBenefitPaidString: string,
      amountDepositedString: string
    }
  ]
}

Example

medipassTransactionSDK.transactions.getPaymentReport({ transactionId: '123', query: { forceRefresh: true } });

sdk.transactions.getProcessingReport(options)

options

Object | required

Fetches the processing report for a given transaction. Response is in JSON format.

Note: this method is only supported for Medicare transactions.

{
  // Required
  transactionId: string,

  query: {
    // When true, the processing report is retrieved in real time and the cache is updated if successful.
    forceRefresh: boolean
  },

  // Optional override Business ID - by default, it uses business attached to API Key.
  businessId: string
}

Response

{
  requestedDate: string,
  reportResult: number,
  sessionId: number,
  amountChargedString: string,
  amountBenefitPaidString: string,
  providerNumber: string,
  claimItems: [
    {
      serviceDateString: string,
      itemCode: string,
      claimId: string,
      serviceId: string,
      amountBenefitString: string,
      gatewayCode: string,
      gatewayDescription: string,
      amountChargedString: string,
      healthFundAccount: {
        membershipNumber: string,
        cardRank: string
      },
      patient: {
        firstName: string,
        lastName: string
      },
      cardFlag: string,
      cardFlagDescription: string,
      numberOfPatientsSeen: string,
      voucherId: string
    }
  ]
}

Example

medipassTransactionSDK.transactions.getProcessingReport({ transactionId: '123', query: { forceRefresh: true } });

Examples

Examples can be found in the in the examples/ folder.

Browser support

The Medipass Transaction SDK supports all popular browsers, including Internet Explorer 11 and above. Unfortunately, support for Internet Exporer 10 and below is discontinued.

/@medipass/transaction-sdk/

    Package Sidebar

    Install

    npm i @medipass/transaction-sdk

    Weekly Downloads

    76

    Version

    1.5.7

    License

    none

    Unpacked Size

    5.51 MB

    Total Files

    26

    Last publish

    Collaborators

    • ridasattar92
    • malphine
    • eithan1231
    • stephaniepruna
    • medipassbot
    • joshuafsharp
    • joshpiper-medipass
    • rajeshcodes
    • jshsmth
    • kevinvu
    • williape
    • paulwcy
    • kazfukuda
    • richardlay
    • likquid
    • claudia13
    • zl4bv