From 29a58cb9a38e88e64252366795dc2e8fc5d7ed9f Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Thu, 15 Nov 2018 15:36:56 -0600 Subject: [PATCH 1/8] Propose order-select hook --- docs/hooks/order-select.md | 366 +++++++++++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 docs/hooks/order-select.md diff --git a/docs/hooks/order-select.md b/docs/hooks/order-select.md new file mode 100644 index 00000000..e4a24ae6 --- /dev/null +++ b/docs/hooks/order-select.md @@ -0,0 +1,366 @@ +# `order-select` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 0.1.0 + +## Workflow + +This hook fires when a clinician selects one or more orders to place for a patient. +The `order-select` hook is among the first workflow events for an order entering a draft status. +The context of this hook may include defaulted order details +as it occurs immediately upon the clinician selecting the order from the order catalogue of the CPOE, +but before she manually specifies order details (e.g. dose, quanity, route, etc). +Additionally, the context may include previously selected orders that are not yet signed from the same ordering session. +The `order-select` hook occurs after the clinician selects the order, but before she fills out (configures) the order. + +## Context + +The context of this hook distinguishes between the list of unsigned orders from the clinician's ordering session, and one or orders just added to this list. The `selections` field contains a list of ids of these newly selected orders; the `orders` Bundle contains an entry for all unsigned orders from this session, including newly selected orders. + +Field | Optionality | Prefetch Token | Type | Description +----- | -------- | ---- | ---- | ---- +`userId` | REQUIRED | Yes | *string* | The id of the current user.
For this hook, the user is expected to be of type [Practitioner](https://www.hl7.org/fhir/practitioner.html).
For example, `Practitioner/123` +`patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of the current patient in context +`encounterId` | OPTIONAL | Yes | *string* | The FHIR `Encounter.id` of the current encounter in context +`selections` | REQUIRED | No| *array* | The FHIR id of the newly selected order(s).
The `selections` field references FHIR resources in the `orders` Bundle. For example, `MedicationRequest/103`. +`orders` | REQUIRED | No | *object* | DSTU2 - FHIR Bundle of MedicationOrder, DiagnosticOrder, DeviceUseRequest, ReferralRequest, ProcedureRequest, NutritionOrder, VisionPrescription with _draft_ status
STU3 - FHIR Bundle of MedicationRequest, ReferralRequest, ProcedureRequest, NutritionOrder, VisionPrescription with _draft_ status + + + +### Examples + +### Example (STU3) + +```json +{ + "context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "selections": [ "NutritionOrder/pureeddiet-simple", "MedicationRequest/smart-MedicationRequest-103" ], + "orders":{ + "resourceType":"Bundle", + "entry":[ + { + "resource":{ + "resourceType":"NutritionOrder", + "id":"pureeddiet-simple", + "identifier":[ + { + "system":"http://goodhealthhospital.org/nutrition-requests", + "value":"123" + } + ], + "status":"draft", + "patient":{ + "reference":"Patient/1288992" + }, + "dateTime":"2014-09-17", + "orderer":{ + "reference":"Practitioner/example", + "display":"Dr Adam Careful" + }, + "oralDiet":{ + "type":[ + { + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"226211001", + "display":"Pureed diet" + }, + { + "system":"http://goodhealthhospital.org/diet-type-codes", + "code":"1010", + "display":"Pureed diet" + } + ], + "text":"Pureed diet" + } + ], + "schedule":[ + { + "repeat":{ + "boundsPeriod":{ + "start":"2015-02-10" + }, + "frequency":3, + "period":1, + "periodUnit":"d" + } + } + ], + "texture":[ + { + "modifier":{ + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"228055009", + "display":"Liquidized food" + } + ], + "text":"Pureed" + } + } + ], + "fluidConsistencyType":[ + { + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"439021000124105", + "display":"Dietary liquid consistency - nectar thick liquid" + } + ], + "text":"Nectar thick liquids" + } + ] + }, + "supplement":[ + { + "type":{ + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"442971000124100", + "display":"Adult high energy formula" + }, + { + "system":"http://goodhealthhospital.org/supplement-type-codes", + "code":"1040", + "display":"Adult high energy pudding" + } + ], + "text":"Adult high energy pudding" + }, + "productName":"Ensure Pudding 4 oz container", + "instruction":"Ensure Pudding at breakfast, lunch, supper" + } + ] + } + }, + { + "resource":{ + "resourceType":"MedicationRequest", + "id":"smart-MedicationRequest-103", + "meta":{ + "lastUpdated":"2018-04-30T13:25:40.845-04:00" + }, + "text":{ + "status":"generated", + "div":"
Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension (rxnorm: 617993)
" + }, + "status":"draft", + "intent":"order", + "medicationCodeableConcept":{ + "coding":[ + { + "system":"http://www.nlm.nih.gov/research/umls/rxnorm", + "code":"617993", + "display":"Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + } + ], + "text":"Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "subject":{ + "reference":"Patient/1288992" + }, + "dosageInstruction":[ + { + "text":"5 mL bid x 10 days", + "timing":{ + "repeat":{ + "boundsPeriod":{ + "start":"2005-01-04" + }, + "frequency":2, + "period":1, + "periodUnit":"d" + } + }, + "doseQuantity":{ + "value":5, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + } + } + ], + "dispenseRequest":{ + "numberOfRepeatsAllowed":1, + "quantity":{ + "value":1, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + }, + "expectedSupplyDuration":{ + "value":10, + "unit":"days", + "system":"http://unitsofmeasure.org", + "code":"d" + } + } + } + } + ] + } + } +} +``` + +### Example (DSTU2) + +```json +"context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "selections":[ "NutritionOrder/nest-patient-1-NUTR1", "MedicationOrder/smart-MedicationOrder-103" ], + "orders":{ + "resourceType":"Bundle", + "entry":[ + { + "resource":{ + "resourceType":"NutritionOrder", + "id":"nest-patient-1-NUTR1", + "patient":{ + "reference":"Patient/1288992" + }, + "orderer":{ + "display":"Dr Adam Careful" + }, + "identifier":[ + { + "system":"http://goodhealthhospital.org/nutrition-orders", + "value":"123" + } + ], + "dateTime":"2014-09-17", + "status":"draft", + "oralDiet":{ + "type":[ + { + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"435801000124108", + "display":"Texture modified diet" + }, + { + "system":"http://goodhealthhospital.org/diet-type-codes", + "code":"1010", + "display":"Texture modified diet" + } + ], + "text":"Texture modified diet" + } + ], + "schedule":[ + { + "repeat":{ + "boundsPeriod":{ + "start":"2015-02-10" + }, + "frequency":3, + "period":1, + "periodUnits":"d" + } + } + ], + "texture":[ + { + "modifier":{ + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"228049004", + "display":"Chopped food" + } + ], + "text":"Regular, Chopped Meat" + }, + "foodType":{ + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"22836000", + "display":"Vegetable" + } + ], + "text":"Regular, Chopped Meat" + } + } + ] + } + } + }, + { + "resource":{ + "resourceType":"MedicationOrder", + "id":"smart-MedicationOrder-103", + "status":"draft", + "patient":{ + "reference":"Patient/1288992" + }, + "medicationCodeableConcept":{ + "coding":[ + { + "system":"http://www.nlm.nih.gov/research/umls/rxnorm", + "code":"617993", + "display":"Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + } + ], + "text":"Amoxicillin 120 MG/ML / clavulanate potassium 8.58 MG/ML Oral Suspension" + }, + "dosageInstruction":[ + { + "text":"5 mL bid x 10 days", + "timing":{ + "repeat":{ + "boundsPeriod":{ + "start":"2005-01-04" + }, + "frequency":2, + "period":1, + "periodUnits":"d" + } + }, + "doseQuantity":{ + "value":5, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + } + } + ], + "dispenseRequest":{ + "numberOfRepeatsAllowed":1, + "quantity":{ + "value":1, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + }, + "expectedSupplyDuration":{ + "value":10, + "unit":"days", + "system":"http://unitsofmeasure.org", + "code":"d" + } + } + } + } + ] + } +} +``` + +## Change Log + +Version | Description +---- | ---- +0.1.0 | Initial Release From 61c97c274ce1bfd9cbdd47cad3a47212ec8499c8 Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Thu, 15 Nov 2018 15:40:01 -0600 Subject: [PATCH 2/8] tiny little change small non-functional language change. --- docs/hooks/order-select.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hooks/order-select.md b/docs/hooks/order-select.md index e4a24ae6..6a3ed711 100644 --- a/docs/hooks/order-select.md +++ b/docs/hooks/order-select.md @@ -7,8 +7,8 @@ ## Workflow -This hook fires when a clinician selects one or more orders to place for a patient. -The `order-select` hook is among the first workflow events for an order entering a draft status. +The `order-select` hook fires when a clinician selects one or more orders to place for a patient. +This hook is among the first workflow events for an order entering a draft status. The context of this hook may include defaulted order details as it occurs immediately upon the clinician selecting the order from the order catalogue of the CPOE, but before she manually specifies order details (e.g. dose, quanity, route, etc). From 779a5c315b1cfcdaa404546eda191a87a9955751 Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Mon, 19 Nov 2018 16:44:25 -0600 Subject: [PATCH 3/8] add proposed order-select hook to menu --- mkdocs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/mkdocs.yml b/mkdocs.yml index e00528bd..e20766ec 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -19,6 +19,7 @@ nav: - 'patient-view' : 'hooks/patient-view.md' - 'medication-prescribe' : 'hooks/medication-prescribe.md' - 'order-review' : 'hooks/order-review.md' + - 'order-select' : 'hooks/order-select.md' - Quick Start: 'quickstart.md' - Examples: 'examples.md' - Community: 'community.md' From b551f7ac9bbd099b653fd9ec9fea299112efbf01 Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Wed, 30 Jan 2019 10:32:33 -0600 Subject: [PATCH 4/8] fix mispelling of quantity per Brett's feedback on PR --- docs/hooks/order-select.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hooks/order-select.md b/docs/hooks/order-select.md index 6a3ed711..e3237551 100644 --- a/docs/hooks/order-select.md +++ b/docs/hooks/order-select.md @@ -11,7 +11,7 @@ The `order-select` hook fires when a clinician selects one or more orders to pla This hook is among the first workflow events for an order entering a draft status. The context of this hook may include defaulted order details as it occurs immediately upon the clinician selecting the order from the order catalogue of the CPOE, -but before she manually specifies order details (e.g. dose, quanity, route, etc). +but before she manually specifies order details (e.g. dose, quantity, route, etc). Additionally, the context may include previously selected orders that are not yet signed from the same ordering session. The `order-select` hook occurs after the clinician selects the order, but before she fills out (configures) the order. From b7149de047a20951c1d187ae57b0d4188334d81e Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Wed, 30 Jan 2019 10:39:02 -0600 Subject: [PATCH 5/8] clarify that this hook applies to any type of order (including orders for medications, procedures, labs and other orders) --- docs/hooks/order-select.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/hooks/order-select.md b/docs/hooks/order-select.md index e3237551..21f48bed 100644 --- a/docs/hooks/order-select.md +++ b/docs/hooks/order-select.md @@ -7,7 +7,7 @@ ## Workflow -The `order-select` hook fires when a clinician selects one or more orders to place for a patient. +The `order-select` hook fires when a clinician selects one or more orders to place for a patient, (including orders for medications, procedures, labs and other orders). This hook is among the first workflow events for an order entering a draft status. The context of this hook may include defaulted order details as it occurs immediately upon the clinician selecting the order from the order catalogue of the CPOE, From f12274baf8405898db3db22c0a3d54458d265885 Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Wed, 30 Jan 2019 11:24:27 -0600 Subject: [PATCH 6/8] rename `orders` to `draftOrders` per feedback from review & CDS wg. --- docs/hooks/order-select.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/hooks/order-select.md b/docs/hooks/order-select.md index 21f48bed..9959e962 100644 --- a/docs/hooks/order-select.md +++ b/docs/hooks/order-select.md @@ -17,7 +17,7 @@ The `order-select` hook occurs after the clinician selects the order, but before ## Context -The context of this hook distinguishes between the list of unsigned orders from the clinician's ordering session, and one or orders just added to this list. The `selections` field contains a list of ids of these newly selected orders; the `orders` Bundle contains an entry for all unsigned orders from this session, including newly selected orders. +The context of this hook distinguishes between the list of unsigned orders from the clinician's ordering session, and one or orders just added to this list. The `selections` field contains a list of ids of these newly selected orders; the `draftOrders` Bundle contains an entry for all unsigned orders from this session, including newly selected orders. Field | Optionality | Prefetch Token | Type | Description ----- | -------- | ---- | ---- | ---- @@ -25,7 +25,7 @@ Field | Optionality | Prefetch Token | Type | Description `patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of the current patient in context `encounterId` | OPTIONAL | Yes | *string* | The FHIR `Encounter.id` of the current encounter in context `selections` | REQUIRED | No| *array* | The FHIR id of the newly selected order(s).
The `selections` field references FHIR resources in the `orders` Bundle. For example, `MedicationRequest/103`. -`orders` | REQUIRED | No | *object* | DSTU2 - FHIR Bundle of MedicationOrder, DiagnosticOrder, DeviceUseRequest, ReferralRequest, ProcedureRequest, NutritionOrder, VisionPrescription with _draft_ status
STU3 - FHIR Bundle of MedicationRequest, ReferralRequest, ProcedureRequest, NutritionOrder, VisionPrescription with _draft_ status +`draftOrders` | REQUIRED | No | *object* | DSTU2 - FHIR Bundle of MedicationOrder, DiagnosticOrder, DeviceUseRequest, ReferralRequest, ProcedureRequest, NutritionOrder, VisionPrescription with _draft_ status
STU3 - FHIR Bundle of MedicationRequest, ReferralRequest, ProcedureRequest, NutritionOrder, VisionPrescription with _draft_ status @@ -40,7 +40,7 @@ Field | Optionality | Prefetch Token | Type | Description "patientId":"1288992", "encounterId":"89284", "selections": [ "NutritionOrder/pureeddiet-simple", "MedicationRequest/smart-MedicationRequest-103" ], - "orders":{ + "draftOrders":{ "resourceType":"Bundle", "entry":[ { @@ -220,7 +220,7 @@ Field | Optionality | Prefetch Token | Type | Description "patientId":"1288992", "encounterId":"89284", "selections":[ "NutritionOrder/nest-patient-1-NUTR1", "MedicationOrder/smart-MedicationOrder-103" ], - "orders":{ + "draftOrders":{ "resourceType":"Bundle", "entry":[ { From b19104564f9eac35055a855364b694813a2e8bcf Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Sat, 2 Feb 2019 00:51:55 -0600 Subject: [PATCH 7/8] re-add maturity levels order-select has a maturity level of 1 --- mkdocs.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 0e02531f..f9b52c8f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -16,10 +16,11 @@ nav: - '1.0': 'specification/1.0.md' - Hooks: - 'new-hook-template' : 'hooks/template.md' - - 'patient-view' : 'hooks/patient-view.md' - - 'medication-prescribe' : 'hooks/medication-prescribe.md' - - 'order-review' : 'hooks/order-review.md' - - 'order-select' : 'hooks/order-select.md' + - 'patient-view 4' : 'hooks/patient-view.md' + - 'medication-prescribe 2' : 'hooks/medication-prescribe.md' + - 'order-review 3' : 'hooks/order-review.md' + - 'order-select 1' : 'hooks/order-select.md' + - Quick Start: 'quickstart.md' - Best Practices: 'best-practices.md' - Examples: 'examples.md' From b4b391a327ca186db193f58112e6859a793c82d3 Mon Sep 17 00:00:00 2001 From: Isaac Vetter Date: Fri, 22 Feb 2019 00:43:40 -0600 Subject: [PATCH 8/8] clarify hook can re-fire also change proposed hooks version from 0.1 to 1.0 --- docs/hooks/order-select.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/hooks/order-select.md b/docs/hooks/order-select.md index 9959e962..40cf602b 100644 --- a/docs/hooks/order-select.md +++ b/docs/hooks/order-select.md @@ -3,17 +3,16 @@ | Metadata | Value | ---- | ---- | specificationVersion | 1.0 -| hookVersion | 0.1.0 +| hookVersion | 1.0 ## Workflow -The `order-select` hook fires when a clinician selects one or more orders to place for a patient, (including orders for medications, procedures, labs and other orders). +The `order-select` hook fires when a clinician selects one or more orders to place for a patient, (including orders for medications, procedures, labs and other orders). If supported by the CDS Client, this hook may also be invoked each time the clinician selects a detail regarding the order. This hook is among the first workflow events for an order entering a draft status. The context of this hook may include defaulted order details -as it occurs immediately upon the clinician selecting the order from the order catalogue of the CPOE, -but before she manually specifies order details (e.g. dose, quantity, route, etc). +as it first occurs immediately upon the clinician selecting the order from the order catalogue of the CPOE, or upon her manual selection of order details (e.g. dose, quantity, route, etc). CDS services should expect some of the order information to not yet be specified. Additionally, the context may include previously selected orders that are not yet signed from the same ordering session. -The `order-select` hook occurs after the clinician selects the order, but before she fills out (configures) the order. +The `order-select` hook occurs after the clinician selects the order and before signing. ## Context @@ -363,4 +362,4 @@ Field | Optionality | Prefetch Token | Type | Description Version | Description ---- | ---- -0.1.0 | Initial Release +1.0 | Initial Release