CRD response types on Inferno, with SMART on FHIR launch - Send CRD responses back to the EHR
Learn FHIR for FREE! Enroll Now!

CRD response types on Inferno, with SMART on FHIR launch

In this lesson, we’ll test every response type using the Inferno CRD test kit.

We’ll use appointment-book as the example and go through the different responses we can get back for that CDS Hooks event. You can find a list of all the supported hooks here.

The git repo project has a request body for each scenario in this lesson, plus a handler function that reads one of these payloads and returns cards and system actions.

The handler can return different kinds of cards, including External Reference, Instructions, Launch SMART Application, and Update Coverage Records, the same response types covered in Lesson 6.

In the previous lesson, we built our own project. For this one, clone the repository instead and use it to run the server and the tests:

git clone https://github.com/medblocks/epa-crd-tutorial.git
cd epa-crd-tutorial
bun install
bun run index.ts

Covered Scenario

Copy the values from 01-appointment-book-covered.json, go to the Inferno test page, click Hook Response Demonstration, then Run Tests.

In the form, fill in the server base URL, using the ngrok URL, not the localhost one. The Service ID is appointment-book, and the request body field gets the JSON copied from the project.

CRD Hook Response Demonstration Test Form
CRD Hook Response Demonstration Test Form

That JSON is what the EHR sends the payer whenever an appointment is booked, and the server responds with cards and system actions.

You can check that the fields we’re sending match what’s listed in the appointment-book hook definition. The CRD profile builds on US Core, so it carries more constraints than a plain US Core profile does.

Appointment Book Context Fields
Appointment Book Context Fields

Click Submit and every test passes.

CRD Hook Response Demonstration Test Pass

Check the ngrok logs (at http://127.0.0.1:4040) and you’ll see the response has cards and systemActions, but cards are empty. In systemActions, the server tells the EHR to update the appointment.

{
  "cards": [],
  "systemActions": [
    {
      "type": "update",
      "description": "Added coverage information to Appointment/sleep-study-appt.",
      "resource": {
        "resourceType": "Appointment",
        "id": "sleep-study-appt",
        "text": {
          "status": "generated",
          "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Proposed overnight polysomnography for Amy V. Shaw on 20 Aug 2026 at UMC Sleep Diagnostics Lab, based on ServiceRequest/sleep-study.</div>"
        },
        "status": "proposed",
        "serviceType": [
          {
            "coding": [
              {
                "system": "http://snomed.info/sct",
                "code": "60554003",
                "display": "Polysomnography"
              }
            ],
            "text": "Overnight sleep study"
          }
        ],
        "appointmentType": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v2-0276",
              "code": "ROUTINE",
              "display": "Routine appointment - default if not valued"
            }
          ]
        },
        "description": "Overnight attended polysomnography for suspected obstructive sleep apnea",
        "basedOn": [
          {
            "reference": "ServiceRequest/sleep-study"
          }
        ],
        "start": "2026-08-20T21:00:00-05:00",
        "end": "2026-08-21T06:00:00-05:00",
        "participant": [
          {
            "actor": {
              "reference": "Patient/example",
              "display": "Amy V. Shaw"
            },
            "status": "tentative"
          },
          {
            "type": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                    "code": "PPRF",
                    "display": "primary performer"
                  }
                ]
              }
            ],
            "actor": {
              "reference": "PractitionerRole/example",
              "display": "Dr. Adam Careful - Sleep Medicine"
            },
            "status": "accepted"
          }
        ],
        "requestedPeriod": [
          {
            "start": "2026-08-20T21:00:00-05:00",
            "end": "2026-08-21T06:00:00-05:00"
          }
        ],
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/example"
                }
              },
              {
                "url": "covered",
                "valueCode": "covered"
              },
              {
                "url": "pa-needed",
                "valueCode": "no-auth"
              },
              {
                "url": "billingCode",
                "valueCoding": {
                  "system": "http://www.ama-assn.org/go/cpt",
                  "code": "95810"
                }
              },
              {
                "url": "date",
                "valueDate": "2026-09-11"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "7c8f8024a6bf852d7c215f67fa750882bf72d4b3b6266b488f6b18e4866230bc"
              }
            ]
          }
        ]
      }
    }
  ]
}

