Skip to content

Representing Huddle Lists

Chris Moesel edited this page May 3, 2016 · 7 revisions

Overview

Intervention Engine will need to support the notion of a huddle list. A huddle list is a list of people who should be discussed during a specific huddle. The following are the features required by huddle lists:

  • Huddle Date: This is the date on which the huddle should take place
  • Huddle Leader: A reference to the practitioner, organization, or group leading the huddle. This is to support multiple care teams.
  • Huddle Patient Roster: The list of patients to be discussed.
  • Huddle Patient Reason: For each patient in the roster, the reason the patient was added. Probably a code, but could be text.
  • Huddle Patient Review Date: For each patient in the roster, when the patient was actually discussed for this huddle.

In the future, each patient entry might also contain a reference to the interventions that were decided upon during the huddle, but this is not an initial requirement.

The Huddle Profile on Group

After reviewing several options (see below), the team determined that huddles are best represented as a profile on Group, with four extensions. According to the FHIR definition, Group

Represents a defined collection of entities that may be discussed or acted upon collectively but which are not expected to act collectively and are not formally or legally recognized; i.e. a collection of entities that isn't an Organization.

Structure

The following existing fields on Group are needed to represent huddles:

Field Card Value / Description
meta.profile 1..1 http://interventionengine.org/fhir/profile/huddle
type 1..1 person
actual 1..1 true
code 0..1 `http://interventionengine.org/fhir/cs/huddle
name 0..1 friendly name, e.g., Dr. Smith's Huddle for February 2, 2016
member 0..* represents each member in the list
member.entity 1..1 reference to patient

In addition, the following extensions are defined on Group:

URL Card Type Description
http://interventionengine.org/fhir/extension/group/activeDateTime 0..1 dateTime the date or period the group is active
http://interventionengine.org/fhir/extension/group/leader 0..1 Reference(Group, Practitioner, Organization) the group leader

And the following on Group.member:

URL Card Type Description
http://interventionengine.org/fhir/extension/group/member/reason 0..1 CodeableConcept the reason the entity is a member of the group
http://interventionengine.org/fhir/extension/group/member/reviewed 0..1 dateTime when the group member was reviewed

NOTE: Non-huddle-specific field names were used to encourage flexibility and potential re-use.

CodeSystems

Two code systems have been created to support the Huddle profile.

This code system is used in the Group.code and contains only a single code at the moment. In the future, new codes might be added to represent different types of huddles.

Code Description
HUDDLE Huddle

This code system is used in the values for the extension http://interventionengine.org/fhir/extension/group/member/reason. It represents reasons why a patient is assigned to the huddle.

Code Description
CARRYOVER Carried Over From Last Planned Huddle
MANUAL_ADDITION Manually Added (but may contain more detailed text)
RECENT_ENCOUNTER Recent Encounter (but may contain more detailed text)
RISK_SCORE Risk Score Warrants Discussion

Example

The following is an example JSON representation of a huddle:

{
  "resourceType": "Group",
  "meta": {
    "profile": ["http://interventionengine.org/fhir/profile/huddle"]
  },
  "extension": [{
    "url": "http://interventionengine.org/fhir/extension/group/activeDateTime",
    "valueDateTime": "2016-02-02T09:00:00Z"
  },{
    "url": "http://interventionengine.org/fhir/extension/group/leader",
    "valueReference": {
      "reference": "Practitioner/9999999999999999999"
    }
  }],
  "type": "person",
  "actual": true,
  "code": {
    "coding": [{
      "system": "http://interventionengine.org/fhir/cs/huddle",
      "code": "HUDDLE"
    }],
    "text": "Huddle"
  },
  "name": "Dr. Smith's Huddle for February 2, 2016",
  "member": [{
    "extension": [{
      "url": "http://interventionengine.org/fhir/extension/group/member/reason",
      "valueCodeableConcept": {
        "coding": [{
          "system": "http://interventionengine.org/fhir/cs/huddle-member-reason",
          "code": "RECENT_ENCOUNTER"
        }],
        "text": "Inpatient Admission"
      }
    },{
      "url": "http://interventionengine.org/fhir/extension/group/member/reviewed",
      "valueDateTime": "2016-02-02T09:08:15Z"
    }],
    "entity": {
      "reference": "Patient/1111111111111111111"
    }
  }, {
    "extension": [{
      "url": "http://interventionengine.org/fhir/extension/group/member/reason",
      "valueCodeableConcept": {
        "coding": [{
          "system": "http://interventionengine.org/fhir/cs/huddle-member-reason",
          "code": "RISK_SCORE"
        }],
        "text": "Risk Score Warrants Discussion"
      }
    },{
      "url": "http://interventionengine.org/fhir/extension/group/member/reviewed",
      "valueDateTime": "2016-02-02T09:15:46Z"
    }],
    "entity": {
      "reference": "Patient/2222222222222222222"
    }
  }, {
    "extension": [{
      "url": "http://interventionengine.org/fhir/extension/group/member/reason",
      "valueCodeableConcept": {
        "coding": [{
          "system": "http://interventionengine.org/fhir/cs/huddle-member-reason",
          "code": "MANUAL_ADDITION"
        }],
        "text": "Manually Added - Upcoming Appointment"
      }
    },{
      "url": "http://interventionengine.org/fhir/extension/group/member/reviewed",
      "valueDateTime": "2016-02-02T09:32:15Z"
    }],
    "entity": {
      "reference": "Patient/3333333333333333333"
    }
  }, {
    "extension": [{
      "url": "http://interventionengine.org/fhir/extension/group/member/reason",
      "valueCodeableConcept": {
        "coding": [{
          "system": "http://interventionengine.org/fhir/cs/huddle-member-reason",
          "code": "RECENT_ENCOUNTER"
        }],
        "text": "ER Visit"
      }
    }],
    "entity": {
      "reference": "Patient/4444444444444444444"
    }
  }, {
    "extension": [{
      "url": "http://interventionengine.org/fhir/extension/group/member/reason",
      "valueCodeableConcept": {
        "coding": [{
          "system": "http://interventionengine.org/fhir/cs/huddle-member-reason",
          "code": "RECENT_ENCOUNTER"
        }],
        "text": "Inpatient Readmission"
      }
    }],
    "entity": {
      "reference": "Patient/5555555555555555555"
    }
  }]
}

Other Considered Approaches

In addition to profiling Group, we also considered profiling List, as well as creating our own Huddle resource.

Huddle Profile on List

After discussion, the team determined that when comparing Group to List, Group was the more obvious choice. While List could potentially work, it didn't seem to fit the intent as well as Group did. According to the FHIR definition,

The List resource is a flat, possibly ordered, collection of records. List resources are used in many places, including allergies, medications, alerts, family history, medical history, etc. List resources can be used to support patient-specific clinical lists as well as lists that manage workflows such as tracking patients, managing teaching cases, etc.

Structure

The following existing fields were considered for representing huddles:

Field Card Value / Description
title 0..1 friendly name, e.g., Hennawi Huddle Feb 2, 2016
code 0..1 make up our own code to represent huddle lists
source 0..1 either IE (as a device) or the practitioner leading the huddle
status 1..1 current if today or in the future, retired if in the past
date 0..1 technically the date the list was prepared, but perhaps could be huddle date?
mode 1..1 working if today or in the future, snapshot if in the past -- but changes if we choose to use entry.flag or entry.deleted
entry 0..* represents each member in the list
entry.flag 0..1 a code indicating why the patient was added to the list (requires mode: changes)
entry.deleted 0..1 could potentially use as flag to indicate the patient has been discussed (requires mode: changes)
entry.date 1..1 when the patient was added to the list
entry.item 1..1 reference to patient

If we took a liberal interpretation of all of the property definitions in list, it would cover the major requirements (although the source could not be a Group or Organization). If we took a more conservative approach, we would consider one or all of the following extensions (but beware that some are very close to existing list properties):

Extends Field Card Type Description
List active[x] 0..1 dateTime, period the date or period the list is active
List steward 0..1 Reference(Group, Practitioner, Organization) the steward responsible for the list
List.entry reason 0..1 CodeableConcept the reason the entity is in the list
List.entry reviewed 0..1 dateTime when the list member was reviewed

NOTE: Non-huddle-specific field names were used to encourage flexibility and potential re-use.

New Huddle Resource

In many ways, creating a new Huddle resource would provide the smoothest path to support huddles. That said, it also strayed the furthest from FHIR and interoperability with other FHIR servers. In the end, Group was close enough to what we needed that we chose not to create our own resource.

Structure

The custom Huddle resource would have looked something like this:

Field Card Type Value / Description
name 0..1 string friendly name, e.g., Hennawi Huddle Feb 2, 2016
team 0..1 Reference(Group, Practitioner, Organization) the team participating in the huddle
scheduled[x] 0..1 dateTime, period the date or period the huddle is scheduled for
status 1..1 code planned
topic 0..* a topic to discuss, currently always a patient
topic.subject 1..1 Reference(Patient) the patient to discuss
topic.reason 0..1 CodeableConcept the reason the topic is in the huddle list
topic.source 0..1 Reference(Practitioner, Device) who added the topic to the list
topic.added 0..1 dateTime when the topic was added to the list
topic.reviewed 0..1 dateTime flag to indicate when the topic was reviewed