Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

Perspecta and BPM+

 

Background

As part of the past two HIMMS conference in conjunction with the VHA , Perspecta implemented as part of their Health Concourse Product exemplar implementation of BPM+ technologies. 

 

Models (PIMS)

Diabetes Model

<< insert description >>

CKD Model

<< insert description >>

 

Operationalization

 

The initial models attempted to follow the BPM+ methodology resulting in a platform/clinically independent model.  The operationalization process was to modify and extend the models to execute within the Health Concourse environment.

 

Information Integration for Blood Pressure

 

Process Data Model Integration "Patterns" (draft)

 

 

For the Diabetes, we followed the Black Box Integration Pattern for Process Data for operationalizing the information requirements. 

 Step one

The initial model leveraged a BPM data item structure which was not natively supported by Redhat.  Redhat leverages java structures for process data definitions although future versions were supposed to support data items. 

 The resulting POJO was a Patient based container with the elements needed to complete the processing-for simplicity the following is a snippet

      

/*
* Patient is more of a container concept then an actual domain patient
* in fact the name is probable more confusing in some ways
* /
public class Patient  {
        public java.lang.String patientID;
        public  java.lang.String patientName;
        public java.lang.String patientGender;
        public  java.lang.String patientDOB;
        public java.util.List<CodedElement> conditions = new ArrayList<CodedElement>();
        public java.lang.String comorbidityStatus = "ABSENT";
        public java.lang.String microvascularComplications  = "ABSENT";
        public java.util.List<CodedElement> medications = new ArrayList<CodedElement>();;
        public Integer bloodSugar;
        public double hbA1cRangeHigh;
        public double hbA1cRangeLow;
        public java.lang.String hba1cStatus;
        public double latestHBA1C;
        public java.lang.Boolean severeStatus;
    }

  

Step 2 –Transformation

The next step is to provide transformation services from native content to the process information.  In the case of Health Concourse , the native content is FHIR.  We leveraged the MDMI services to provide a transformation from FHIR to pojo

The process query resulted in the following text

<?xml version="1.0" encoding="UTF-8"?>
<Bundle>
   <entry>
      <resource>
         <Observation xmlns="http://hl7.org/fhir">
            <id value="M5883308" />
            <meta>
               <versionId value="1-5883307" />
               <lastUpdated value="2018-12-07T15:42:54" />
               <tag>
                  <code value="Cerner" />
                  <display value="Cerner" />
               </tag>
               <tag>
                  <system value="http://hl7.org/fhir/us/core/StructureDefinition/us-core-observation" />
                  <code value="NA" />
                  <display value="Not Applicable" />
               </tag>
               <tag>
                  <system value="http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation" />
                  <code value="N" />
                  <display value="Not Compliant" />
               </tag>
               <tag>
                  <system value="http://hl7.org/fhir/us/hedis/StructureDefinition/hedis-observation" />
                  <code value="N" />
                  <display value="Not Compliant" />
               </tag>
            </meta>
            <text>
               <status value="generated" />
            </text>
            <status value="final" />
            <category>
               <coding>
                  <system value="http://hl7.org/fhir/observation-category" />
                  <code value="laboratory" />
                  <display value="Laboratory" />
               </coding>
               <text value="Laboratory" />
            </category>
            <code>
               <coding>
                  <system value="http://loinc.org" />
                  <code value="2345-7" />
               </coding>
               <text value="Glucose Lvl" />
            </code>
            <context>
               <reference value="Encounter/2787906" />
            </context>
            <effectiveDateTime value="2016-02-08T15:24:00.000Z" />
            <issued value="2016-02-08T16:14:07.000Z" />
            <valueQuantity>
               <value value="76" />
               <unit value="mg/dL" />
               <system value="http://unitsofmeasure.org" />
               <code value="mg/dL" />
            </valueQuantity>
            <interpretation>
               <coding>
                  <system value="http://hl7.org/fhir/v2/0078" />
                  <code value="N" />
                  <display value="Normal" />
               </coding>
            </interpretation>
            <referenceRange>
               <low>
                  <value value="30" />
                  <unit value="mg/dL" />
                  <system value="http://unitsofmeasure.org" />
                  <code value="mg/dL" />
               </low>
               <high>
                  <value value="90" />
                  <unit value="mg/dL" />
                  <system value="http://unitsofmeasure.org" />
                  <code value="mg/dL" />
               </high>
               <text value="30-90 mg/dL" />
            </referenceRange>
         </Observation>
      </resource>
   </entry>
</Bundle> 

The result after transformation is

{
  "bloodSugar": 76.0
}

which is the parsed as base JSON processing available in redhat services.  

Below is the GUI representation of the process running

<< insert links to artifacts (running ?)  >>

Information Integration for CKD

 

Under the health concourse platform was developed a Knowledge Service, which by design hosted several types of knowledge services.  In the case of Hypertension, the knowledge services leveraged were a set of CDS hooks implementations returning specific status on the patient. 

An example of one of these statuses was “Does patient have an urgent or emergent condition?”

The possible responses were yes/no/need more information


 

The following is the example response where  the OperationOutcome in this case the response was false.

{
	"resourceType": "GuidanceResponse""GuidanceResponse",
	"id": "HC-000-e8cc6b73-cdb3-4e21-a464-cc01b7c8fbe4",
	"contained": [
		{
			"resourceType": "OperationOutcome",
			"id": "1",
			"issue": [
				{
					"severity": "information",
					"code": "informational",
					"location": [
						"Condition/ORG-1003-hc-cond-izzy-hf-1/_history/1"
					]
				}
			]
		},
		{
			"resourceType": "Parameters",
			"id": "2",
			"parameter": [
				{
					"name": "transformed-result",
					"valueBoolean": false
				}
			]
		},
		{
			"resourceType": "RequestGroup",
			"id": "3",
			"status": "completed",
			"intent": "proposal"
		}
	],
	"extension": [
		{
			"url": "http://perspecta.com/healthconcourse/guidance-module-canonical",
			"valueString": "https://fhir-admin.demo-staging2.openplatform.healthcare/Library/ORG-Motive-HIMSSCKDIdUrgentCareDR2|1"
		},
		{
			"url": "http://perspecta.com/fhir/km/StructureDefinition/guidance-moduleset",
			"valueString": "patient-id:HC-000-1045module-id:[ORG-Motive-HIMSSCKDIdUrgentCareDR2]"
		}
	],
	"status": "success",
	"subject": {
		"id": "HC-000-1045",
		"reference": "Patient/HC-000-1045"
	},
	"occurrenceDateTime": "2020-08-18T21:26:11+00:00",
	"reasonCodeableConcept": {
		"text": "Stale Guidance encountered when checking for stale period. Generated at 2020-08-18T21:26:06+00:00."
	},
	"evaluationMessage": [
		{
			"reference": "#1"
		}
	],
	"outputParameters": {
		"reference": "#2"
	},
	"result": {
		"reference": "#3"
	}
}

 

 

 

 

 

 

 

 

  • No labels