The response doesn’t change the base appointment details. It only adds the coverage-information extension, which carries the coverage being checked, whether it’s covered, whether prior authorization is needed, a billing code, and a coverage-assertion-id. The coverage-assertion-id only depends on the coverage and the date, so every scenario in this lesson returns the exact same one, since they all use the same coverage and run on the same day. It’s meant to be looked up again later, not to be unique per request.

That’s all the EHR needs. The procedure is covered, no prior authorization is required, and there’s nothing further to do.

Artboard 1

We can build CRD, DTR and PAS for you

We already do this for health plans and their vendors. Reach out if you want help with the build, or just want to talk through your setup

Book a Call

Prior Authorization Required Scenario

Copy the JSON from 02-appointment-book-prior-auth.json. The data is almost the same as the last scenario, but the coverage has changed enough that this one needs prior authorization.

Paste it into the same form as before and submit.

Most tests pass, except a few optional ones. Worth noting: Coverage Information should always come back as a system action, meaning the server always returns that update regardless of what else is in the response.

In the ngrok logs, the response now includes a card: “Prior authorization required for lumbar spine MRI.” The detail field says documentation of at least six weeks of conservative therapy is required with the request, and it comes through as a warning card.

{
  "cards": [
    {
      "uuid": "3a19f4cc-aaaf-462d-bc26-5df8d8fbb148",
      "summary": "Prior authorization required for lumbar spine MRI",
      "detail": "XYZ Health Plan requires prior authorization for outpatient advanced imaging. Documentation of at least 6 weeks of conservative therapy is required with the request.",
      "indicator": "warning",
      "source": {
        "label": "XYZ Health Plan",
        "url": "https://crd-tutorial.medblocks.com/xyz-health-plan",
        "topic": {
          "system": "http://terminology.hl7.org/CodeSystem/cdshooks-card-type",
          "code": "guideline",
          "display": "Guideline"
        }
      },
      "links": [
        {
          "label": "Advanced Imaging Prior Authorization Policy",
          "url": "https://crd-tutorial.medblocks.com/xyz-health-plan/policies/advanced-imaging-pa",
          "type": "absolute"
        },
        {
          "label": "Lumbar MRI Medical Necessity Criteria",
          "url": "https://crd-tutorial.medblocks.com/xyz-health-plan/criteria/lumbar-mri",
          "type": "absolute"
        }
      ]
    }
  ],
  "systemActions": [
    {
      "type": "update",
      "description": "Added coverage information to Appointment/mri-lumbar-appt.",
      "resource": {
        "resourceType": "Appointment",
        "id": "mri-lumbar-appt",
        "text": {
          "status": "generated",
          "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Proposed MRI of the lumbar spine for Amy V. Shaw on 20 Aug 2026 at University Medical Center, based on ServiceRequest/mri-lumbar.</div>"
        },
        "status": "proposed",
        "serviceType": [
          {
            "coding": [
              {
                "system": "http://snomed.info/sct",
                "code": "113091000",
                "display": "Magnetic resonance imaging"
              }
            ],
            "text": "MRI lumbar spine"
          }
        ],
        "appointmentType": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v2-0276",
              "code": "ROUTINE",
              "display": "Routine appointment - default if not valued"
            }
          ]
        },
        "description": "MRI lumbar spine without contrast for chronic low back pain",
        "basedOn": [
          {
            "reference": "ServiceRequest/mri-lumbar"
          }
        ],
        "start": "2026-08-20T21:00:00-05:00",
        "end": "2026-08-21T06:00:00-05:00",
        "participant": [
          {
            "actor": {
              "reference": "Patient/example",
              "display": "Amy V. Shaw"
            },
            "status": "tentative"
          },
          {
            "type": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                    "code": "PPRF",
                    "display": "primary performer"
                  }
                ]
              }
            ],
            "actor": {
              "reference": "PractitionerRole/example",
              "display": "Dr. Adam Careful - Sleep Medicine"
            },
            "status": "accepted"
          }
        ],
        "requestedPeriod": [
          {
            "start": "2026-08-20T21:00:00-05:00",
            "end": "2026-08-21T06:00:00-05:00"
          }
        ],
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/example"
                }
              },
              {
                "url": "covered",
                "valueCode": "covered"
              },
              {
                "url": "pa-needed",
                "valueCode": "auth-needed"
              },
              {
                "url": "doc-needed",
                "valueCode": "clinical"
              },
              {
                "url": "billingCode",
                "valueCoding": {
                  "system": "http://www.ama-assn.org/go/cpt",
                  "code": "72148"
                }
              },
              {
                "url": "date",
                "valueDate": "2026-09-11"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "7c8f8024a6bf852d7c215f67fa750882bf72d4b3b6266b488f6b18e4866230bc"
              }
            ]
          }
        ]
      }
    }
  ]
}

