Back to Guides
Care Providers

Prescription Schema

How the templates that drive the Ambient Scribe are written. Use this when you want the AI-generated note to capture exactly the fields you care about, in the shape your specialty expects.

1. Syntax basics

A schema is a list of fields. Each field has a name, then a colon, then a description that tells the AI what to fill in.

ChiefComplaint: brief reason for the visit in the patient's own words

Optional fields — suffix the name with an underscore _. The AI is free to leave them blank when they weren't mentioned.

Notes_: anything else worth recording

Nested object — group related fields with { ... }. Useful for things like Vitals or Address.

Vitals_: {
    BP_: blood pressure with unit
    Pulse_: heart rate in beats per minute
    Temperature_: body temperature with unit
}

List — many entries of the same shape with [ ... ]. Each entry is an object made of the fields you list inside.

Diagnoses: [
    Condition: medical condition diagnosed
    Notes_: severity or additional context
]

One field per line. Opening { or [ goes at the end of its line; the matching closing bracket goes on its own line.

2. Section names & what they become in FHIR

Each top-level field becomes a section in your saved note. We map these section names onto FHIR resource types so the same data flows into your records, the patient's portal, and any downstream EMR export. Use one of the canonical names below when the content matches; off-list names still work but get stored as free-form notes.

Section nameShapeFHIR resource
DiagnoseslistCondition (active)
DifferentialslistCondition (provisional)
PastMedicalHistorylistCondition (inactive)
PrescribedMedicationslistMedicationRequest
CurrentMedicationslistMedicationStatement
AllergieslistAllergyIntolerance
VitalsobjectObservation (one per field)
LabAndImagingOrderslistServiceRequest
VaccinationslistImmunization
HistoryOfPresentIllnesstext(narrative section)
PhysicalExamtext(narrative section)
ReviewOfSystemstext(narrative section)
SocialFamilyHistorytext(narrative section)
Plantext(narrative section)
ChiefComplainttext(narrative section)
Notestext(generic narrative)

Aliases like Dx, PMH, HPI, Rx, VitalSigns, Investigations, etc. also map correctly — the matcher is forgiving with casing, spaces, and abbreviations.

3. Auto-coding entities

Mark a field with coded("…description…", concept_class = "…") and the entity is resolved against the local terminology tables after the AI extracts it. Both ICD-10-CM and SNOMED CT codes attach to a Diagnosis when the loaders are in place; RxNorm to a Drug; LOINC to a Lab; SNOMED to an Allergen.

concept_classResolves toUse for
DiagnosisICD-10-CM + SNOMED CTDiagnoses, Differentials, PastMedicalHistory
DrugRxNormPrescribedMedications, CurrentMedications
AllergenSNOMED CTAllergies (the substance)
FindingSNOMED CTSymptoms, allergy reactions, exam findings
ProcedureSNOMED CTProcedures performed or planned
VaccineCVXImmunizations
LabLOINCLabAndImagingOrders

Example: Condition: coded("medical condition diagnosed at this visit", concept_class = "Diagnosis"). The AI writes a free-text condition name; the enrichment pass looks it up and writes back the resolved code(s).

Vitals are special — the field name itself maps to a LOINC code automatically. Use short canonical names so the mapping fires:

BP, Pulse, Temperature, SpO2, RR, Weight, Height, BMI, Systolic, Diastolic

4. Typed fields

Plain string is the right default — but a few field types are worth using when they fit:

TypeUseSyntax
enumStrict pick-one from a fixed listenum("severity", ["mild", "moderate", "severe"])
enum freetextPick-one but allow free text tooenum("route", freetext, ["oral", "IV", "IM"])
boolYes / nobool("history of smoking")
numNumeric valuenum("years of symptom duration")

5. Ready-made sections to copy

These are the same building blocks behind the Insert section button on the Templates page — paste any of them into a template and edit to taste. Coded fields auto-attach standard codes.

Chief complaint & history

ChiefComplaint_: brief reason for the visit in the patient's own words

HistoryOfPresentIllness_: narrative — timeline, location, character, severity, and progression of the current symptoms

Vitals

Vitals_: {
    BP_: blood pressure with unit (e.g. "120/80 mmHg")
    Pulse_: heart rate in beats per minute (e.g. "78")
    Temperature_: body temperature with unit (e.g. "102 F")
    SpO2_: oxygen saturation percentage (e.g. "98%")
    RR_: respiratory rate in breaths per minute (e.g. "16")
    Weight_: body weight with unit (e.g. "68 kg")
    Height_: body height with unit (e.g. "172 cm")
}

Allergies (coded + severity)

Allergies_: [
    Substance: coded("allergen (e.g. Penicillin, Peanuts)", concept_class = "Allergen")
    Reaction_: coded("type of reaction (e.g. Rash, Anaphylaxis)", concept_class = "Finding")
    Severity_: enum("severity of the allergic reaction", freetext, ["mild", "moderate", "severe"])
]

Immunizations (CVX-coded)

Immunizations_: [
    Vaccine: coded("vaccine administered (e.g. Influenza, COVID-19)", concept_class = "Vaccine")
    Date_: date given (e.g. "2026-03-15")
    Notes_: dose number, site, or batch
]

Diagnoses (coded list)

Diagnoses: [
    Condition: coded("medical condition diagnosed at this visit", concept_class = "Diagnosis")
    Notes_: severity, laterality, or additional context
]

Prescribed medications (coded list)

PrescribedMedications: [
    Name: coded("name of the medicine prescribed", concept_class = "Drug")
    Dosage: dose (e.g. "500 mg")
    Take: frequency / timing (e.g. "twice daily with meals")
    Duration_: duration of the course (e.g. "5 days")
    Route_: enum("route of administration", freetext, ["oral", "topical", "IV", "IM", "subcutaneous", "inhaled", "sublingual"])
    Notes_: any special instructions for this medicine
]

Lab & imaging orders (coded list)

LabAndImagingOrders_: [
    Name: coded("name of the test or imaging ordered (e.g. Complete Blood Count, Chest X-ray)", concept_class = "Lab")
    Notes_: reason for ordering or preparation instructions
]

Plan

Plan_: lifestyle advice, follow-up instructions, warning signs to watch for, and when to seek further care

6. Examples

Broad ambulatory visit (the default)

A specialty-agnostic shape that exercises the whole FHIR pipeline. Copy this when you want a starting point and edit fields for your specialty.

ChiefComplaint_: brief reason for the visit in the patient's own words

HistoryOfPresentIllness_: narrative — onset, character, severity, and progression

Vitals_: {
    BP_: blood pressure with unit
    Pulse_: heart rate in beats per minute
    Temperature_: body temperature with unit
    SpO2_: oxygen saturation percentage
    Weight_: body weight with unit
}

PastMedicalHistory_: [
    Condition: coded("existing or historical diagnosis", concept_class = "Diagnosis")
    Notes_: relevant context
]

CurrentMedications_: [
    Name: coded("medicine the patient is currently taking", concept_class = "Drug")
    Dosage_: dose
    Take_: frequency
]

Allergies_: [
    Substance: coded("allergen", concept_class = "Allergen")
    Reaction_: type of reaction
    Severity_: enum("severity", freetext, ["mild", "moderate", "severe"])
]

PhysicalExam_: narrative examination findings

Diagnoses: [
    Condition: coded("medical condition diagnosed at this visit", concept_class = "Diagnosis")
    Notes_: severity, laterality, or other context
]

LabAndImagingOrders_: [
    Name: coded("test or imaging ordered", concept_class = "Lab")
    Notes_: reason for ordering or prep instructions
]

PrescribedMedications: [
    Name: coded("name of the medicine prescribed", concept_class = "Drug")
    Dosage: dose
    Take: frequency / timing
    Duration_: duration of the course
    Route_: enum("route", freetext, ["oral", "topical", "IV", "IM", "subcutaneous", "inhaled", "sublingual"])
    Notes_: any special instructions
]

Plan_: follow-up instructions, lifestyle advice, warning signs

Quick prescription-only

For follow-up visits where you mostly want a clean Rx list.

Diagnoses: [
    Condition: coded("medical condition diagnosed", concept_class = "Diagnosis")
]

PrescribedMedications: [
    Name: coded("name of the medicine", concept_class = "Drug")
    Dosage: dose
    Take: frequency
    Duration_: duration of the course
]

Plan_: follow-up instructions

Vitals-only (clinic check-in)

For a nurse-driven check-in where the conversation is just measurements.

Vitals: {
    BP: blood pressure with unit
    Pulse: heart rate in beats per minute
    Temperature: body temperature with unit
    SpO2: oxygen saturation percentage
    RR: respiratory rate in breaths per minute
    Weight: body weight with unit
    Height: body height with unit
}

Notes_: anything else worth recording