Academy
⌘K
Getting Started
  • Platform Overview
  • AWS Marketplace Setup
  • Quickstart Guide
Connections
  • Overview
Workflow Builder
  • Overview
  • Nodes Catalog
Helix AI Assistant
  • Overview
Mapping Engine
  • Overview
Workflow Library
  • Overview
  • HL7
  • FHIR
  • Insurance
  • Agentic
  • Mapping
Security & Infrastructure
  • Architecture
  • HIPAA Compliance
  • Performance & Scalability
← Back to ConnectHealth
Get Started
Back to Nodes
CDS Hooks1 input → 1 output

CDS Hooks Response

payload (object)ch.cds.responder (function)CDS HooksCDS Hooks Responsech.cds.response (object)payload.cards (array)payload.system… (array)Data flowProperty

Completes a CDS Hooks flow — sends the response back to the EHR using the msg.ch.cds.responder callback attached by an upstream CDS Hooks In node.

Response modes

Design the card here
Build one or more cards in the editor — summary, detail, indicator, source, topic code, and links — with a live preview. Add card adds another; click a card's header to open or close it, drag ☰ to set the order the EHR receives them in, ⧉ duplicates and ✕ removes. The CDS Hooks response carries an array of cards; how several are laid out on screen is up to the EHR. Done stays disabled while a card has a field error (shown in red under the field). Text fields accept {{payload.path}} placeholders filled from the message at runtime. A card whose Summary renders empty is left out; if all are, an empty response is sent.
Cards from msg.payload
The flow builds the response: { cards, systemActions? }, an array of cards, or a single card. Required for suggestions (Condition.Create for problems or encounter diagnoses, MedicationRequest/ServiceRequest create or delete for unsigned orders) and systemActions (ServiceRequest.Update annotations). Cards are normalized: uuid generated if missing, indicator defaults to info, source.label defaults to "ConnectHealth CDS", every suggestion gets a uuid and selectionBehavior defaults to "any".
No card
Sends { "cards": [] } — a valid "no decision support needed" reply.

Card fields (Design mode, per card)

Summary string
Headline, required, up to 140 characters. If placeholders make it longer at runtime, it is truncated.
Detail string
Body text. Markdown by default (the CDS Hooks standard). Plain text or HTML are passed to the EHR through its own mechanism where it has one (see EHR notes); otherwise the EHR treats the text as markdown. Placeholder values are HTML-escaped in HTML mode.
Indicator info | warning | critical
Severity. The EHR maps these to its own alert styles.
Source label / URL / icon
Attribution shown on the card. URL and icon must be full http:// or https:// URLs; the URL may include placeholders.
Topic code string
source.topic.code — a fixed id per kind of card. EHRs key a clinician's override to it, so keep it the same while the card means the same thing. Letters and digits only, up to 100 characters, which every supported EHR accepts (see EHR notes).
Links
absolute (web page) or smart (SMART app launch — the health system usually has to allow-list the app), optional appContext and autolaunchable.

Outputs

Re-emits the message with the response this node built at msg.ch.cds.response (and msg.payload), for downstream debug or logging nodes. Before it is sent, the connection's EHR may adapt it (see EHR notes). Each card's uuid is what the EHR sends back as card on the CDS Hooks In node's Feedback output.

Best Practices

  • Keep patient detail on the card to what the clinician needs — the card is shown in the EHR, and the output message can reach debug and logging nodes.
  • Answer fast. If nothing responds within 8 seconds, the EHR gets an empty response and anything sent later is dropped.
  • Send cards only when there's something to act on. Route the "nothing to show" branch to a No card response node to avoid alert fatigue.

EHR notes

Epic
Plain text and HTML details are sent with Epic's content-type extension. A topic code must be letters and digits, up to 100 characters — others are left off the card. SMART app links must be allow-listed by the health system, and auto-launch needs Epic Aug '23 or later.