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 name | Shape | FHIR resource |
|---|---|---|
| Diagnoses | list | Condition (active) |
| Differentials | list | Condition (provisional) |
| PastMedicalHistory | list | Condition (inactive) |
| PrescribedMedications | list | MedicationRequest |
| CurrentMedications | list | MedicationStatement |
| Allergies | list | AllergyIntolerance |
| Vitals | object | Observation (one per field) |
| LabAndImagingOrders | list | ServiceRequest |
| Vaccinations | list | Immunization |
| HistoryOfPresentIllness | text | (narrative section) |
| PhysicalExam | text | (narrative section) |
| ReviewOfSystems | text | (narrative section) |
| SocialFamilyHistory | text | (narrative section) |
| Plan | text | (narrative section) |
| ChiefComplaint | text | (narrative section) |
| Notes | text | (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_class | Resolves to | Use for |
|---|---|---|
| Diagnosis | ICD-10-CM + SNOMED CT | Diagnoses, Differentials, PastMedicalHistory |
| Drug | RxNorm | PrescribedMedications, CurrentMedications |
| Allergen | SNOMED CT | Allergies (the substance) |
| Finding | SNOMED CT | Symptoms, allergy reactions, exam findings |
| Procedure | SNOMED CT | Procedures performed or planned |
| Vaccine | CVX | Immunizations |
| Lab | LOINC | LabAndImagingOrders |
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:
| Type | Use | Syntax |
|---|---|---|
| enum | Strict pick-one from a fixed list | enum("severity", ["mild", "moderate", "severe"]) |
| enum freetext | Pick-one but allow free text too | enum("route", freetext, ["oral", "IV", "IM"]) |
| bool | Yes / no | bool("history of smoking") |
| num | Numeric value | num("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 signsQuick 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 instructionsVitals-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 recordingQuestions? contact@mercurie.ai