Adaptable Clinical Pathways and Protocols

Helen Chen <helen.chen@agfa.com>

 

Discussion on Basic Concepts and Lessions Learnt

Februray 6, 2007

Outline

Protocols and Pathways in Healthcare Settings

ACPPNote

ACPP Model

ACPPModel

Guideline Types

ACPP Basic Concepts

# This ontology is a semantic model of adapatable clinical protocols and pathway, 
# containing axioms of expressing adapatble clinical pathway in a declerative manner.
# 
# This is a draft 


<> a	owl:Ontology;
   rdfs:comment	"Adaptable Clinical Protocols and Pathway Ontology in RIM";
   rdfs:label	"ACPPOntologyRIM".

#Top Level Class Declaration

# A recommendation is a intented/planned clinical act for fulfilling a given 
# medical intention. 
# It can be accepted by the medical team thus carried out as a series of events 
# in healthcare system
# or can be rejected by  

:Recommendation	rdfs:subClassOf	 rim:Act,
      [ a 	owl:Restriction;
        owl:onProperty rim:actMoodCd;
	owl:hasValue rim:Recommendation];
	rdfs:comment	"""A recommendation is a step or a group of medical acts, 
	                can consist of multiple procedures.  A non-mandated intent 
                        to perform an act where a level of professional responsibility 
                        is being accepted by making the proposal. Each recommendation 
                        made by the system to patient and his physician need to be 
                        explicited confirmed in order to be excuted""".
		  

		
:PatientState a	owl:Class;
	      rdfs:comment """ Patient State is a composited concept that presents a 
                         patient's clinical (i.e. clinical problem), 
		         physicial (e.g. comfortable with pain management, 
                         able to walk in 5 meters, self-caring), 
		         and operational (e.g. in the middle of an operation, 
                         or undergoing a therapy) states.  In the ACP, 
		         the patient state is a major trigger for making a 
                         recommendation or change a planned procedure.  As a pre-condition, 
                         it can cause a observation or procedure to be executed in order to 
                         achive a goal; As a post-condition, it can state the actual outcome 
                         of a medical intervention; As a goal, it also can state the expected outcome """.


:ClinicalState	rdfs:subClassOf	:PatientState;
		rdfs:comment """ a clinical problem that a patient is suspected/diagnosed to have, 
                         can be mapped to to an established terminology base such as umls or snomed""".  
					
:PhysicalState	rdfs:subClassOf	:PatientState;
		rdfs:comment """ Identify something as a physical state depends on individual 
                         care plan or institution""". 		

:OperationalState rdfs:subClassOf :PatientState;
		rdfs:comment """ Operational State will be deduced based on act (mood = event) 
                         and its status (active or completed) a patient participated in""".
										
:inPatientState		a	owl:ObjectProperty;
			rdfs:domain	atype:Patient;
			rdfs:range	:PatientState.


:hasExpectedState		a	owl:ObjectProperty;
			rdfs:domain	atype:Patient;
			rdfs:range	:PatientState.
			
:hasPossiblePlan	a	owl:ObjectProperty;
			rdfs:domain	atype:Patient;
			rdfs:range	rim:Act.			

:nextStep	a	owl:ObjectProperty;
		owl:inverseOf rim:actRelationshipSequel.

:connect	a	owl:ObjectProperty;
                rdfs:domain  :Recommendation;
		rdfs:range   :Recommendation.
			
# there are other participation types such as physicians, consultant and nurses, 
# who are clearly defined in HL7,thus not to be repeated in this ontology 


#Properties of Recommendation for a careplan

:preCondition	a	rdf:Property;
		rdfs:domain :Recommendation;
		rdfs:range  :PatientState;
		rdfs:comment """ the condition (patient clinical, physical, 
                             and operattional state) that causes the recommendation to be proposed""".

:postCondition	a	rdf:Property;
		rdfs:domain :Recommendation;
		rdfs:range  :PatientStatet;
		rdfs:comment """ the expected condition (patient clinical, physical, and 
                            operattional state) that results from the successful execution of the recommendation""".

