Skip to content

Overview

The PHC SMART on FHIR app is integrated into an EHR, such as Cerner Millenium. It establishes a trusted, API-driven relationship between your PHC account and your EHR account and streamlines data ingestion. After you use the app to import data from the EHR into PHC, you can use the PHC suite of tools to examine and manipulate this dataset. PHC can also publish data out to the EHR when the EHR allows this.

Caution

Configuring EHR ingestion is a complex process. Please contact LifeOmic for assistance.

Access Control

A user needs to have the Ingest from EHR permission to complete this procedure. This permission is not included in any default access control policies. To add this permission, complete the Create an Access Control Policy procedure.

Use the SMART on FHIR App to Import Data

To use the SMART on FHIR app, you log into PHC and create an EHR configuration and include a JSON file. You only need to set up this EHR configuration once. Once the EHR configuration is done, you log into the EHR and navigate to the PHC SMART on FHIR app embedded in the EHR and kick off the ingestion. You would do the operation to kick off the ingestion anytime you wanted to download a new or updated dataset.

Configure an EHR in PHC

  1. From any page in PHC, click the PHC logo at the top of the page.
  2. From the home page, click the Account Info tile. Account
  3. Click the EHRs tab.
  4. Click Add to display the EHR Details dialog.
  5. For Status, choose Enabled.
  6. For EHR Name, enter a specific name.
  7. For EHR Type, pick a listed EHR ingestion type, such as Cerner.
  8. For API Base URL, obtain the URL endpoint to use for the ingestion of FHIR data from the EHR vendor. For example, https://fhir-ehr-code.cerner.com/dstu2/ec2458f2-1e24-41c8-b71b-0e701af7583d.
  9. For API Auth Type, choose from the listed options. Listed options are specific to the the EHR type.
  10. For API Key, obtain this credential from the EHR vendor. You may need to create credentials on their site.
  11. For API Secret, obtain this credential from the EHR vendor.
  12. For Ingestion Model, choose Asynchronous. Asynchronous allows ingestion in the background. This is normally the best option, since large data ingestions can take several hours. Use synchronous for small data ingestions. Synchronous pauses the system until the ingestion completes.
  13. For Delay (in Seconds) Between Records, enter 0.5.
  14. For the Additional Configuration, paste the JSON file supplied by LifeOmic. For more information about this file, see the Additional Configuration JSON Example below.
  15. Click Save. EHR Details

Additional Configuration JSON Example

The JSON configuration provides details to the EHR. These include:

  • authScope - This indicates the data that you care about. It lists the different data to pull down.
  • resourceType - Reiterates authScope with FHIR resource types.
  • fhirVersion - FHIR version supported for the EHR. 2 indicates DSTU-2. (PHC can also support version 4.)
  • publishable - Toggles the ability to send data up to the EHR. This flag enables the Publish button in the PHC UI.
  • publishCoding - The coding to use when writing resources back to the EHR.
  • rules - Various instructions on how to tweak the data, such as the default number of years of data to ingest or download filters.
{
    "authScope": "system/Binary.read system/Condition.read system/DiagnosticReport.read system/DocumentReference.read system/MedicationAdministration.read system/MedicationOrder.read system/MedicationStatement.read system/Observation.read system/Patient.read system/Procedure.read system/Encounter.read system/ProcedureRequest.read system/DocumentReference.write",
    "resourceTypes": [
        "Patient",
        "Condition",
        "Observation",
        "DocumentReference",
        "DiagnosticReport",
        "Procedure",
        "MedicationOrder",
        "MedicationAdministration",
        "MedicationStatement",
        "Encounter",
        "ProcedureRequest"
    ],
    "fhirVersion": 2,
    "publishable": true,
    "publishCoding": {
        "coding": [
            {
                "system": "https://fhir.cerner.com/e0580676-1eec-46da-9b06-83dd927e062a/codeSet/72",
                "code": "1939007620",
                "display": "OP-Hem/Onc Precision Genomics clinical note",
                "userSelected": true
            }
        ]
    },
    "rules": {
        "defaultNumberOfYearsToIngest": 1,
        "limitingFilters": [
            {
                "name": "Condition",
                "filters": []
            },
            {
                "name": "Encounter",
                "filters": []
            },
            {
                "name": "Observation",
                "filters": [
                    {
                        "field": "_lastUpdated",
                        "op": "ge",
                        "value": "@{lastIngestedDate}",
                        "valueFunctionType": "date"
                    },
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 100
                    }
                ]
            },
            {
                "name": "DocumentReference",
                "filters": [
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 250
                    }
                ]
            },
            {
                "name": "DiagnosticReport",
                "filters": [
                    {
                        "field": "date",
                        "op": "ge",
                        "value": "@{lastIngestedDate}",
                        "valueFunctionType": "datetime"
                    },
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 250
                    }
                ]
            },
            {
                "name": "Procedure",
                "filters": [
                    {
                        "field": "date",
                        "op": "ge",
                        "value": "@{lastIngestedDate}",
                        "valueFunctionType": "datetime"
                    }
                ]
            },
            {
                "name": "MedicationOrder",
                "filters": [
                    {
                        "field": "_lastUpdated",
                        "op": "ge",
                        "value": "@{lastIngestedDate}",
                        "valueFunctionType": "datetime"
                    },
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 250
                    }
                ]
            },
            {
                "name": "MedicationAdministration",
                "filters": [
                    {
                        "field": "effectivetime",
                        "op": "ge",
                        "value": "@{lastIngestedDate}",
                        "valueFunctionType": "date"
                    },
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 250
                    }
                ]
            },
            {
                "name": "MedicationStatement",
                "filters": [
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 250
                    }
                ]
            },
            {
                "name": "ProcedureRequest",
                "filters": [
                    {
                        "field": "_lastUpdated",
                        "op": "ge",
                        "value": "@{lastIngestedDate}",
                        "valueFunctionType": "datetime"
                    },
                    {
                        "field": "_count",
                        "op": "eq",
                        "value": 250
                    }
                ]
            }
        ]
    }
}

