xAPI EMR Profile

Profile for Electronic Medical Record activities


We have been attempting, with limited success to generate an xAPI Profile for Clinical Training Experiences. See https://docs.google.com/document/d/1IHGY8F2mJ-Bs6CM9MoXFVgWJhUk2HcdRIKKvElMMgGg/edit#heading=h.bljf56o01gmf — one of the conceptual problems has been considering how data on these would be effectively captured. Up to this point, most groups had advocated for simple checklists – however, we are reticent to take that approach because of the simple fact that creators of checklists are pretty unlikely to incorporate standardized APIs into them. It’s just unrealistic to expect that.

A further concern that has been raised is that it may be hard for the observer to tell when in the clinical encounter that the learner has actually reached certain points, such as “made diagnosis”.

At this point, it would be more practical to consider instead creating a Profile for use with EMRs. These days, this would be a common tool that we can expect to be available during a clinical encounter. Of course, this will not apply all the time but if we start with this framework, it is likely that we can then use much of the same Profile for clinical training experiences.

Note that the EMR xAPI Profile is not an attempt to extract all the clinical data from the encounter. It is also not an attempt to recreate another copy of the visit record from the EMR within an LRS. Indeed, there would be several likely objections to this if done widely. EMR vendors would be sensitive to exposing the database content; there would be patient confidentiality concerns.

Here we are focusing on the activities in an EMR that would be of interest in learning analytics, rather than clinical informatics. This does not preclude the inclusion of clinical content and some groups may wish to extend to this functional aspect. If so, we suggest that, rather than storing clinical data directly within the LRS, secure linking to elements within the EMR are considered instead. Then if the person wishing to access such data does not have access to the EMR, they will not be able to follow such a link.

We should also consider that, with sufficient triangulation from multiple data sources, patient data may be still be identifiable with simple links. In this case, groups who seek to include such clinical data links may wish to consider using a blockchain linking system, such as Ethereum. This would allow reproducible links between the two systems, without compromising the anonymity of the patient. I am happy to discuss this further with groups who are interested in this approach (topps AT ucalgary DOT ca).


Allow abstraction of workflow and learning activities

Provide delinking from clinic content and patient identification

Use external identifiers within the EMR

 If you do not have access/auth to the EMR, then you do not know who the patient is

 Given that you can backtrace from multiple datasources and still identify the individual, also allow for blockchain identifiers when needed

Profile can be applied to a real EMR and to a virtual EMR


  • Most statements include an Agent with the user as the ‘actor’ property.
  • Most statements include the EMR Activity as the ‘object’.
  • All timestamps in statements must be compliant with ISO 8601 format.
  • Virtual EMR Activity Definition includes the following:

The Actor object will be defined by the EMR system. The Actor object for most statements with defined verbs will be of type “Agent” and MUST contain an account object.

An Example of usage in a statement:

 “actor”: {
   “objectType”: “Agent”,
   “account”: {
       “homePage”: “http://demo.openlabyrinth.ca”,
       “user_id”: “1625”
 “verb”: {…},
 “object”: {…},
 “result”: {…},
 “context”: {…},
 “attachments”: {…}


Note that these are syntactically provisioned as past tense. This is to provide some basic semantic consistency between the verbs but it also leads to some odd verbs like ‘Demographed’ or ‘Goaled’. Because the Verbs are mostly used in data statements, rather than as part of complete English sentences, these neologisms are more easily justified.


User has started a clinic session. Sent when the user opens the EMR.

Verb IRI: http://adlnet.gov/expapi/verbs/initialized

Includes a timestamp and identifier of the page in the EMR when clinic was started.  


User has finished a clinic session. Sent when the user closes the EMR session.

Includes a timestamp and identifier of the page in the EMR when clinic was finished.


User has completed the clinic, including visit notes, billing, tasks for that session.  

Verb IRI: http://adlnet.gov/expapi/verbs/completed


Activity directly relating to a patient visit or interaction. This is the live, usually face-to-face, component of a patient encounter. When interacting with the patient, the user will, within this activity subset, conduct the traditional history and examination phases, entering notes in SOAP format.

 Place details in Object clause about

·       open,

·       close,

·       status update

— this would include activities such as taking a history, performing a physical examination. These activities could be separated out using separate Verbs – however the structure of EMRs and the notes of clinicians both vary considerably so it may be more effective to include details, when needed, about these sub-functions, within the Object clauses for this Verb.


Created an entry in a Visit note

 Or would you place this within the Object clause of a Visited statement?


Activity relating to a Task

 Not tasked as in delegated or ‘tasked someone else to do something’

 Can Task oneself

 Could use the same metaphor/structure as MedAccess where pretty much everything is a type of Task


 Distinguish imaging from lab reqs using the Object clause

 Separate the requisition from results review using verbs or object clauses


 Is this a separate verb or it is part of Visited?

— might be worth having as a separate Verb because more likely to be of interest in learning analytics

Prescribed (or Treated or Managed?)

 Initiated a management task, med order or refill, stopped a med,


 Or Advised?

·       Advised might be better for providing more generic advice between members of a HCP team

 Gave advice, instructions, directions, counseling to patient or family member


 Activities related to a Consult

·       Request – initiating a consult. May be with an internal team member or an external consultant.

·       Reviewed (read the received consult letter or report)

Called (or Messaged?)

 Phone call or email or other messaging communication


·       patient

·       healthcare professional

·       Family member

Summarized (or Profiled?)

 Created/edited an entry in the patient’s master profile or summary

 Includes master problem list, family history, allergies, social history, surgical history


 Made an edit to demographic information such as address, phone number.

— be careful about including criteria because they expose patient-identifiable data


 Would be useful for CanMeds but how is this defined within the EMR?


 Created/edited a Goal or ongoing monitoring target eg. smoking status, next PAP smear

 Might be too specific to MedAccess

 What is the equivalent in other EMRs?


— created or edited a billing entry relating to this patient visit.


— created or edited a calendar entry in the EMR for a patient visit or other activity

— other activities may include learning sessions, meetings, team consults


 Find a patient record according to certain criteria

— be careful about including search criteria because they expose patient-identifiable data


 Query/report generation of patients or visits meeting certain criteria

 How is this different from Searched? Is it only the fact that multiple records are returned?