/
Patient Identification

Patient Identification

The Patient Identification module adds a configurable flow that verifies a patient’s identity by having them enter information and checking it against their patient record. It also has one time passcode functionality.

If enabling One Time Passcode verification, version 4.2 or higher is required and Redis caching must be enabled.

Dependencies

The Patient Identification module is dependent on the following modules:

Integration

The Patient Identification module exposes the flow ID of its main flow as:

  • patientIdentification.flows.patientIdentification.id

This can be used for example when setting the launch flow ID when rendering a chatbot page:

const { chatbot, patientIdentification } = flow.get("project"); const customData = { launchFlowId: patientIdentification.flows.patientIdentification.id, token: msg.req.params.token }; chatbot.render(msg, customData, "outreach");

When the patient either succeeds or fails to verify their identity, the appropriate handler is called. These handles can be overridden to change to an appropriate flow in each case:

const SUCCESS_FLOW_ID = "..."; const FAILURE_FLOW_ID = "..."; const { patientIdentification, flowManager } = flow.get("project"); const success = (msg, patient) => { // Patient data is passed if useful node.warn(patient); flowManager.changeFlow(msg, SUCCESS_FLOW_ID); }; patientIdentification.registerHandler("success", success); const failure = (msg, patient) => { // Patient data is passed if useful node.warn(patient); flowManager.changeFlow(msg, FAILURE_FLOW_ID); }; patientIdentification.registerHandler("failure", failure);

Configuration

The Patient Identification module will read and respect the values shown below. To add or edit configuration values follow this path: Experience Manager > Create tab > Content component > Settings item > patientIdentification section.

  • verify (object): Container for verification toggle settings

    • dob (boolean): Whether or not to verify the patient’s date of birth

    • zipCode (boolean): Whether or not to verify the patient’s zip code

    • name (boolean): Whether or not to verify the patient’s name

    • otp (boolean): Whether or not to have the patient enter a one time passcode

  • otpChannelSelection (boolean): Whether or not to allow the user to select their preferred communication channel to receive the one time passcode, if they have both an email and phone number in their record.

  • patientDobFormat (string): If the format of date of birth in the patient record is non-standard, specify the format (as a moment.js format string) in this setting.

  • content (object): Container for content override settings

    • dob (object): A container for settings for date of birth verification:

      • prompt (string): A custom date of birth prompt message

      • retry (string): A custom date of birth retry prompt message

      • incorrect (string): A custom message when date of birth verification has failed

    • zipCode (object): A container for settings for zip code verification:

      • prompt (string): A custom zip code prompt message

      • invalid (string): A custom invalid zip code message

      • retry (string): A custom zip code retry prompt message

      • incorrect (string): A custom message when zip code verification has failed

    • name (object): A container for settings for name verification:

      • prompt (string): A custom name verification prompt message

      • incorrect (string): A custom message when name verification has failed

    • otp (object): A container for settings for one time passcode verification:

      • channelPrompt (string): A custom prompt for one time passcode channel selection

      • noChannels (string): A custom prompt for when no one time passcode channel is available

      • prompt (string): A custom one time passcode prompt message

      • retry (string): A custom one time passcode retry prompt message

      • incorrect (string): A custom message when one time passcode verification has failed

The following tokens can be used in the above content override settings:

  • {{patient.firstName}}

  • {{patient.lastName}}

  • {{otpChannel}}

An example of JSON for the above settings:

"patientIdentification": { "verify": { "dob": true, "zipCode": true, "name": true, "otp": true }, "otpChannelSelection": true, "patientDobFormat": "MM/DD/YYYY", "content": { "dob": { "prompt": "Custom DOB verification prompt.", "retry": "Custom DOB retry prompt.", "incorrect": "Custom DOB incorrect message." }, "zipCode": { "prompt": "Custom zip verification prompt.", "invalid": "Custom zip invalid prompt.", "retry": "Custom zip retry prompt.", "incorrect": "Custom zip incorrect message." }, "name": { "prompt": "Custom name verification prompt ({{patient.firstName}} {{patient.lastName}})", "incorrect": "Custom name incorrect message." }, "otp": { "channelPrompt": "Custom OTP channel prompt message.", "noChannels": "Custom OTP no channels available message.", "prompt": "Custom OTP prompt message ({{otpChannel}}).", "retry": "Custom OTP retry prompt.", "incorrect": "Custom OTP incorrect message." } } }

Handlers

dobVerificationFailed

This handler is called when a patient fails to verify their date of birth twice.

Parameters:

Returns: Nothing.

The default implementation of this handler does nothing.

zipCodeVerificationFailed

This handler is called when a patient fails to verify their zip code twice.

Parameters:

Returns: Nothing.

The default implementation of this handler does nothing.

nameVerificationFailed

This handler is called when a patient indicates they are not the named patient.

Parameters:

Returns: Nothing.

The default implementation of this handler does nothing.

otpVerificationFailed

This handler is called when a patient enters an incorrect one time passcode three times.

Parameters:

Returns: Nothing.

The default implementation of this handler does nothing.

success

This handler is called when a patient has successfully verified their identity.

Parameters:

Returns: Nothing.

The default implementation of this handler does nothing but call flowManager.handle(msg)

This handler is expected to handle the message in some way, for example by calling flowManager.changeFlow(msg, flowId)

failure

This handler is called when a patient fails to verify their identity.

Parameters:

Returns: Nothing.

The default implementation of this handler does nothing but call flowManager.handle(msg)

This handler is expected to handle the message in some way, for example by calling flowManager.changeFlow(msg, flowId)

Overriding Handlers

Any of the above handlers can be overridden with a custom version by using the registerHandler method exposed by the Patient Identification module. For example:

Your custom handler can accept any of the documented parameters and there is an expectation that it will return an appropriate value for handlers expected to return something.

 

Implementation Documentation

To help with customer specific content updates: https://aikeras.sharepoint.com/:w:/r/sites/Product-Team/_layouts/15/Doc.aspx?sourcedoc=%7B0BCE78BC-453B-4799-B3B1-58328D9D1AED%7D&file=Patient%20Identification%20Module%20-%20How%20to%20Configure%20Content%20within%20Settings.docx&action=default&mobileredirect=true

Related content

3.3.6 Changing Flows
3.3.6 Changing Flows
More like this
3.3.2 Editing Flows
3.3.2 Editing Flows
More like this