#FHIR and Appointments during the COVID-19 Epidemic

Mar 28, 2020

In a number of contexts, people are using FHIR in production to make or report on patient appointments. It’s a natural question, then, how the COVID-19 epidemic impacts on this.

In general, there’s a number of ways in which COVID-19 changes the appointment making process:

  • a strong focus on telehealth, no matter where the patient lives - don’t make them come out of their bubble if it all possible
  • If they do, you need to manage the patient arrival process carefully (don’t let patients gather in waiting rooms, manage the traffic in hallways etc)
  • Need to screen patients (and report whether they have been screened)
  • Note in advance that patient is being admitted because of COVID-19
  • Report on patient status
  • exposure to known or suspected cases
  • showing relevant symptoms (coughing, fever, shortness of breath etc)
  • known immunity (not many yet, but coming, with test to prove(?) it)
  • has co-morbidities that are known risk factors

All of this is happening very rapidly.

How to represent this in FHIR:

Mark an appointment as a virtual appointment

That is, an appointment that’s going to happen over some communication medium. Defining this exactly is pretty tricky, in fact. But it’s where the patient is not going to turn up in person and some mixture of phone and/or video meeting service is going to be used.

HL7 defines the following code that is appropriate in Appointment.appointmentType:

```{
  "resourceType" : "Appointment",
  "appointmentType" : {
     "coding" : {
       "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode",
       "code" : "VR",
       "display" : "virtual"
     },
     "test" : "Remote Appointment"
  }
}```**{
  "resourceType" : "Appointment",
  "appointmentType" : {
     "coding" : {
       "system" : "http://terminology.hl7.org/CodeSystem/v3-ActCode",
       "code" : "VR",
       "display" : "virtual"
     },
     "test" : "Remote Appointment"
  }
}**

VR is defined as

A patient encounter where the patient and the practitioner(s) are not in the same physical location. Examples include telephone conference, email exchange, robotic surgery, and televideo conference.

An alternative possible code is 185317003, from the SNOMED Global Free set:

```{
  "resourceType" : "Appointment",
  "appointmentType" : {
     "coding" : {
       "system" : "http://snomed.info/sct",
       "code" : "185317003",
       "display" : "Telephone encounter"
     },
     "test" : "Remote Appointment"
  }
}```**{
  "resourceType" : "Appointment",
  "appointmentType" : {
     "coding" : {
       "system" : "http://snomed.info/sct",
       "code" : "185317003",
       "display" : "Telephone encounter"
     },
     "test" : "Remote Appointment"
  }
}**

I think this is the least inappropriate code SNOMED has, for what is a more general concept, but the codes haven’t kept up with technology (that’s for all of SNOMED, not just the free set). I think that the HL7 code is more suitable, and should be used in preference.

Details for the video consultation

There’s two different ways to represent where the consultation will be.

In the first case, the communication is simply represented by a URL. That might be a video conference URL, or a personal contact URL like Skype or whatsApp.

Note: In general, the personal communication services are not appropriate because they’re fundamentally social network services, with a focus on connecting friends, and building networks. Skype, in particular, is easy to think of using for experienced IT people, but hell for a newbie user in this context (see these instructions for determining your skype id). But people are doing it anyway right now, since they don’t know any better way.

HL7 Australia has defined an extension to appointment for this kind of use:

