From f7df6383115f82a52ec3b25cdebd29770784f686 Mon Sep 17 00:00:00 2001 From: rizzolol Date: Wed, 6 Mar 2024 10:37:45 -0600 Subject: [PATCH 1/4] small modifications and updates to the publishing tools --- OTHER-cds-hooks.xml | 8 +------- input/pagecontent/hooks.md | 2 -- input/pagecontent/services.md | 1 + input/pagecontent/summary.md | 1 + sushi-config.yaml | 5 +++-- 5 files changed, 6 insertions(+), 11 deletions(-) create mode 100644 input/pagecontent/summary.md diff --git a/OTHER-cds-hooks.xml b/OTHER-cds-hooks.xml index 5ebddac5..3eed5009 100644 --- a/OTHER-cds-hooks.xml +++ b/OTHER-cds-hooks.xml @@ -7,17 +7,11 @@ - - - - - - - + \ No newline at end of file diff --git a/input/pagecontent/hooks.md b/input/pagecontent/hooks.md index dc480fed..13215c93 100644 --- a/input/pagecontent/hooks.md +++ b/input/pagecontent/hooks.md @@ -1,5 +1,3 @@ -## Hooks - ### Overview As a specification, CDS Hooks does not prescribe a default or required set of hooks for implementers. Rather, the set of hooks defined here are merely a set of common use cases that were used to aid in the creation of CDS Hooks. The set of hooks defined here are not a closed set; anyone is able to define new hooks to fit their use cases and propose those hooks to the community. New hooks are proposed in a prescribed [format](#hook-definition-format) using the [documentation template](https://github.com/cds-hooks/docs/wiki/Proposed-Hooks) by submitting a [pull request](https://github.com/cds-hooks/docs/tree/master/docs/hooks) for community feedback. Hooks are [versioned](#hook-version), and mature according to the [Hook Maturity Model](#hook-maturity-model). diff --git a/input/pagecontent/services.md b/input/pagecontent/services.md index 24d0b277..19c154b4 100644 --- a/input/pagecontent/services.md +++ b/input/pagecontent/services.md @@ -58,6 +58,7 @@ Note that a CDS server can host multiple entries of CDS service with the same `i Code | Description ---- | ----------- `200 OK` | A successful response. +`412 Precondition Failed` | The CDS Service is unable to retrieve the necessary FHIR data to execute its decision support, either through a prefetch request or directly calling the FHIR server. {:.grid} CDS Services MAY return other HTTP statuses, specifically 4xx and 5xx HTTP error codes. diff --git a/input/pagecontent/summary.md b/input/pagecontent/summary.md new file mode 100644 index 00000000..9a826342 --- /dev/null +++ b/input/pagecontent/summary.md @@ -0,0 +1 @@ +## This is a test diff --git a/sushi-config.yaml b/sushi-config.yaml index 59d9c68f..6a17cd5d 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -78,10 +78,11 @@ parameters: # ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ menu: Home: index.html - Service interaction: services.html + Service Interaction: services.html Security: security.html - Extensions and data types: extensions-datatypes.html + Extensions and Data Types: extensions-datatypes.html Hooks: hooks.html + Summary: summary.html # ╭───────────────────────────Less Common Implementation Guide Properties──────────────────────────╮ From 6d62f4434d05003915dd53c61338ee776693ceb6 Mon Sep 17 00:00:00 2001 From: rizzolol Date: Thu, 21 Mar 2024 16:21:01 -0500 Subject: [PATCH 2/4] adding hooks --- input/pagecontent/hook-definitions.md | 2079 +++++++++++++++++++++++++ input/pagecontent/hooks.md | 2 +- sushi-config.yaml | 2 +- 3 files changed, 2081 insertions(+), 2 deletions(-) create mode 100644 input/pagecontent/hook-definitions.md diff --git a/input/pagecontent/hook-definitions.md b/input/pagecontent/hook-definitions.md new file mode 100644 index 00000000..d477b561 --- /dev/null +++ b/input/pagecontent/hook-definitions.md @@ -0,0 +1,2079 @@ +### `allergyintolerance-create` + +| Metadata | Value | +| ---- | ---- | +| specificationVersion | 1.0 | +| hookVersion | 0.1.0 | +| hookMaturity | 1 - Submitted | +{:.grid} + +#### Workflow + +The `allergyintolerance-create` hook fires when when a clinician adds a new allergy or intolerance to a patient's list of allergies. +This hook fires during the act of finalizing the entry of a new allergy, such that the decision support returned from the CDS Service can guide the clinician to cancel the addition of the allergy. The context of the hook include the AllergyIntolerance resource that's about to be added to the patient's list of allergies. + +#### Context + +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 +`allergyIntolerance` | REQUIRED | No | *object* | R4/STU3/DSTU2 - FHIR AllergyIntolerance instance + + +#### Example + +##### Example (R4) + +```json +{ + "context": { + "userId": "Practitioner/123", + "patientId": "1288992", + "encounterId": "89284", + "allergyIntolerance": { + "resource": { + "resourceType": "AllergyIntolerance", + "id": "RES163672", + "clinicalStatus": "active", + "verificationStatus": "confirmed", + "type": "allergy", + "category": [ + "food" + ], + "criticality": "high", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "424213003", + "display": "Allergy to bee venom" + } + ] + }, + "patient": { + "reference": "Patient/1288992" + }, + "assertedDate": "2018-11-15T07:05:57-05:00" + } + } + } +} +``` + + +##### Example (STU3) + +```json +{ + "context": { + "userId": "Practitioner/123", + "patientId": "1288992", + "encounterId": "89284", + "allergyIntolerances": { + "resourceType": "Bundle", + "entry": [ + { + "resource": { + "resourceType": "AllergyIntolerance", + "id": "RES163672", + "clinicalStatus": "active", + "verificationStatus": "confirmed", + "type": "allergy", + "category": [ + "food" + ], + "criticality": "high", + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "424213003", + "display": "Allergy to bee venom" + } + ] + }, + "patient": { + "reference": "Patient/1288992" + }, + "assertedDate": "2018-11-15T07:05:57-05:00" + } + } + ] + } + } +} +``` + +##### Example (DSTU2) + +```json +{ + "context": { + "userId": "Practitioner/123", + "patientId": "1288992", + "encounterId": "89284", + "allergyIntolerances": { + "resourceType": "Bundle", + "entry": [ + { + "resource": { + "resourceType": "AllergyIntolerance", + "id": "RES443610", + "recordedDate": "1992-05-28T17:22:05-04:00", + "patient": { + "reference": "Patient/1288992" + }, + "substance": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "424213003", + "display": "Allergy to bee venom" + } + ] + }, + "status": "active", + "criticality": "low", + "type": "allergy", + "category": "food" + } + } + ] + } + } +} +``` + +#### Change Log + +Version | Description +---- | ---- +0.1.0 | Initial Release + +### `appointment-book` + +!!! info "Looking for Feedback" + **Hey implementers, we want to hear from you!**
+ - What obstacles are there to limiting this hook to firing only when the appointment is confirmed or finalized as booked?
+ - For which users should this hook fire?
+ - Many appointments are scheduled directly into the EHR by the patient, without provider staff involvement ... + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) + +#### Workflow + +This hook is invoked when the user is scheduling one or more future encounters/visits for the patient. For example, the `appointment-book` hook may be triggered for an appointment with the appointment creator, a clinician within the same organization as the appointment creator or even for an appointment outside the creator's organization. It may be invoked at the start and end of the booking process and/or any time between those two points. This hook enables CDS Services to intervene in the decision of when future appointments should be scheduled, where they should be scheduled, what services should be booked, to identify actions that need to occur prior to scheduled appointments, etc. + +#### Context + +The Patient whose appointment(s) are being booked, as well as the proposed Appointment records. + +Field | Optionality | Prefetch Token | Type | Description +----- | -------- | ---- | ---- | ---- +`userId` | REQUIRED | Yes | *string* | The id of the current user.
For this hook, the user could be of type [Practitioner](https://www.hl7.org/fhir/practitioner.html), [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html), [Patient](https://www.hl7.org/fhir/patient.html), or [RelatedPerson](https://www.hl7.org/fhir/relatedperson.html).
For example, `PractitionerRole/123`. Patient or RelatedPerson are appropriate when a patient or their proxy are booking the appointment. +`patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of Patient appointment(s) is/are for +`encounterId` | OPTIONAL | Yes | *string* | The FHIR `Encounter.id` of Encounter where booking was initiated +`appointments` | REQUIRED | No | *object* | DSTU2/STU3/R4 - FHIR Bundle of Appointments in 'proposed' state + + +#### Examples + +##### Examples (STU3) + +```json +"context":{ + "userId" : "PractitionerRole/A2340113", + "patientId" : "1288992", + "appointments" : [ + { + "resourceType": "Appointment", + "id": "apt1", + "status": "proposed", + "serviceType": [ + { + "coding": [ + { + "code": "183", + "display": "Sleep Medicine" + } + ] + } + ], + "appointmentType": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0276", + "code": "FOLLOWUP", + "display": "A follow up visit from a previous appointment" + } + ] + }, + "reason": { + "coding": { + "system": "", + "code": "1023001", + "display": "Apnea" + } + }, + "description": "CPAP adjustments", + "start": "2019-08-10T09:00:00-06:00", + "end": "2019-08-10T09:10:00:00-06:00", + "created": "2019-08-01", + "participant": [ + { + "actor": { + "reference": "Patient/example", + "display": "Peter James Chalmers" + }, + "required": "required", + "status": "tentative" + }, + { + "actor": { + "reference": "Practitioner/example", + "display": "Dr Adam Careful" + }, + "required": "required", + "status": "accepted" + } + ] + }, + { + "resourceType": "Appointment", + "id": "apt1", + "status": "proposed", + "appointmentType": { + "coding": [ + { + "system": "http://hl7.org/fhir/v2/0276", + "code": "CHECKUP", + "display": "A routine check-up, such as an annual physical" + } + ] + }, + "description": "Regular physical", + "start": "2020-08-01T13:00:00-06:00", + "end": "2020-08-01T13:30:00:00-06:00", + "created": "2019-08-01", + "participant": [ + { + "actor": { + "reference": "Patient/example", + "display": "Peter James Chalmers" + }, + "required": "required", + "status": "tentative" + }, + { + "actor": { + "reference": "Practitioner/example", + "display": "Dr Adam Careful" + }, + "required": "required", + "status": "accepted" + } + ] + } + ] +} +``` + +```json +"context":{ + "userId" : "PractitionerRole/A2340113", + "patientId" : "1288992", + "encounterId" : "456", + "appointments" : [ + { + "resourceType": "Appointment", + "id": "example", + "text": { + "status": "generated", + "div": "
Brian MRI results discussion
" + }, + "status": "proposed", + "serviceCategory": { + "coding": [ + { + "system": "http://example.org/service-category", + "code": "gp", + "display": "General Practice" + } + ] + }, + "serviceType": [ + { + "coding": [ + { + "code": "52", + "display": "General Discussion" + } + ] + } + ], + "specialty": [ + { + "coding": [ + { + "system": "http://example.org/specialty", + "code": "gp", + "display": "General Practice" + } + ] + } + ], + "appointmentType": { + "coding": [ + { + "system": "http://example.org/appointment-type", + "code": "follow", + "display": "Followup" + } + ] + }, + "indication": [ + { + "reference": "Condition/example", + "display": "Severe burn of left ear" + } + ], + "priority": 5, + "description": "Discussion on the results of your recent MRI", + "start": "2013-12-10T09:00:00Z", + "end": "2013-12-10T11:00:00Z", + "created": "2013-10-10", + "comment": "Further expand on the results of the MRI and determine the next actions that may be appropriate.", + "incomingReferral": [ + { + "reference": "ReferralRequest/example" + } + ], + "participant": [ + { + "actor": { + "reference": "Patient/example", + "display": "Peter James Chalmers" + }, + "required": "required", + "status": "tentative" + }, + { + "type": [ + { + "coding": [ + { + "system": "http://hl7.org/fhir/v3/ParticipationType", + "code": "ATND" + } + ] + } + ], + "actor": { + "reference": "Practitioner/example", + "display": "Dr Adam Careful" + }, + "required": "required", + "status": "accepted" + }, + { + "actor": { + "reference": "Location/1", + "display": "South Wing, second floor" + }, + "required": "required", + "status": "action-needed" + } + ] + } + ] +} +``` + +#### Change Log + +Version | Description +---- | ---- +1.0 | Initial Release + +### `encounter-discharge` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) + +#### Workflow + +This hook is invoked when the user is performing the discharge process for an encounter where the notion of 'discharge' is relevant - typically an inpatient encounter. It may be invoked at the start and end of the discharge process or any time between those two points. It allows hook services to intervene in the decision of whether discharge is appropriate, to verify discharge medications, to check for continuity of care planning, to ensure necessary documentation is present for discharge processing, etc. + +#### Context + +The patient who is being discharged and the encounter being ended. + +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) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).
For example, `Practitioner/123` +`patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of the being discharged +`encounterId` | REQUIRED | Yes | *string* | The FHIR `Encounter.id` of the Encounter being ended + +#### Examples + +```json +"context":{ + "userId" : "PractitionerRole/A2340113", + "patientId" : "1288992", + "encounterId" : "456" +} +``` + +#### Change Log + +Version | Description +---- | ---- +1.0 | Initial Release + +### `encounter-start` + +!!! info "Looking for Feedback" + **Hey implementers, we want to hear from you!**
+ - What's the greatest opportunity for delivering remote CDS at the start of an encounter?
+ - For which users should this hook fire?
+ - When in a hospitalization workflow, an ambulatory workflow, does an encounter start?
+ - How many and what types of encounters are there in a single hospitalization, a single ambulatory visit?
+ - Is there value in an encounter start hook pairing with an (typically inpatient) encounter discharge hook?
+ - Please explain your encounter workflow.
+ +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| hookMaturity | 1 - Submitted + +#### Workflow + +This hook is invoked when the user is initiating a new encounter. In an inpatient setting, this would be the time of admission. In an outpatient/community environment, this would be the time of patient-check-in for a face-to-face or equivalent for a virtual/telephone encounter. The Encounter should either be in one of the following states: `planned` | `arrived` | `triaged` | `in-progress`. Note that there can be multiple 'starts' for the same encounter as each user becomes engaged. For example, when a scheduled encounter is presented at the beginning of the day for planning purposes, when the patient arrives, when the patient first encounters a clinician, etc. Hooks may present different information depending on user role and Encounter.status. + +Note: This is distinct from the `patient-view` hook which occurs any time the patient's record is looked at - which might be done outside the context of any encounter and will often occur during workflows that are not linked to the initiation of an encounter. + +The intention is that the cards from any invoked CDS Services are available at the time when decisions are being made about what actions are going to occur during this encounter. For example, identifying that the patient is due for certain diagnostic tests or interventions, identifying additional information that should be collected to comply with protocols associated with clinical studies the patient is enrolled in, identifying any documentation or other requirements associated with patient insurance, etc. + +#### Context + +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) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).
For example, `PractitionerRole/123` +`patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of the Patient the Encounter is for +`encounterId` | REQUIRED | Yes | *string* | The FHIR `Encounter.id` of the Encounter being started + +#### Examples + +```json +"context":{ + "userId" : "PractitionerRole/A2340113", + "patientId" : "1288992", + "encounterId" : "456" +} +``` + +#### Change Log + +Version | Description +---- | ---- +1.0 | Initial Release + +### `medication-refill` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 2.0 +| hookVersion | 0.1.0 +| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) + +#### Workflow + +The `medication-refill` hook fires when a medication refill request for an existing prescription of a specific medication is received. A refill request may be made as part of an encounter or out-of-band through a pharmacy or patient portal. Since a prescription refill is requested outside of the prescriber's workflow, there often is not a user in context. Similarly, the encounter may be an auto-generated refill encounter or there may not be an encounter in context when the refill request is received. A CDS service may use this hook to deliver medication refill protocol guidance to a clinician. Given the asynchronous workflow of refill requests, the guidance returned by the service may be viewed immediately, or not. + +This hook does not fire for an initial prescription (see order-sign). "Re-prescribing" or replacing a previously active prescription with a new perscription for the same medication does not fire the medication-refill. + +#### Context + +The set of medications in the process of being refilled. All FHIR resources in this context MUST be based on the same FHIR version. All FHIR resources in the medications object MUST have a status of _draft_. + +Field | Optionality | Prefetch Token | Type | Description +----- | -------- | ---- | ---- | ---- +`userId` | OPTIONAL | Yes | *string* | In the case when this field is empty, consider the FHIR resource's requestor and recorder elements.
The id of the current user entering the refill request within the CPOE. For this hook, the user is expected to be of type Practitioner or PractitionerRole. For example, PractitionerRole/123 or Practitioner/abc. +`patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of the current patient in context +`encounterId` | OPTIONAL | Yes | *string* | The FHIR `Encounter.id` of the encounter associated with the refill of the prescription. +`medications` | REQUIRED | No | *object* | R4 - FHIR Bundle of _draft_, _order_ MedicationRequest resources + +#### Examples + +##### Example (R4) + +```json +{ + "context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "medications":{ + "resourceType":"Bundle", + "entry":[ + { + "resource":{ + "resourceType":"MedicationRequest", + "id":"smart-MedicationRequest-104", + "status":"draft", + "intent":"order", + "medicationReference": { + "reference": "Medication/eFnx9hyX.YTNJ407PR9g4zpiT8lXCElOXkldLgGDYrAU-fszvYmrUZlYzRfJl-qKj3", + "display": "oxybutynin (DITROPAN XL) CR tablet" + }, + "subject":{ + "reference":"Patient/1288992" + }, + "dosageInstruction":[ + { + "text":"15 mL daily x 3 days", + "timing":{ + "repeat":{ + "boundsPeriod":{ + "start":"2005-01-18" + }, + "frequency":1, + "period":1, + "periodUnit":"d" + } + }, + "doseQuantity":{ + "value":15, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + } + } + ], + "dispenseRequest":{ + "numberOfRepeatsAllowed":1, + "quantity":{ + "value":1, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + }, + "expectedSupplyDuration":{ + "value":3, + "unit":"days", + "system":"http://unitsofmeasure.org", + "code":"d" + } + } + } + } + ] + } + } +} +``` + +##### Example (DSTU2) + +```json +{ + "context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "medications":{ + "resourceType":"Bundle", + "entry":[ + { + "resource":{ + "resourceType":"MedicationOrder", + "id":"smart-MedicationOrder-104", + "status":"draft", + "patient":{ + "reference":"Patient/1288992" + }, + "medicationCodeableConcept":{ + "coding":[ + { + "system":"http://www.nlm.nih.gov/research/umls/rxnorm", + "code":"211307", + "display":"Azithromycin 20 MG/ML Oral Suspension [Zithromax]" + } + ], + "text":"Azithromycin 20 MG/ML Oral Suspension [Zithromax]" + }, + "dosageInstruction":[ + { + "text":"15 mL daily x 3 days", + "timing":{ + "repeat":{ + "boundsPeriod":{ + "start":"2005-01-18" + }, + "frequency":1, + "period":1, + "periodUnits":"d" + } + }, + "doseQuantity":{ + "value":15, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + } + } + ], + "dispenseRequest":{ + "numberOfRepeatsAllowed":1, + "quantity":{ + "value":1, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + }, + "expectedSupplyDuration":{ + "value":3, + "unit":"days", + "system":"http://unitsofmeasure.org", + "code":"d" + } + } + } + } + ] + } + } +} +``` + +#### Change Log + +Version | Description +---- | ---- +0.1.0 | Initial Release + +### `order-dispatch` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 2.0 +| hookVersion | 1.1 +| hookMaturity | [0 - Draft](../../specification/current/#hook-maturity-model) + +#### Workflow + +The `order-dispatch` hook fires when a practitioner is selecting a candidate performer for a pre-existing order or (set of orders) that was not assigned to a specific performer. For example, selecting an imaging center to satisfy a radiology order, selecting a cardiologist to satisfy a referral, etc. This hook only occurs in situations where the order is agnostic as to who the performer should be and a separate process (which might be performed by back-office staff, a central dispatch service, or even the ordering clincian themselves at a later time) is used to select and seek action by a specific performer. It is possible that the same order might be dispatched multiple times, either because initial selected targets refuse or are otherwise unable to satisfy the order, or because the performer is only asked to perform a 'portion' of what's authorized (the first monthly lab test of a year-long set, the first dispense of a 6 month order, etc.). Note that the order isn't updated to include the performer in this situation, as the authorization of who could theoretically perform the order isn't changed by seeking fulfillment by a specific provider. + +This "request for fulfillment" process is typically represented in FHIR using [Task](http://hl7.org/fhir/task.html). This resource allows identifying the order to be acted upon, who is being asked to act on it, the time-period in which they're expected to act, and any limitations/qualifications to 'how much' of the order should be acted on. + +Decision support that may be relevant for this hook might include information related to coverage, prior-authorization and/or in-network/out-of-network evaluations with respect to the chosen performer; determination of practitioner availability or qualification; enforcement/guidance with respect to patient performer preferences; etc. + +#### Context + +Field | Optionality | Prefetch Token | Type | Description +----- | -------- | ---- | ---- | ---- +`patientId` | REQUIRED | Yes | *string* | The FHIR `Patient.id` of the current patient in context +`dispatchedOrders` | REQUIRED | Yes | *array* | Collection of the FHIR local references for the Request resource(s) for which fulfillment is sought E.g. `ServiceRequest/123` +`performer` | REQUIRED | Yes | *string* | The FHIR local reference for the Practitioner, PractitionerRole, Organization, CareTeam, etc. who is being asked to execute the order. E.g. `Practitioner/456` +`fulfillmentTasks` | OPTIONAL | No | *array* | DSTU2/STU3/R4/R5 - Collection of the Task instances (as objects) that provides a full description of the fulfillment request - including the timing and any constraints on fulfillment. If Tasks are provided, each will be for a separate order and SHALL reference one of the dispatched-orders. + +#### Examples +##### Example (R4) + +```json +"context":{ + "patientId" : "1288992", + "dispatched-orders" : ["ServiceRequest/proc002"], + "performer" : "Organization/some-performer", + "fulfillment-tasks" : [{ + "resourceType" : "Task", + "status" : "draft", + "intent" : "order", + "code" : { + "coding" : [{ + "system" : "http://hl7.org/fhir/CodeSystem/task-code", + "code" : "fulfill" + }] + }, + "focus" : { + "reference" : "ServiceRequest/proc002" + }, + "for" : { + "reference" : "Patient/1288992" + }, + "authoredOn" : "2016-03-10T22:39:32-04:00", + "lastModified" : "2016-03-10T22:39:32-04:00", + "requester": { + "reference" : "Practitioner/456" + }, + "owner" : { + "reference" : "Organziation/some-performer" + } + }] +} +``` + +#### Change Log + +Version | Description +---- | ---- +1.0 | Initial Release +1.1 | Adjusted context names and cardinalities based on feedback + +### `order-select` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| Hook maturity | [4 - Documented](../../specification/current/#hook-maturity-model) + +#### Workflow + +The order-select hook occurs after the clinician selects the order and before signing. + +This hook occurs when a clinician initially selects one or more new orders from a list of potential orders for a specific patient (including orders for medications, procedures, labs and other orders). The newly selected order defines that medication, procedure, lab, etc, but may or may not define the additional details necessary to finalize the order. + +`order-select` is among the first workflow events for an order entering a draft status. The context of this hook may include defaulted order details 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. + +This hook is intended to replace (deprecate) the medication-prescribe hook. + +![Ordering Flow Diagram](../images/orderingflow.png) + +#### Context + +Decision support should focus on the 'selected' orders - those that are newly selected or currently being authored. The non-selected orders are included in the context to provide context and to allow decision support to take into account other pending actions that might not yet be stored in the system (and therefore not queryable). +The context of this hook distinguishes between the list of unsigned orders from the clinician's ordering session, and the one or more 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 +----- | -------- | ---- | ---- | ---- +`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) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).
For example, `PractitionerRole/123` or `Practitioner/abc`. +`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 `draftOrders` Bundle. For example, `MedicationRequest/103`. +`draftOrders` | REQUIRED | No | *object* | A Bundle of FHIR request resources with a draft status, representing orders that aren't yet signed from the current ordering session. + +#### A Note Concerning FHIR Versions + +CDS Hooks is designed to be agnostic of FHIR version. For example, all versions of FHIR can represent in-progress orders but over time, the specific resource name and some of the important elements have changed. Below are some of the mosty commonly used FHIR resources for representing an order in CDS Hooks. This list is intentionally not comprehensive. +* DSTU2 - FHIR Bundle of MedicationOrder, ProcedureRequest +* STU3 - FHIR Bundle of MedicationRequest, ProcedureRequest +* R4 - FHIR Bundle of MedicationRequest, ServiceRequest + +#### Examples + +##### Example (R4) + +```json +{ + "context":{ + "userId":"PractitionerRole/123", + "patientId":"1288992", + "encounterId":"89284", + "selections": [ "NutritionOrder/pureeddiet-simple", "MedicationRequest/smart-MedicationRequest-103" ], + "draftOrders":{ + "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" + } + }, + "doseAndRate":{ + "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 (STU3) + +```json +{ + "context":{ + "userId":"Practitioner/example", + "patientId":"1288992", + "encounterId":"89284", + "selections": [ "NutritionOrder/pureeddiet-simple", "MedicationRequest/smart-MedicationRequest-103" ], + "draftOrders":{ + "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/example", + "patientId":"1288992", + "encounterId":"89284", + "selections":[ "NutritionOrder/nest-patient-1-NUTR1", "MedicationOrder/smart-MedicationOrder-103" ], + "draftOrders":{ + "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 +---- | ---- +1.0 | Initial Release +1.0.1 | Small documentation correction +1.0.2 | Add DeviceRequest to list of order resources for R4. + +### `order-sign` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| Hook maturity | [5 - Mature](../../specification/current/#hook-maturity-model) + +#### Workflow + +The `order-sign` hook fires when a clinician is ready to sign one or more orders for a patient, (including orders for medications, procedures, labs and other orders). +This hook is among the last workflow events before an order is promoted out of a draft status. +The context contains all order details, such as dose, quantity, route, etc, +although the order has not yet been signed and therefore still exists in a draft status. +Use this hook when your service requires all order details. + +This hook can also be used when an order or set of orders is being 're-signed' after revision (e.g. change +to status, extending dates, or other changes allowed to signed orders within the system's workflow). In this +case, the orders would typically have a status other than 'draft'. In some cases, the hook might fire with a +mixture of new and revised orders. + +This hook is intended to replace (deprecate) the `medication-prescribe` and `order-review` hooks. + +![Ordering Flow Diagram](../images/orderingflow.png) + +#### Context + +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) or [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html).
For example, `PractitionerRole/123` or `Practitioner/abc`. +`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 +`draftOrders` | REQUIRED | No | *object* | A Bundle of FHIR request resources with a draft status, representing orders that aren't yet signed from the current ordering session. + +#### A Note Concerning FHIR Versions + +CDS Hooks is designed to be agnostic of FHIR version. For example, all versions of FHIR can represent in-progress orders but over time, the specific resource name and some of the important elements have changed. Below are some of the mosty commonly used FHIR resources for representing an order in CDS Hooks. This list is intentionally not comprehensive. +* DSTU2 - FHIR Bundle of MedicationOrder, ProcedureRequest +* STU3 - FHIR Bundle of MedicationRequest, ProcedureRequest +* R4 - FHIR Bundle of MedicationRequest, ServiceRequest + +#### Examples + +##### Example (R4) + +```json +{ + "context":{ + "userId":"PractitionerRole/123", + "patientId":"1288992", + "encounterId":"89284", + "draftOrders":{ + "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 (STU3) + +```json +{ + "context":{ + "userId":"Practitioner/example", + "patientId":"1288992", + "encounterId":"89284", + "draftOrders":{ + "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" + } + }, + "doseAndRate":{ + "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/abc", + "patientId":"1288992", + "encounterId":"89284", + "draftOrders":{ + "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 +---- | ---- +1.0 | Initial Release +1.0.1 | Add DeviceRequest to list of order resources for R4. +1.1.0 | Updated hook to all for use in order-revision situations + +### `patient-view` + +!!! info + This page defines a workflow [hook](../../specification/current/#hooks) for the purpose of providing clinical decision support using CDS Hooks. This is a **build** at the level of **[Trial Use](http://hl7.org/fhir/versions.html#std-processs)**. + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| hookMaturity | [5 - Mature](../../specification/1.0/#hook-maturity-model) + +#### Workflow + +The user has just opened a patient's record; typically called only once at the beginning of a user's interaction with a specific patient's record. + +#### Context + +The patient whose record was opened, including their encounter, if applicable. + +Field | Optionality | Prefetch Token | Type | Description +----- | -------- | ---- | ---- | ---- +`userId` | REQUIRED | Yes | *string* | The id of the current user. Must be in the format `[ResourceType]/[id]`.
For this hook, the user is expected to be of type [Practitioner](https://www.hl7.org/fhir/practitioner.html), [PractitionerRole](https://www.hl7.org/fhir/practitionerrole.html), [Patient](https://www.hl7.org/fhir/patient.html), or [RelatedPerson](https://www.hl7.org/fhir/relatedperson.html).
Patient or RelatedPerson are appropriate when a patient or their proxy are viewing the record.
For example, Practitioner/abc or Patient/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 + +#### Examples + +```json +"context":{ + "userId" : "PractitionerRole/123", + "patientId" : "1288992" +} +``` + +```json +"context":{ + "userId" : "Practitioner/abc", + "patientId" : "1288992", + "encounterId" : "456" +} +``` + +#### Change Log + +Version | Description +---- | ---- +1.0 | Initial Release + +### `problem-list-item-create` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 0.1.0 +| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) + +#### Workflow + +The `problem-list-item-create` hook fires once a clinician has added one or more new problems to a patient's problem list. +This hook may fire with one or more newly added conditions of category `problem-list-item` that are newly finalized. +The context of the hook includes these new conditions. Note that this hook occurs once the new problem(s) is finalized; thereby enabling the CDS Service to recommend actions related to the problem in lieu of suggesting modifications to the newly created problem. + +#### Context + +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) or [PractitionerRole](https://www.hl7.org/fhir/practitioner.html).
For example, PractitionerRole/123 or Practitioner/abc. +`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 +`conditions` | REQUIRED | No | *object* | DSTU2 - FHIR Bundle of Conditions where `category` is `problem-list-item`
STU3 - FHIR Bundle of Conditions where `category` is `problem-list-item`
R4 - FHIR Bundle of Conditions where `category` is `problem-list-item` + +#### Examples + +##### Example (R4) + +```json +{ + "context": { + "userId": "Practitioner/123", + "patientId": "1288992", + "encounterId": "89284", + "conditions": { + "resourceType": "Bundle", + "entry": [ + { + "resource": { + "resourceType": "Condition", + "id": "3a14127f", + "category": "problem-list-item", + "clinicalStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "code": "active" + } + ] + }, + "verificationStatus": { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", + "code": "confirmed" + } + ] + }, + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "16114001", + "display": "Fracture of ankle" + } + ], + "text": "Fracture of ankle" + }, + "subject": { + "reference": "Patient/1288992" + }, + "onsetDateTime": "2018-10-15T04:13:17-04:00", + "assertedDate": "2018-11-15" + } + } + ] + } + } +} +``` + +##### Example (STU3) + +```json +{ + "context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "conditions":{ + "resourceType":"Bundle", + "entry":[ + { + "resource":{ + "resourceType":"Condition", + "id":"3a14127f", + "category":"problem-list-item", + "clinicalStatus":"active", + "verificationStatus":"confirmed", + "code":{ + "coding":[ + { + "system":"http://snomed.info/sct", + "code":"16114001", + "display":"Fracture of ankle" + } + ], + "text":"Fracture of ankle" + }, + "subject":{ + "reference":"Patient/1288992" + }, + "onsetDateTime":"2018-10-15T04:13:17-04:00", + "assertedDate":"2018-11-15" + } + } + ] + } + } +} +``` + +##### Example (DSTU2) + +```json +{ + "context": { + "userId": "Practitioner/123", + "patientId": "1288992", + "encounterId": "89284", + "conditions": { + "resourceType": "Bundle", + "entry": [ + { + "resource": { + "resourceType": "Condition", + "id": "smart-Condition-548", + "category": { + "text": "Problem", + "coding": [ + { + "system": "http://argonautwiki.hl7.org/extension-codes", + "code": "problem", + "display": "Problem" + } + ] + }, + "text": { + "status": "generated", + "div": "
Vitamin D deficiency
" + }, + "patient": { + "reference": "Patient/1288992" + }, + "code": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "34713006", + "display": "Vitamin D deficiency" + } + ], + "text": "Vitamin D deficiency" + }, + "clinicalStatus": "active", + "verificationStatus": "confirmed", + "onsetDateTime": "2018-11-15" + } + } + ] + } + } +} +``` + +#### Change Log + +Version | Description +---- | ---- +0.1.0 | Initial Release \ No newline at end of file diff --git a/input/pagecontent/hooks.md b/input/pagecontent/hooks.md index 13215c93..2727166d 100644 --- a/input/pagecontent/hooks.md +++ b/input/pagecontent/hooks.md @@ -177,4 +177,4 @@ Version | Description ---- | ---- 1.1 | Added new context variable 1.0.1 | Clarified context variable usage -1.0 | Initial Release +1.0 | Initial Release \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml index 6a17cd5d..c02a7fe8 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -81,8 +81,8 @@ menu: Service Interaction: services.html Security: security.html Extensions and Data Types: extensions-datatypes.html + Hook Definition: hook-definitions.html Hooks: hooks.html - Summary: summary.html # ╭───────────────────────────Less Common Implementation Guide Properties──────────────────────────╮ From 33af9e5fd8de6dfdbffb3e6eac6d0b88a9572d7c Mon Sep 17 00:00:00 2001 From: rizzolol Date: Fri, 22 Mar 2024 09:27:25 -0500 Subject: [PATCH 3/4] add deprecated hooks --- OTHER-cds-hooks.xml | 1 + input/pagecontent/hook-definitions.md | 685 +++++++++++++++++++++++++- 2 files changed, 685 insertions(+), 1 deletion(-) diff --git a/OTHER-cds-hooks.xml b/OTHER-cds-hooks.xml index 3eed5009..883bb154 100644 --- a/OTHER-cds-hooks.xml +++ b/OTHER-cds-hooks.xml @@ -9,6 +9,7 @@ + diff --git a/input/pagecontent/hook-definitions.md b/input/pagecontent/hook-definitions.md index d477b561..c4ec96c8 100644 --- a/input/pagecontent/hook-definitions.md +++ b/input/pagecontent/hook-definitions.md @@ -1,3 +1,11 @@ +## Overview + +ISAAC TO ADD DETAIL + +## Active Hooks + +ISAAC TO ADD DETAIL + ### `allergyintolerance-create` | Metadata | Value | @@ -2076,4 +2084,679 @@ Field | Optionality | Prefetch Token | Type | Description Version | Description ---- | ---- -0.1.0 | Initial Release \ No newline at end of file +0.1.0 | Initial Release + +## Deprecated Hooks + +ISAAC TO ADD DETAIL + +### `medication-prescribe` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| Hook maturity | [2 - Tested](../../specification/1.0/#hook-maturity-model) + + +#### Deprecation Notice + +This hook is deprecated in favor of the `order-select` and `order-sign` hooks, with the goal of clarifying workflow trigger points and supporting orders beyond medications. In this refactoring, `medication-prescribe` and `order-review` hooks are being deprecated in favor of newly created [`order-select`](../order-select) and [`order-sign`](../order-sign) hooks. This notice is a placeholder to this effect while CDS Hooks determines the [appropriate process for deprecating hooks](https://github.com/cds-hooks/docs/issues/433). + +#### Workflow + +The user is in the process of prescribing one or more new medications. + +#### Context + +The set of medications proposed or in progress of being prescribed. All FHIR resources in this context MUST be based on the same FHIR version. All FHIR resources in the medications object MUST have a status of _draft_. + +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 +`medications` | REQUIRED | No | *object* | DSTU2 - FHIR Bundle of _draft_ MedicationOrder resources
STU3 - FHIR Bundle of _draft_ MedicationRequest resources + +#### Examples + +##### Example (STU3) + +```json +{ + "context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "medications":{ + "resourceType":"Bundle", + "entry":[ + { + "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" + } + } + } + }, + { + "resource":{ + "resourceType":"MedicationRequest", + "id":"smart-MedicationRequest-104", + "meta":{ + "lastUpdated":"2018-04-30T13:26:48.124-04:00" + }, + "text":{ + "status":"generated", + "div":"
Azithromycin 20 MG/ML Oral Suspension [Zithromax] (rxnorm: 211307)
" + }, + "status":"draft", + "intent":"order", + "medicationCodeableConcept":{ + "coding":[ + { + "system":"http://www.nlm.nih.gov/research/umls/rxnorm", + "code":"211307", + "display":"Azithromycin 20 MG/ML Oral Suspension [Zithromax]" + } + ], + "text":"Azithromycin 20 MG/ML Oral Suspension [Zithromax]" + }, + "subject":{ + "reference":"Patient/1288992" + }, + "dosageInstruction":[ + { + "text":"15 mL daily x 3 days", + "timing":{ + "repeat":{ + "boundsPeriod":{ + "start":"2005-01-18" + }, + "frequency":1, + "period":1, + "periodUnit":"d" + } + }, + "doseQuantity":{ + "value":15, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + } + } + ], + "dispenseRequest":{ + "numberOfRepeatsAllowed":1, + "quantity":{ + "value":1, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + }, + "expectedSupplyDuration":{ + "value":3, + "unit":"days", + "system":"http://unitsofmeasure.org", + "code":"d" + } + } + } + } + ] + } + } +} +``` + +##### Example (DSTU2) + +```json +{ + "context":{ + "userId":"Practitioner/123", + "patientId":"1288992", + "encounterId":"89284", + "medications":{ + "resourceType":"Bundle", + "entry":[ + { + "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" + } + } + } + }, + { + "resource":{ + "resourceType":"MedicationOrder", + "id":"smart-MedicationOrder-104", + "status":"draft", + "patient":{ + "reference":"Patient/1288992" + }, + "medicationCodeableConcept":{ + "coding":[ + { + "system":"http://www.nlm.nih.gov/research/umls/rxnorm", + "code":"211307", + "display":"Azithromycin 20 MG/ML Oral Suspension [Zithromax]" + } + ], + "text":"Azithromycin 20 MG/ML Oral Suspension [Zithromax]" + }, + "dosageInstruction":[ + { + "text":"15 mL daily x 3 days", + "timing":{ + "repeat":{ + "boundsPeriod":{ + "start":"2005-01-18" + }, + "frequency":1, + "period":1, + "periodUnits":"d" + } + }, + "doseQuantity":{ + "value":15, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + } + } + ], + "dispenseRequest":{ + "numberOfRepeatsAllowed":1, + "quantity":{ + "value":1, + "unit":"mL", + "system":"http://unitsofmeasure.org", + "code":"mL" + }, + "expectedSupplyDuration":{ + "value":3, + "unit":"days", + "system":"http://unitsofmeasure.org", + "code":"d" + } + } + } + } + ] + } + } +} +``` + +#### Change Log + +Version | Description +---- | ---- +1.0 | Initial Release + +### `order-review` + +| Metadata | Value +| ---- | ---- +| specificationVersion | 1.0 +| hookVersion | 1.0 +| Hook maturity | [3 - Considered](../../specification/1.0/#hook-maturity-model) + +#### Deprecation Notice + +This hook is deprecated in favor of the `order-sign` hooks, with the goal of clarifying workflow trigger points and supporting orders beyond medications. In this refactoring, `medication-prescribe` and `order-review` hooks are being deprecated in favor of newly created [`order-select`](../order-select) and [`order-sign`](../order-sign) hooks. This notice is a placeholder to this effect while CDS Hooks determines the [appropriate process for deprecating hooks](https://github.com/cds-hooks/docs/issues/433). + +#### Workflow + +The user is in the process of reviewing a set of orders to sign. + +#### Context + +The set of orders being reviewed for signature on-screen. All FHIR resources in this _context_ MUST be based on the same FHIR version. All FHIR resources in the `orders` object MUST have a status of _draft_. + +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 +`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", + "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", + "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 +---- | ---- +1.0 | Initial Release \ No newline at end of file From 0b22976f41bc0a91ed3045d0c77d10a17b6b04dc Mon Sep 17 00:00:00 2001 From: rizzolol Date: Tue, 9 Apr 2024 14:38:10 -0500 Subject: [PATCH 4/4] updated links --- input/images-source/orderingflow.png | Bin 0 -> 45968 bytes input/images/orderingflow.png | Bin 0 -> 45968 bytes input/pagecontent/hook-definitions.md | 20 ++++++++++---------- 3 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 input/images-source/orderingflow.png create mode 100644 input/images/orderingflow.png diff --git a/input/images-source/orderingflow.png b/input/images-source/orderingflow.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a6ce5207ae66f84575645a56d7c57137bab706 GIT binary patch literal 45968 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%0Ae-|v|VdnM$gnRyjLH?nnwL8n>_03B%v4#m+ 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 Z`$Cp^sKo^=A0elbxq-d@QA+3O{{mchVF~~M literal 0 HcmV?d00001 diff --git a/input/images/orderingflow.png b/input/images/orderingflow.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a6ce5207ae66f84575645a56d7c57137bab706 GIT binary patch literal 45968 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%0Ae-|v|VdnM$gnRyjLH?nnwL8n>_03B%v4#m+ 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 Z`$Cp^sKo^=A0elbxq-d@QA+3O{{mchVF~~M literal 0 HcmV?d00001 diff --git a/input/pagecontent/hook-definitions.md b/input/pagecontent/hook-definitions.md index c4ec96c8..729ba2ef 100644 --- a/input/pagecontent/hook-definitions.md +++ b/input/pagecontent/hook-definitions.md @@ -172,7 +172,7 @@ Version | Description | ---- | ---- | specificationVersion | 1.0 | hookVersion | 1.0 -| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) +| hookMaturity | [1 - Submitted](hook-definitions/###hook-maturity-model) #### Workflow @@ -415,7 +415,7 @@ Version | Description | ---- | ---- | specificationVersion | 1.0 | hookVersion | 1.0 -| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) +| hookMaturity | [1 - Submitted](hook-definitions/###hook-maturity-model) #### Workflow @@ -502,7 +502,7 @@ Version | Description | ---- | ---- | specificationVersion | 2.0 | hookVersion | 0.1.0 -| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) +| hookMaturity | [1 - Submitted](hook-definitions/###hook-maturity-model) #### Workflow @@ -676,7 +676,7 @@ Version | Description | ---- | ---- | specificationVersion | 2.0 | hookVersion | 1.1 -| hookMaturity | [0 - Draft](../../specification/current/#hook-maturity-model) +| hookMaturity | [0 - Draft](hook-definitions/###hook-maturity-model) #### Workflow @@ -744,7 +744,7 @@ Version | Description | ---- | ---- | specificationVersion | 1.0 | hookVersion | 1.0 -| Hook maturity | [4 - Documented](../../specification/current/#hook-maturity-model) +| Hook maturity | [4 - Documented](hook-definitions/###hook-maturity-model) #### Workflow @@ -756,7 +756,7 @@ This hook occurs when a clinician initially selects one or more new orders from This hook is intended to replace (deprecate) the medication-prescribe hook. -![Ordering Flow Diagram](../images/orderingflow.png) +![Ordering Flow Diagram](input\images\orderingflow.png) #### Context @@ -1305,7 +1305,7 @@ Version | Description | ---- | ---- | specificationVersion | 1.0 | hookVersion | 1.0 -| Hook maturity | [5 - Mature](../../specification/current/#hook-maturity-model) +| Hook maturity | [5 - Mature](hook-definitions/###hook-maturity-model) #### Workflow @@ -1322,7 +1322,7 @@ mixture of new and revised orders. This hook is intended to replace (deprecate) the `medication-prescribe` and `order-review` hooks. -![Ordering Flow Diagram](../images/orderingflow.png) +![Ordering Flow Diagram](images/orderingflow.png) #### Context @@ -1861,7 +1861,7 @@ Version | Description ### `patient-view` !!! info - This page defines a workflow [hook](../../specification/current/#hooks) for the purpose of providing clinical decision support using CDS Hooks. This is a **build** at the level of **[Trial Use](http://hl7.org/fhir/versions.html#std-processs)**. + This page defines a workflow [hook](/hook-defintions/###hooks) for the purpose of providing clinical decision support using CDS Hooks. This is a **build** at the level of **[Trial Use](http://hl7.org/fhir/versions.html#std-processs)**. | Metadata | Value | ---- | ---- @@ -1912,7 +1912,7 @@ Version | Description | ---- | ---- | specificationVersion | 1.0 | hookVersion | 0.1.0 -| hookMaturity | [1 - Submitted](../../specification/current/#hook-maturity-model) +| hookMaturity | [1 - Submitted](hook-definitions/###hook-maturity-model) #### Workflow