:isConfirmed	a 	rdf:Property;
		rdfs:domain	:Recommendation;
		rdfs:range	xsd:boolean;
		rdfs:comment	""" when set to true, the sequel action or order will be executed""".
					  

#A Variance can be an task noted on the clinical path not occuring within 24 hours, 
#or a task not recommended by the existing guidelines and protocol.

:Variance	rdfs:subClassOf	rim:Act,
		[ a 	owl:Restriction;
		  owl:onProperty rim:actStatus;
		  owl:hasValuesFrom :UnsuccessfulStatus].
		  
:varianceExplanation	a	rdf:Property;
		rdfs:domain	:Variance;
		rdfs:range	xsd:string.
		
:varianceCode	a	rdf:Property;
		rdfs:domain	:Variance;
		rdfs:range	xsd:string.

:UnsuccessfulStatus  owl:oneOf (rim:actAborted rim:actCancelled rim:actSuspended).

:hasVariance  	a	rdf:Property;
		rdfs:domain	atype:Patient;
		rdfs:range	:Variance.
		

Rules to Connect Steps (Excerp)

#matching pre-conditions specified in "all of" 
#a step will only be recommended when all of its pre-condition are met
{?Y acpo:preCondition ?P.
 ?P acpo:allOf ?L.
 ?X acpo:inAllStateOf ?L.
}
 =>
{?X rim:participateInAct ?Y}.


#matching pre-conditions specified in "some of"
#a step will be recommended when one of its pre-condition is met
{?Y acpo:preCondition ?P.
 ?P acpo:someOf ?L.
 ?X acpo:inSomeStateOf ?L}
 =>
{?X rim:participateInAct ?Y}.

#when an act is cancelled, aborted, held, or suspended, this act is recorded as a variant of a pathway

{?S a atype:Patient;
    rim:participateInAct ?X.
 ?X rim:actStatusCd ?Y.
 acpo:UnsuccessfulStatus owl:oneOf ?L.
 ?L list:member ?Y.}
 =>
 {?S acpo:hasVariance (rim:nullValue ?X)}.

Ontology and Rules for CABG Procedure

{?S a :CoronaryArteryStenosis;
    :VesselStenosisDegree ?deg. ?deg math:greaterThan 50 } => {?S a :FiftyOrMoreStenosis }
{?S a :CoronaryArteryStenosis;
    :VesselStenosisDegree ?deg. ?deg math:greaterThan 70 } => {?S a :SeventyOrMoreStenosis }

Class: ImportantLeftMainCoronaryArteryStenosis
EquivalentTo: 
	:FiftyOrMoreStenosis and (:CoronaryArtery value 'left main')))) 

Class: ImportantLADStenosis
EquivalentTo:
	:SeventyOrMoreStenosis and (:CoronaryArtery value 'left anterior descending')

Class: ImportantProximalLADStenosis
EquivalentTo: (:CoronaryArteryAnatomy value 'proximal') and 
              :SeventyOrMoreStenosis and (:CoronaryArtery value'left anterior descending')

Class: ImportantRCAStenosis 
EquivalentTo: SeventyOrMoreStenosis and (:CoronaryArtery value 'right coronary artery')

Class: ImportantPDAStenosis 
EquivalentTo: SeventyOrMoreStenosis and (:CoronaryArtery value 'posterior descending artery')

Class:ImportantPDAOrRCAStenosis
EquivalentTo: ImportantPDAStenosis or ImportantRCAStenosis

Class:ImportantCXStenosis
EquivalentTo:  :SeventyOrMoreStenosis and (:CoronaryArtery value 'left circumflex')

Rules for Selecting Candidate for CABG Procedure