The response also has a systemActions entry updating the appointment. In the extension, the procedure is covered, but prior authorization is required and clinical documentation is needed. The billing code and coverage-assertion-id come through as well, the same assertion ID as the last scenario, since nothing about the coverage or the date has changed.

Instructions Card Scenario

Next, try 03-appointment-book-instructions.json. Copy the JSON, paste it into the request body, and submit.

This one is an appointment for a colonoscopy. It returns an info card saying the colonoscopy is covered with no prior authorization needed, along with the usual system action updating the appointment: covered, no prior authorization required, billing code, and the assertion ID.

{
  "cards": [
    {
      "uuid": "16ac9b3f-fcf6-4790-bd3d-3f17d4ecb3f0",
      "summary": "Screening colonoscopy is covered with no prior authorization",
      "detail": "Preventive screening colonoscopy is covered at 100% once every 10 years for members 45 and older when performed at an in-network endoscopy center. No referral or prior authorization is needed.",
      "indicator": "info",
      "source": {
        "label": "XYZ Health Plan",
        "url": "https://crd-tutorial.medblocks.com/xyz-health-plan",
        "topic": {
          "system": "http://terminology.hl7.org/CodeSystem/cdshooks-card-type",
          "code": "limits",
          "display": "Limits"
        }
      }
    }
  ],
  "systemActions": [
    {
      "type": "update",
      "description": "Added coverage information to Appointment/colonoscopy-appt.",
      "resource": {
        "resourceType": "Appointment",
        "id": "colonoscopy-appt",
        "text": {
          "status": "generated",
          "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Proposed screening colonoscopy for Amy V. Shaw on 20 Aug 2026 at University Medical Center, based on ServiceRequest/screening-colonoscopy.</div>"
        },
        "status": "proposed",
        "serviceType": [
          {
            "coding": [
              {
                "system": "http://snomed.info/sct",
                "code": "73761001",
                "display": "Colonoscopy"
              }
            ],
            "text": "Screening colonoscopy"
          }
        ],
        "appointmentType": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v2-0276",
              "code": "ROUTINE",
              "display": "Routine appointment - default if not valued"
            }
          ]
        },
        "description": "Screening colonoscopy, average risk",
        "basedOn": [
          {
            "reference": "ServiceRequest/screening-colonoscopy"
          }
        ],
        "start": "2026-08-20T21:00:00-05:00",
        "end": "2026-08-21T06:00:00-05:00",
        "participant": [
          {
            "actor": {
              "reference": "Patient/example",
              "display": "Amy V. Shaw"
            },
            "status": "tentative"
          },
          {
            "type": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                    "code": "PPRF",
                    "display": "primary performer"
                  }
                ]
              }
            ],
            "actor": {
              "reference": "PractitionerRole/example",
              "display": "Dr. Adam Careful - Sleep Medicine"
            },
            "status": "accepted"
          }
        ],
        "requestedPeriod": [
          {
            "start": "2026-08-20T21:00:00-05:00",
            "end": "2026-08-21T06:00:00-05:00"
          }
        ],
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/example"
                }
              },
              {
                "url": "covered",
                "valueCode": "covered"
              },
              {
                "url": "pa-needed",
                "valueCode": "no-auth"
              },
              {
                "url": "billingCode",
                "valueCoding": {
                  "system": "http://www.ama-assn.org/go/cpt",
                  "code": "45378"
                }
              },
              {
                "url": "date",
                "valueDate": "2026-09-11"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "7c8f8024a6bf852d7c215f67fa750882bf72d4b3b6266b488f6b18e4866230bc"
              }
            ]
          }
        ]
      }
    }
  ]
}

DTR Questionnaire Scenario

Next, a scenario where the payer needs more data and a form has to be filled out.

Copy 05-appointment-book-dtr-questionnaire.json, paste it into the request body, and submit.

