-
Notifications
You must be signed in to change notification settings - Fork 9
Representing Huddle Lists
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.
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.
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.
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 |
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"
}
}]
}
In addition to profiling Group, we also considered profiling List, as well as creating our own Huddle
resource.
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.
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.
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.
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 |