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

Preferred Concept Ancestor/Parent

December 20, 2011

In a recent process mining effort, I saw and interesting problem.

In order to simplify a log, it is important to transform events (e.g., Ultrasound of Abdomen) to a less granular events in order to make the process instances more similar to each other. But how to choose the correct ancestor concept for that – should it be Ultrasound study or Radiology Report (any one of them) or should be imaging of abdomen.

The two approaches I ended up with is a choosing a preferred hierarchy level for a given domain (e.g., anti-infectives level for drugs) or go by parent with a certain among of descendant concepts. (e.g., concepts with 500 descendant concepts are too broad parents) Solving it for any concept is not so trivial.

Does your IDR support well terminology abstractions of this kind?

Nitro – software for log transformation

November 8, 2011

ProM family of programs has a new tool.

Nitro

image

It can transfor CSV file into the new XES log format. Old standard was MXML. However, the new version of ProM  (version 6), still supports and internally uses MXML.

More complex process representation which better models real life

October 5, 2011

Not just processes but Proclets!

 

See this article

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.35.7318&rep=rep1&type=pdf

 

You can have two patient process instances affect each other.

 

Process mining book

August 18, 2011

Many IT systems end up producing logs of events. These logs can be analyzed.

There is a new book by a very well know workflow researcher: Wil M.P. van der Aalst.

Highlights (taken from Springer site)

  1. First book on process mining, bridging the gap between business process modeling and business intelligence.
  2. Written by one of the most influential and most-cited computer scientists and the best-known BPM researcher.
  3. Self-contained and comprehensive overview for a broad audience in academia and industry.
  4. The reader can put process mining into practice immediately due to the applicability of the techniques and the availability of the open-source process mining software ProM.

Here are the links to the book:

http://www.processmining.org/book/start

http://www.amazon.com/Process-Mining-Discovery-Conformance-Enhancement/dp/3642193447/

Workflow handbook series – the 2011 book

July 8, 2011

Workflow Management Coalition published every year one book in a workflow handbook series. It often contains interesting case studies and hints about the future. In 2011, the book does not contain any interesting insights relevant directly to healthcare since the 2011 book focuses on social networks and workflow.

 

See for yourself:

 

http://www.futstrat.com/books/handbook11-links.php

TOC: http://www.futstrat.com/books/downloads/Introduction2011_preview.pdf

Conference series focusing on workflow technology and healthcare

June 20, 2011

Every professional focusing on healthcare and workflow may be interested in a very interesting conference. It started in 2007 and is titled ProHealth.

 

Read about past conferences and the current one (2011) here:

http://www.uni-ulm.de/in/prohealth-11/previous-workshops.html