This one is an appointment for a home sleep apnea test. Here’s what the hook returns:

{
  "cards": [],
  "systemActions": [
    {
      "type": "update",
      "description": "Added coverage information to Appointment/hsat-appt.",
      "resource": {
        "resourceType": "Appointment",
        "id": "hsat-appt",
        "text": {
          "status": "generated",
          "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Proposed home sleep apnea test setup for Amy V. Shaw on 20 Aug 2026 at UMC Sleep Diagnostics Lab, based on ServiceRequest/home-sleep-test.</div>"
        },
        "status": "proposed",
        "serviceType": [
          {
            "coding": [
              {
                "system": "http://snomed.info/sct",
                "code": "60554003",
                "display": "Polysomnography"
              }
            ],
            "text": "Home sleep apnea test"
          }
        ],
        "appointmentType": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v2-0276",
              "code": "ROUTINE",
              "display": "Routine appointment - default if not valued"
            }
          ]
        },
        "description": "Home sleep apnea test for suspected obstructive sleep apnea",
        "basedOn": [
          {
            "reference": "ServiceRequest/home-sleep-test"
          }
        ],
        "start": "2026-08-20T21:00:00-05:00",
        "end": "2026-08-21T06:00:00-05:00",
        "participant": [
          {
            "actor": {
              "reference": "Patient/example",
              "display": "Amy V. Shaw"
            },
            "status": "tentative"
          },
          {
            "type": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                    "code": "PPRF",
                    "display": "primary performer"
                  }
                ]
              }
            ],
            "actor": {
              "reference": "PractitionerRole/example",
              "display": "Dr. Adam Careful - Sleep Medicine"
            },
            "status": "accepted"
          }
        ],
        "requestedPeriod": [
          {
            "start": "2026-08-20T21:00:00-05:00",
            "end": "2026-08-21T06:00:00-05:00"
          }
        ],
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/example"
                }
              },
              {
                "url": "covered",
                "valueCode": "covered"
              },
              {
                "url": "pa-needed",
                "valueCode": "auth-needed"
              },
              {
                "url": "doc-needed",
                "valueCode": "clinical"
              },
              {
                "url": "questionnaire",
                "valueCanonical": "https://crd-tutorial.medblocks.com/xyz-health-plan/fhir/Questionnaire/sleep-study-pa"
              },
              {
                "url": "billingCode",
                "valueCoding": {
                  "system": "http://www.ama-assn.org/go/cpt",
                  "code": "95800"
                }
              },
              {
                "url": "date",
                "valueDate": "2026-09-11"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "7c8f8024a6bf852d7c215f67fa750882bf72d4b3b6266b488f6b18e4866230bc"
              }
            ]
          }
        ]
      }
    }
  ]
}

There are no cards, only a system action adding coverage information to the appointment. In the extension: covered, authorization needed, clinical documentation needed, and a questionnaire field pointing to a Questionnaire on the payer’s FHIR server.

The EHR takes that questionnaire and builds a workflow to get it filled out and submitted. Pulling the questionnaire into the EHR and filling it out is DTR’s job, not CRD’s. Submitting it back to the payer is PAS.

Update Coverage Scenario

Next, let’s look at an Update Coverage Records response. Copy 06-appointment-book-update-coverage.json, paste it into the request body, and submit.

This one is also an overnight sleep study, the same appointment as the first scenario. The server returns a card saying the coverage record on file is out of date, with a suggestion to update it so eligibility and prior authorization checks use the current plan period. Worth being precise about why this one fires: the trigger is the coverage record’s expiration date, not the appointment type, which is why the same procedure that needed no prior authorization in the first scenario shows up here with a different card. Clicking the suggestion is what updates the Coverage resource, it isn’t automatic on its own.

