Worfklow Management Coalition book series has no new titles

September 25, 2013

Also, BPMN 2.0 is gaining an upper hand

So I would recommend this book instead

http://www.amazon.com/gp/product/B009VOETW6

‘Real-Life BPMN’ by Jakob Freund

 

Siemens (with their workflow engine) still among top EHR vendors

April 12, 2013

It is good news that Siemens still remains as #3 EHR vendor

according to Forbes article here:

http://www.forbes.com/sites/zinamoukheiber/2012/04/26/will-cerner-epic-and-allscripts-continue-to-dominate-health-it/

 

2012 Workflow Technology Tutorial

November 15, 2012

In November 2012 I (Vojtech Huser) did another tutorial with Harm Scherpbier on workflow technology. Slides as PPT file are available here:

http://www.slideshare.net/vojtech_huser/presentations 

 

Also one video  from the tutorial is here: (thanks to Dr. Harm Scherpbier)

 

Process mining book review

October 31, 2012

To read more about a very good recent textbook about workflow technology: go to a JBI book review here:

http://dx.doi.org/10.1016/j.jbi.2012.06.007

How to simplify event log?

July 27, 2012

In order to do process mining in healthcare, one soon discovers that simplifying a log is important.

Maybe you don’t need all individual vital signs – but just an event that vital signs action were taken by some clinician.

For that you will need your coded events replaced by some higher level concept (blood pressure – vital signs, respiratory rate – vital signs).

Than you simply collapse events happening within a certain time frame (e.g., 10 minutes) into just one event (vital signs).

Several terminology problems arise with that.
For more fun, google SA-MXML

Which process mining algorithm to use?

June 15, 2012

The number of available process mining algorithms keeps getting higher and you might be wondering which one to start with.

Well, try the Fuzzy miner, dressed up in a more user friendly package. More info here http://fluxicon.com/blog/2012/05/say-hello-to-disco/

Workflow in clinical trials

April 16, 2012

In a CDISC SDM-XML standard, there are interesting examples of workflow.

Look here:

http://www.cdisc.org/study-trial-design

And an HTML generated out of their example XML file is here:

http://healthflow.googlecode.com/files/Study%20Design_%20Xanomeline%20%28LY246708%29.pdf

Representing phenomes

March 29, 2012

Flowcharts can be used to represent phenomes.

This new site: http://phekb.org  tries to capture those.

They specify the EHR algorithms to determine a phenotype using mostly ICD9, LOINC and RxNorm terms.

 

They also use this flowchart sw: http://www.knime.org/screenshots

HealthFlow Hepatitis A scenario

February 9, 2012

HL7 Arden Syntax group is working on representing immunization rules.

There is an example MLM available here:

http://wiki.hl7.org/images/1/17/2012-01-17_Arden_Syntax_WG_Minutes_San_Antonio.zip

We represented the same logic in HealhFlow framework (using XPDL)

See the screenshot here:

vojtech_huser_HealthFlow_example_flowchart_hepatitis_A_immunization_005

the image file is also here:

http://commons.wikimedia.org/wiki/File:HealthFlow_example_flowchart_hepatitis_A_immunization_005.jpg

 

The full XPDL file is available here:

http://healthflow.googlecode.com/files/Hep_A_immunization003_Vojtech_Huser_HealthFlow.xpdl

Use this newer version of the editor and switch to Settings –> Configuration –> Shark to see the conditions fully displayed (on the arrows)

http://sourceforge.net/projects/jawe/

 

More info about HealthFlow is also here

http://en.wikipedia.org/wiki/HealthFlow

 

 

The original MLM is publicly available.
However, in case the link brakes, here is the full logic:

 

maintenance:
    title: Hepatitis A Immunization MLM;;
    mlmname: Hep_A_Immunization;;
    arden: Version 2.8;;
    version: 1.00;;
    institution: Intermountain Health Care;;
    author: Peter Haug, M.D.;;
    specialist: Peter Haug M.D.;;
    date: 2011-09-10;;
    validation: testing;;
library:
    purpose: Suggest initial dose of Hepatitis A vaccine schedule.;;
    explanation: ;;
    keywords: Hepatitis A; vaccine; immunization;;
    citations: to be added. ;;
    links: to be added;;
knowledge:
type: data_driven;;
data:
    /* text within curly brackets would be replaced with an institution’s own query */

    Let PatientIDRecord BE OBJECT [AccountNum, Name, Birthdate, Sex];
    LET Patient BE Read As PatientIDRecord Latest {select accountnum, name, dateofbirth, sex from EHR} ;

    LET outpatient_visit BE EVENT {storage of ambulatory registration}

    LET Medication BE OBJECT [Drug_Name, Form, Dosage, Route, Schedule]
    LET VAQTA BE Read As Medication {select med, form, dose, route, schedule from EHR where med = ‘VAQTA’} ;
    LET HAVRIX BE Read As Medication {select med, form, dose, route, schedule from EHR where med = ‘HAVRIX’} ;
    LET TWINRIX BE Read As Medication {select med, form, dose, route, schedule from EHR where med = ‘TWINRIX’} ;
    Let GenericMessage BE OBJECT [MessageID, MessageCode, Message_Text];
    Let Vaccine_Message BE New GenericMessage;
    ;;