``````{ “resourceType” : “Appointment”, “extension” : [{ “url” : “http://hl7.org.au/fhir/StructureDefinition/telehealth-videolink”, “valueUrl” : “https://meet.jit.si/randomPatientMeeting” }] }**{ "resourceType" : "Appointment", "extension" : [{ "url" : "http://hl7.org.au/fhir/StructureDefinition/telehealth-videolink", "valueUrl" : "https://meet.jit.si/randomPatientMeeting" }] }**{ "resourceType" : "Appointment", "extension" : [{ "url" : "http://hl7.org.au/fhir/StructureDefinition/telehealth-videolink", "valueUrl" : "https://meet.jit.si/randomPatientMeeting" }] }{ “resourceType” : “Appointment”, “extension” : [{ “url” : “http://hl7.org.au/fhir/StructureDefinition/telehealth-videolink”, “valueUrl” : “https://meet.jit.si/randomPatientMeeting” }] }**

Note the use of the very excellent, easy, free, open source video conferencing service Jitsi there - more on this in a later post.

The other way to represent the consultation details are using a healthcare service. This is appropriate where a separate platform/information system handles the telehealth consultation details - this is also a common arrangement.

To represent this, the video service is represented as a Healthcare service:

``````{ “resourceType”: “HealthcareService”, “id”: “607”, “type”: [ { “text”: “Patient Virtual Meeting Room” } ], “telecom”: [ { “system”: “url”, “value”: “http://patientlink.vmr.net” } ] }**{ "resourceType": "HealthcareService", "id": "607", "type": [ { "text": "Patient Virtual Meeting Room" } ], "telecom": [ { "system": "url", "value": "http://patientlink.vmr.net" } ] }**{ "resourceType": "HealthcareService", "id": "607", "type": [ { "text": "Patient Virtual Meeting Room" } ], "telecom": [ { "system": "url", "value": "http://patientlink.vmr.net" } ] }{ “resourceType”: “HealthcareService”, “id”: “607”, “type”: [ { “text”: “Patient Virtual Meeting Room” } ], “telecom”: [ { “system”: “url”, “value”: “http://patientlink.vmr.net” } ] }**

and then the appointment links the healthcare service in as a participant on the appointment:

``````{ “resourceType” : “Appointment”, “participant”: [{ “type”: [{ “coding” : { “system” : “http://terminology.hl7.org/CodeSystem/v3-ParticipationType”, “code” : “RML” } “text”: “Patient Virtual Meeting Room” }], “actor”: { “reference”: “[reference]” }, “status”: “accepted” }] }**{ "resourceType" : "Appointment", "participant": [{ "type": [{ "coding" : { "system" : "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code" : "RML" } "text": "Patient Virtual Meeting Room" }], "actor": { "reference": "[reference]" }, "status": "accepted" }] }**{ "resourceType" : "Appointment", "participant": [{ "type": [{ "coding" : { "system" : "http://terminology.hl7.org/CodeSystem/v3-ParticipationType", "code" : "RML" } "text": "Patient Virtual Meeting Room" }], "actor": { "reference": "[reference]" }, "status": "accepted" }] }{ “resourceType” : “Appointment”, “participant”: [{ “type”: [{ “coding” : { “system” : “http://terminology.hl7.org/CodeSystem/v3-ParticipationType”, “code” : “RML” } “text”: “Patient Virtual Meeting Room” }], “actor”: { “reference”: “[reference]” }, “status”: “accepted” }] }**

Screening the patient

As of the last few weeks, it’s normal to screen all patients for COVID-19 symptoms.

Typically, the questions relate to

  • exposure to existing cases (or arriving from (some other) countries, though this is fast becoming irrelecvant - and rare)
  • presence of common symptoms, typically coughing, fever, shortness of breath - though a long list of other common ailments result in some or all of those symptoms.

The patient is asked this, preferably before they are face to face, and the answer is recorded. An answer of yes typically results in the patient being redirected to a different location or a more consultative telephone screening service (don’t want respiratory patients with other ailments mixing with COVID-19 patients!).

From an interoperability point of view:

  • What is the screening questionnaire?
  • Was the answer yes, or no?
  • Was the asking mediated by a person, or did the patient just answer themselves?
  • what were the specific answers?

Taking those things in order…

What is the screening questionnaire:

This would be a statement by a healthcare service - I think - what screening questionnaire are we using?

It seems that this would be an extension:

``````{ “resourceType” : “HealthcareService”, “extension” : [{ “url” : “http://hl7.org/fhir/StructureDefinition/healthcareservice-general-screening-q”, “valueCanonical” : “http://cdc.gov.au/fhir/general-patient-screening-form” }] }**{ "resourceType" : "HealthcareService", "extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/healthcareservice-general-screening-q", "valueCanonical" : "http://cdc.gov.au/fhir/general-patient-screening-form" }] }**{ "resourceType" : "HealthcareService", "extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/healthcareservice-general-screening-q", "valueCanonical" : "http://cdc.gov.au/fhir/general-patient-screening-form" }] }{ “resourceType” : “HealthcareService”, “extension” : [{ “url” : “http://hl7.org/fhir/StructureDefinition/healthcareservice-general-screening-q”, “valueCanonical” : “http://cdc.gov.au/fhir/general-patient-screening-form” }] }**

There’s a couple of problems with this:

  • that extension isn’t defined
  • CDC doesn’t publish that actual questionnaire, though there isthis one

Work is needed here

Was the answer yes or no?

This is the same as ‘is the patient an at-risk patient’? And that would be a flag resource:

``````{ “resourceType” : “Flag”, “status” : “active”, “code” : { “coding” : { “system” : “http://hl7.org.au/fhir/sid/icpc-2plus”, “code” : “R27003”, “display” : “Concern (about);COVID-19” }, “text” : “Symptoms consistent with Covid-19” }, “subject” : { “reference” : “[ref]} } }**{ "resourceType" : "Flag", "status" : "active", "code" : { "coding" : { "system" : "http://hl7.org.au/fhir/sid/icpc-2plus", "code" : "R27003", "display" : "Concern (about);COVID-19" }, "text" : "Symptoms consistent with Covid-19" }, "subject" : { "reference" : "[ref]} } }**{ "resourceType" : "Flag", "status" : "active", "code" : { "coding" : { "system" : "http://hl7.org.au/fhir/sid/icpc-2plus", "code" : "R27003", "display" : "Concern (about);COVID-19" }, "text" : "Symptoms consistent with Covid-19" }, "subject" : { "reference" : "[ref]} } }{ “resourceType” : “Flag”, “status” : “active”, “code” : { “coding” : { “system” : “http://hl7.org.au/fhir/sid/icpc-2plus”, “code” : “R27003”, “display” : “Concern (about);COVID-19” }, “text” : “Symptoms consistent with Covid-19” }, “subject” : { “reference” : “[ref]} } }**

That’s a code from the Australian variant of ICPC (ICPC 2+) - you need a license for it. And I’m not sure that it’s actually right, actually - what exactly is the concern about? I’m concerned about Covid-19 (though not presently having any symptoms or known exposure).

I just couldn’t find any better code… the nearest SNOMED CT code is 840546002 Exposure to SARS-CoV-2 but it’s only potential concern that there may be a risk of that.

Then the flag would be linked from the appointment, but that would also be an extension.

``````{ “resourceType” : “Appointment”, “extension” : [{ “url” : “http://hl7.org.au/fhir/StructureDefinition/appointment-flag”, “valueReference” : { “reference” : “{ref}” } }] }**{ "resourceType" : "Appointment", "extension" : [{ "url" : "http://hl7.org.au/fhir/StructureDefinition/appointment-flag", "valueReference" : { "reference" : "{ref}" } }] }**{ "resourceType" : "Appointment", "extension" : [{ "url" : "http://hl7.org.au/fhir/StructureDefinition/appointment-flag", "valueReference" : { "reference" : "{ref}" } }] }{ “resourceType” : “Appointment”, “extension” : [{ “url” : “http://hl7.org.au/fhir/StructureDefinition/appointment-flag”, “valueReference” : { “reference” : “{ref}” } }] }**

Who did the screening?

Did a professional ask the questions, or did the patient fill it in by themselves? The answers come from the patient either way, but the answers have more weight if another person asked the patient.

This could be the author on the Flag. Or a full provenance resource (e.g. following the proposed US Core profile).

What were the actual answers?

That would be a questionnaire response resource. And it would be referred to from the Flag resource:

``````{ “resourceType” : “Flag”, “extension” : [{ “url” : “http://hl7.org/fhir/StructureDefinition/flag-detail”, “valueReference” : { “reference” : “{ref to questionnaire response}” } }] }**{ "resourceType" : "Flag", "extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/flag-detail", "valueReference" : { "reference" : "{ref to questionnaire response}" } }] }**{ "resourceType" : "Flag", "extension" : [{ "url" : "http://hl7.org/fhir/StructureDefinition/flag-detail", "valueReference" : { "reference" : "{ref to questionnaire response}" } }] }{ “resourceType” : “Flag”, “extension” : [{ “url” : “http://hl7.org/fhir/StructureDefinition/flag-detail”, “valueReference” : { “reference” : “{ref to questionnaire response}” } }] }**

All of this is speculative, it needs work from the FHIR community to confirm - and it needs better codes, and more about patient flow etc. I’ll post updates to the this entry as review happens.