{
  "cards": [
    {
      "uuid": "2f82e36e-80f3-4be0-b0f8-247d92f2c067",
      "summary": "Coverage record on file is out of date",
      "detail": "The member's plan was renewed. Update the coverage record so eligibility and prior authorization checks use the current plan period.",
      "indicator": "warning",
      "source": {
        "label": "XYZ Health Plan",
        "url": "https://crd-tutorial.medblocks.com/xyz-health-plan",
        "topic": {
          "system": "http://terminology.hl7.org/CodeSystem/cdshooks-card-type",
          "code": "insurance",
          "display": "Insurance"
        }
      },
      "selectionBehavior": "at-most-one",
      "suggestions": [
        {
          "label": "Update coverage record with the current plan period",
          "uuid": "ee7db96a-a9cc-4d2a-a96a-ae1e1cfdbf89",
          "actions": [
            {
              "type": "update",
              "description": "Update Coverage/example with the current plan period",
              "resource": {
                "resourceType": "Coverage",
                "id": "example",
                "status": "active",
                "subscriber": {
                  "reference": "Patient/example"
                },
                "subscriberId": "102345672",
                "beneficiary": {
                  "reference": "Patient/example"
                },
                "relationship": {
                  "coding": [
                    {
                      "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
                      "code": "self"
                    }
                  ]
                },
                "period": {
                  "start": "2026-01-01",
                  "end": "2026-12-31"
                },
                "payor": [
                  {
                    "reference": "Organization/payer",
                    "display": "XYZ Health Plan"
                  }
                ],
                "class": [
                  {
                    "type": {
                      "coding": [
                        {
                          "system": "http://terminology.hl7.org/CodeSystem/coverage-class",
                          "code": "plan"
                        }
                      ]
                    },
                    "value": "XYZ-GOLD-PPO",
                    "name": "XYZ Gold PPO Plan"
                  },
                  {
                    "type": {
                      "coding": [
                        {
                          "system": "http://terminology.hl7.org/CodeSystem/coverage-class",
                          "code": "group"
                        }
                      ]
                    },
                    "value": "GRP-12345",
                    "name": "Acme Employer Group"
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  ],
  "systemActions": [
    {
      "type": "update",
      "description": "Added coverage information to Appointment/sleep-study-appt-renewal.",
      "resource": {
        "resourceType": "Appointment",
        "id": "sleep-study-appt-renewal",
        "text": {
          "status": "generated",
          "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Proposed overnight polysomnography for Amy V. Shaw on 20 Aug 2026 at UMC Sleep Diagnostics Lab, based on ServiceRequest/sleep-study. The coverage record on file has lapsed.</div>"
        },
        "status": "proposed",
        "serviceType": [
          {
            "coding": [
              {
                "system": "http://snomed.info/sct",
                "code": "60554003",
                "display": "Polysomnography"
              }
            ],
            "text": "Overnight sleep study"
          }
        ],
        "appointmentType": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v2-0276",
              "code": "ROUTINE",
              "display": "Routine appointment - default if not valued"
            }
          ]
        },
        "description": "Overnight attended polysomnography for suspected obstructive sleep apnea",
        "basedOn": [
          {
            "reference": "ServiceRequest/sleep-study"
          }
        ],
        "start": "2026-08-20T21:00:00-05:00",
        "end": "2026-08-21T06:00:00-05:00",
        "participant": [
          {
            "actor": {
              "reference": "Patient/example",
              "display": "Amy V. Shaw"
            },
            "status": "tentative"
          },
          {
            "type": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                    "code": "PPRF",
                    "display": "primary performer"
                  }
                ]
              }
            ],
            "actor": {
              "reference": "PractitionerRole/example",
              "display": "Dr. Adam Careful - Sleep Medicine"
            },
            "status": "accepted"
          }
        ],
        "requestedPeriod": [
          {
            "start": "2026-08-20T21:00:00-05:00",
            "end": "2026-08-21T06:00:00-05:00"
          }
        ],
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/example"
                }
              },
              {
                "url": "covered",
                "valueCode": "covered"
              },
              {
                "url": "pa-needed",
                "valueCode": "no-auth"
              },
              {
                "url": "billingCode",
                "valueCoding": {
                  "system": "http://www.ama-assn.org/go/cpt",
                  "code": "95810"
                }
              },
              {
                "url": "date",
                "valueDate": "2026-09-11"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "7c8f8024a6bf852d7c215f67fa750882bf72d4b3b6266b488f6b18e4866230bc"
              }
            ]
          }
        ]
      }
    }
  ]
}

It also sends a system action confirming the appointment itself is covered, no prior authorization needed.

SMART on FHIR App Scenario

Next, a Launch SMART Application response. Copy 04-appointment-book-smart-app.json, paste it in, and submit.

This one is a request for echocardiography. The response returns a card saying to review the echocardiography coverage requirements in the payer’s app, with a link to the SMART app itself, and the usual system action confirming the appointment is covered, no authorization needed.