{ ?P a cpr:patient; dol:constant-participant [ a cpr:screening; inf:realizes

     [ a cpr:medical-sign;
         inf:ordered-by [ a cpr:anatomical-concept;
                          skos:prefLabel "Coronary Artery" ];
         galen:hasSpecificCause [ a cabg:ImportantLeftMainCoronaryArteryStenosis ]
       ] } => { ?P a :CABGCandidate }.

Reasoning on Inclusion and Exclusion Criteria

Inclusion and exclusion crieria can be applied to a particular task, or to the entire guideline. We take a two-tier apporach to do reasoning

Declare Inclusion and Exclusion Criteria for a pathway

Assume we have 3 pathways expressed in RDF, each has its inclusion and exclusion criteria

p001.n3:

:   acpo:inclusionCriteria (kb:DDD kb:GGG kb:HHH);
    acpo:exclusionCriteria (rim:Patient kb:maxAge 16).

p002.n3:

: acpo:inclusionCriteria (kb:XX kb:YY kb:ZZ);
  acpo:exclusionCriteria (kb:Patient kb:MedicalProblem kb:CVA).

p003.n3:

: acpo:inclusionCriteria (kb:A kb:B kb:C),
                        (rim:Patient rim:Gender rim:Female);
  acpo:exclusionCriteria (rim:Patient rim:Observation kb:HIV).

Selecting Rules for Right Pathway Knowledge

kb:KnowledgeBase a rdfs:Class.
kb:CandidateKnowledgeBase a rdfs:Class.
kb:NotApplicableKnowledgeBase a rdfs:Class.
kb:ApplicableKnowledgeBase a rdfs:Class.

###########################################################
#Registered knowledge bases
###########################################################

 a  kb:KnowledgeBase.
 a  kb:KnowledgeBase.
 a  kb:KnowledgeBase.
 a  kb:KnowledgeBase.


#################################################
#Test inclusion criteria
#################################################

cpi:inState a rdf:Property; rdfs:domain kb:Patient; rdfs:range cpi:Context.

:jane a kb:Patient;
      cpi:inState (kb:A kb:B kb:C), (kb:DDD kb:GGG kb:HHH), (rim:Patient kb:maxAge 16), (kb:XX kb:YY kb:ZZ).


####################################################
#rules to find KBs that has this inclusion criteria
####################################################

#{?U a kb:KnowledgeBase; 
#  log:semantics ?F. 
# ?F log:includes {: cpi:inclusionCriteria {kb:A kb:B kb:C}, {rim:Patient rim:Gender rim:Female}, {kb:DDD kb:GGG kb:HHH}}
# } =>
# {?U a kb:CandidateKnowledgeBase}.

#{?U a kb:KnowledgeBase; 
#  log:semantics ?F. 
#  ?F log:includes {: cpi:inclusionCriteria {?A kb:GGG ?C}}.
#  }
# =>
# {?U kb:hasInclusion {?A kb:GGG ?C}}.

@forAll var:A, var:B, var:C.
{?P a kb:Patient;
    cpi:inState ?S.
 ?U a kb:KnowledgeBase; 
  log:semantics ?F.
  ?F log:includes {: cpi:inclusionCriteria ?S}} => {?U a kb:CandidateKnowledgeBase}.

{?U a kb:KnowledgeBase;
     log:semantics ?X.
   ?X log:includes {:  cpi:inclusionCriteria (var:A var:B var:C)}.
  }
   => {?U kb:hasInclusion (var:A var:B var:C)}.

@forAll var:P, var:A, var:B, var:C.   
{ ?U kb:hasInclusion (var:A var:B var:C).
 <> log:semantics ?F.
 var:P a kb:Patient.
 ?F log:notIncludes {var:P cpi:inState (var:A var:B var:C)}.
  }
   => {?U a kb:NotApplicableKnowledgeBase}.

{?U a kb:KnowledgeBase;
     log:semantics ?X.
   ?X log:includes {:  cpi:exclusionCriteria (var:A var:B var:C)}.
  }
   => {?U kb:hasExclusion (var:A var:B var:C)}.

@forAll var:P.
{ ?U kb:hasExclusion (var:A var:B var:C).
 <> log:semantics ?F.
 var:P a kb:Patient.
 ?F log:includes {var:P cpi:inState (var:A var:B var:C)}.
  }
   => {?U a kb:NotApplicableKnowledgeBase}.   

{?U a kb:CandidateKnowledgeBase.
 ?SCOPE e:findall (?U {?U a kb:NotApplicableKnowledgeBase} ())}
 =>
 {?U a kb:ApplicableKnowledgeBase}.

OWL's Limitation in Addressing These Scenarios