Import Patient Data from the EHR

Once you have configured EHR ingestion on PHC, you need to log into the EHR and navigate to the embedded PHC SMART on FHIR app to kick off the ingestion.

The ingestion process depends on establishing a trusted relationship between the EHR and PHC. Your PHC and EHR usernames can also be linked. LifeOmic can do this by configuring an alternate OIDC provider and saved logins under the Auth Clients section of PHC. For more information, see Auth Clients and Single Sign-on

Caution

Please contact LifeOmic to configure the EHR trusted relationship.

Note: This procedure is different for each EHR. This below steps are specific to Cerner Millenium.

Note: For more details on authentication with Cerner APIs, see the Cerner Authentication information.

  1. Open a browser window and launch and log into Cerner Powerchart.
    EHR Cerner
  2. Navigate to a patient and then navigate to the patient data.
  3. On the left side of the screen, click Menu to expand the menu and click Precision Health Cloud to launch the PHC SMART on FHIR app.

    Note: The first launch of the PHC SMART on FHIR app from the EHR requires you to enter your PHC credentials. Click the Save Credentials check box at the initial login to prevent subsequent logins from requiring credentials. EHR Cerner PHC 4. An import dialog appears with several stages. At the PHC Load stage, select a Project, select Cohorts, and click Continue.
    EHR Cerner PHC 5. At the Data Import Approval stage, check that the patient information is correct and click Accept to begin the import process. After the subject record imports, you are returned to the PHC SMART on FHIR home screen.

    The subject record is imported first and synchronously. The patient record includes identifying patient info, such as the patient's name and medical record number (MRN). The MRN from the EHR is retained as the MRN for PHC. This import completes quickly.

    The subject data is imported after the subject record. The subject data is the patient's clinical data and is imported asynchronously in the background. This can be a large quantity of data with a lengthy import process.

  4. To confirm a successful import, log into PHC and click the Subjects tab on the left of PHC and find the patient's name. Patients appear in Subjects after the subject record import. For more information, see Subjects.

Indicate a Genomics Test Order for a Patient

The SMART on FHIR app allows you to indicate that a genetic test has been ordered for a patient and to provide additional information on the test.

  1. On the PHC SMART on FHIR home screen, click the Add Genomics Order. EHR Genomics
  2. Under Sequence Type, choose the genomics test vendor and scroll down.
    EHR Genomics
  3. In the Reference Field, enter the case number or other information (optional).
  4. In the Reference Value, enter any vendor specific number or other information (optional).
  5. In the Biopsy Site, click the Add and select from a configured ontology, such as SNOMED CT, to specify the area of the body. If you do not have an ontology configured, see Ontologies to set one up.
  6. Click Submit. EHR Genomics

Last update: 2021-09-08