{
  "cards": [
    {
      "uuid": "44913603-cc04-4132-8b8f-55ab664dfe21",
      "summary": "Review echocardiography coverage requirements in the payer app",
      "detail": "XYZ Health Plan's coverage requirements app shows member-specific criteria, cost estimates, and site-of-service options for cardiac imaging.",
      "indicator": "info",
      "source": {
        "label": "XYZ Health Plan",
        "url": "https://crd-tutorial.medblocks.com/xyz-health-plan",
        "topic": {
          "system": "http://terminology.hl7.org/CodeSystem/cdshooks-card-type",
          "code": "cost",
          "display": "Cost"
        }
      },
      "links": [
        {
          "label": "Open XYZ Coverage Requirements",
          "url": "https://crd-tutorial.medblocks.com/xyz-health-plan/smart/coverage-requirements/launch.html",
          "type": "smart"
        }
      ]
    }
  ],
  "systemActions": [
    {
      "type": "update",
      "description": "Added coverage information to Appointment/echo-appt.",
      "resource": {
        "resourceType": "Appointment",
        "id": "echo-appt",
        "text": {
          "status": "generated",
          "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">Proposed transthoracic echocardiogram for Amy V. Shaw on 20 Aug 2026 at University Medical Center, based on ServiceRequest/echo-tte.</div>"
        },
        "status": "proposed",
        "serviceType": [
          {
            "coding": [
              {
                "system": "http://snomed.info/sct",
                "code": "40701008",
                "display": "Echocardiography"
              }
            ],
            "text": "Transthoracic echocardiogram"
          }
        ],
        "appointmentType": {
          "coding": [
            {
              "system": "http://terminology.hl7.org/CodeSystem/v2-0276",
              "code": "ROUTINE",
              "display": "Routine appointment - default if not valued"
            }
          ]
        },
        "description": "Transthoracic echocardiogram, complete",
        "basedOn": [
          {
            "reference": "ServiceRequest/echo-tte"
          }
        ],
        "start": "2026-08-20T21:00:00-05:00",
        "end": "2026-08-21T06:00:00-05:00",
        "participant": [
          {
            "actor": {
              "reference": "Patient/example",
              "display": "Amy V. Shaw"
            },
            "status": "tentative"
          },
          {
            "type": [
              {
                "coding": [
                  {
                    "system": "http://terminology.hl7.org/CodeSystem/v3-ParticipationType",
                    "code": "PPRF",
                    "display": "primary performer"
                  }
                ]
              }
            ],
            "actor": {
              "reference": "PractitionerRole/example",
              "display": "Dr. Adam Careful - Sleep Medicine"
            },
            "status": "accepted"
          }
        ],
        "requestedPeriod": [
          {
            "start": "2026-08-20T21:00:00-05:00",
            "end": "2026-08-21T06:00:00-05:00"
          }
        ],
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information",
            "extension": [
              {
                "url": "coverage",
                "valueReference": {
                  "reference": "Coverage/example"
                }
              },
              {
                "url": "covered",
                "valueCode": "covered"
              },
              {
                "url": "pa-needed",
                "valueCode": "no-auth"
              },
              {
                "url": "billingCode",
                "valueCoding": {
                  "system": "http://www.ama-assn.org/go/cpt",
                  "code": "93306"
                }
              },
              {
                "url": "date",
                "valueDate": "2026-09-11"
              },
              {
                "url": "coverage-assertion-id",
                "valueString": "7c8f8024a6bf852d7c215f67fa750882bf72d4b3b6266b488f6b18e4866230bc"
              }
            ]
          }
        ]
      }
    }
  ]
}

All Scenarios at Once

Last, run all six requests as a single array, which isn’t how a real EHR would call this, but it’s a fast way to clear the whole Inferno checklist in one pass. Copy appointment-book-all-requests.json, paste it into the request body, and submit.

Every check passes except Request Form Completion, and that’s expected: if DTR is implemented, this response type isn’t needed.

Coverage Information is the one thing that stays constant across every hook and every scenario. It’s the only mandatory response type, everything else in this lesson was optional. There are other hooks worth implementing beyond appointment-book, and if you’ve made it this far, we’d recommend trying one yourself.

Comments (0)

No comments yet. Be the first to comment!