evoke: outpatient_visit;;
logic:
    /* Check age */
    if
        Patient_Age Is Null
    then
        Patient_Age := Now – Patient.Birthdate;
    endif;

    if
        Patient_Age Less Than 12 months
    then
        Conclude False ;
    endif;
    /* Young Patient */       
    if
        Patient_Age Greater Than 12 months and
        Patient_Age Less Than or Equal 18 years
    then
        Apply_young_patient_rules := true;
    endif;
    /* Older Patient */       
    if
        Patient_Age Greater Than 18 years
    then
        Apply_older_patient_rules := true;
    endif;
    /* Rules-no previous vaccine. */
    if
        Exist(VAQTA) or Exist(HAVRIX) or Exist(TWINRIX)
    then
        Hepatitis_vaccination:= true;
    endif;
    if
        Apply_young_patient_rules and
        Not Hepatitis_vaccination
    then
        Vaccine_Message.Message_Text := "Give VAQTA vaccine, 25U, IM now and repeat in 6 to 18 months.";
        Conclude true;
    endif;
    if
        Apply_older_patient_rules and
        Not Hepatitis_vaccination
    then
        Vaccine_Message.Message_Text := "Give VAQTA vaccine, 50U, IM now and repeat in 6 to 18 months.";
        Conclude true;
    endif;
/* Rules-one previous vaccination. */
    if
        Count(VAQTA) + Count(HAVRIX) + Count(TWINRIX) = 1
    then
        Needs_second_dose := true;
    endif;

    /* Second dose young people */
    if
        Apply_young_patient_rules and
        Needs_second_dose and
        Exist(VAQTA) and
        Latest VAQTA Occurred Before 6 months Ago
    then
        Vaccine_Message.Message_Text := "Give VAQTA vaccine, 25U, IM now. This completes Hepatitis A vaccinations.";
        Conclude true;
    endif;
    if
        Apply_young_patient_rules and
        Needs_second_dose and
        Exist(HAVRIX) and
        Latest HAVRIX Occurred Before 6 months Ago
    then
        Vaccine_Message.Message_Text := "Give HAVRIX vaccine, 720EL.U, IM now. This completes Hepatitis A vaccinations.";
        Conclude true;
    endif;
    if
        Apply_young_patient_rules and
        Needs_second_dose and
        Exist(TWINRIX) and
        Latest TWINRIX Occurred Before 1 months Ago
    then
        Vaccine_Message.Message_Text := "Give TWINRIX vaccine, 720 EL.U/20ug, IM now. This is the second Hepatitis A/B vaccination.";
        Conclude true;
    endif;

    /* Second dose Older people */
    if
        Apply_older_patient_rules and
        Needs_second_dose and
        Exist(VAQTA) and
        Latest VAQTA Occurred Before 6 months Ago       
    then
        Vaccine_Message.Message_Text := "Give VAQTA vaccine, 50 U, IM now. This completes Hepatitis A vaccinations.";
        Conclude true;
    endif;
    if
        Apply_older_patient_rules and
        Needs_second_dose and
        Exist(HAVRIX) and
        Latest HAVRIX Occurred Before 6 months Ago   
    then
        Vaccine_Message.Message_Text := "Give HAVRIX vaccine, 1440 U, IM now. This completes Hepatitis A vaccinations.";
        Conclude true;
    endif;
    if
        Apply_older_patient_rules and
        Needs_second_dose and
        Exist(TWINRIX) and
        Latest TWINRIX Occurred Before 1 months Ago       
    then
        Vaccine_Message.Message_Text := "Give TWINRIX vaccine, 720EL.U/20ug, IM now. This is the second Hepatitis A/B vaccination.";
        Conclude true;
    endif;   
    /* Third dose of TWINRIX */
    if
        Exist(TWINRIX) and Count(TWINRIX) = 2 and
        Latest(TWINRIX) Occurred Before 5 months Ago
    then
        Vaccine_Message.Message_Text := "Give TWINRIX vaccine, 720EL.U/20ug, IM now. This completes Hepatitis A/B vaccinations.";
        Conclude true;
    endif;
    ;;
action:
    write Vaccine_Message.Message_Text;;
end:

Process mining as visualization technique

January 27, 2012

Process mining can produce a flowchart which is better to look at rather then 3millions rows of event data.

Animation adds to the flowchart yet another element: one can see the frequent paths taken or time delays between steps.

scr 2011-12-22, 16_06_51


Follow

Get every new post delivered to your Inbox.