EHR & charting
- Epic
- Oracle Health (Cerner)
- MEDITECH
- Altera
ADT, diagnoses, and orders via HL7 v2 or FHIR R4.
GRACE is interface-first. Push live data from your EHR, integration engine, fetal-monitoring AI, or HR system, and GRACE turns it into a real-time acuity/staffing level with tiered surge alerts. Authentication uses a scoped Bearer API key, minted per integration so a vendor key can do exactly one job and nothing more.
ADT, diagnoses, and orders via HL7 v2 or FHIR R4.
Point your existing engine at our scoped ingest endpoints.
FHR category, MEWS, mag, BMI, GBS → acuity modifiers.
Skill-mix + tenure in; tiered surge alerts out.
Don't see your vendor? If it speaks HL7 v2, FHIR R4, or REST, it connects. Scoped keys and a per-hospital terminology map handle the site-specific details.
| Interface | Endpoint | Scope |
|---|---|---|
HL7 v2 ADT A01/A02/A03/A04/A08/A11/A12 via Mirth, Rhapsody, Cloverleaf. | /api/ingest/hl7 | ingest:hl7 |
FHIR R4 Encounter, Condition, Observation, MedicationAdministration. Modifiers acquired from meds + flowsheets. | /api/ingest/fhir | ingest:fhir |
Clinical signals Normalized meds/observations/labs → acuity modifiers (PeriGen, EFM, MEWS, flowsheets). | /api/ingest/clinical | ingest:clinical |
Roster Skill mix + tenure from Workday / Oracle HCM / staffing board. | /api/ingest/roster | ingest:roster |
Census Full room census snapshots. | /api/ingest/census | ingest:census |
Staffing Nurses on duty + call-staff availability. | /api/ingest/staffing | ingest:staffing |
Generic ADT Single JSON admit/discharge/transfer event. | /api/ingest/adt | ingest:adt |
Batch Historical backfill, ≤500 events. | /api/ingest/batch | ingest:batch |
Status Pipeline + unit-state health check. | /api/ingest/status | read:status |
GRACE has its own vendor-neutral protocol (grace.v1) that works without HL7 or FHIR. Push data in with the ingest endpoints above, then read the computed verdict back out with a scoped key. Every read returns one consistent envelope, so a human or an agent learns the shape once:
| Read endpoint | Path | Scope |
|---|---|---|
Unit state (full verdict) Level, driving axis, per-axis breakdown, AWHONN shortfall, roster, per-room scores. | /api/v1/unit-state | read:unit-state |
Level (compact) Headline level + driver. Cheap to poll for status pages and checks. | /api/v1/level | read:unit-state |
Forecast GRACE level trajectory + 8h AWHONN staffing-demand forecast. | /api/v1/predict | read:predict |
# Read the live verdict — no HL7/FHIR required
curl https://iamgrace.baby/api/v1/level \
-H "Authorization: Bearer grace_xxx"
# → grace.v1 envelope
{
"protocol": "grace.v1",
"ok": true,
"data": {
"level": "red",
"drivingAxis": "staffing",
"drivingAxisLabel": "AWHONN staffing shortfall",
"awhonnShortfall": 2
},
"meta": { "requestId": "…", "generatedAt": "…", "hospitalId": "…" }
}Errors use the same envelope with { "ok": false, "error": { "code", "message" } } and stable codes (unauthorized, forbidden_scope, not_found, unprocessable). Send an X-Request-Id header and we echo it back in meta.requestId.
Most high-value acuity modifiers are not diagnoses — they are medications, flowsheet observations, and labs. Send them as normalized clinical signals (or as FHIR Observation / MedicationAdministration resources) and GRACE maps them to acuity factors automatically, applying time-based decay where AWHONN ratios change over time (e.g. magnesium sulfate is 1:1 for the first hour, then 1:2).
curl -X POST https://iamgrace.baby/api/ingest/clinical \
-H "Authorization: Bearer grace_xxx" \
-H "Content-Type: application/json" \
-d '{
"roomId": 12,
"roomLabel": "LDR 12",
"signals": [
{ "kind": "medication", "system": "RxNorm", "code": "6585",
"display": "magnesium sulfate", "status": "active",
"startedAt": "2026-06-21T22:05:00Z" },
{ "kind": "observation", "system": "LOINC", "code": "32421-5",
"value": "Category II", "observedAt": "2026-06-21T22:30:00Z" }
]
}'Unknown site-local codes fall through to a per-hospital terminology map, so "group beta strep" at one site and "GBS" at another both resolve to the same factor once an admin maps them.
This is a starting template based on GRACE's default code mappings, not a guarantee of coverage. Every interface is unique, so each site completes a terminology mapping (managed at /app/integrations) to reach fuller coverage and to automate the site-mapped modifiers.
HL7 v2 ADT carries diagnoses only (DG1), so it reaches the diagnosis-acquired modifiers. Medication and observation modifiers arrive via FHIR R4 (Observation / MedicationAdministration) or POST /api/ingest/clinical.
The table below shows how each acuity modifier is acquired out of the box.Diagnosis = HL7 v2 DG1 / FHIR Condition; Signal = FHIR Observation / MedicationAdministration or /api/ingest/clinical; Site-mapped = no shipped rule — activate it for your hospital with a terminology mapping or manual entry.
| Modifier | Acquired via | Default codes |
|---|---|---|
Magnesium sulfate infusion high-magAWHONN 1:1 for the first 60 min, then time-decays to 1:2. | DiagnosisSignal | ICD-10-CM: O15*, O99.89 · SNOMED-CT: 432815009 · medication — RxNorm 6585/29155 |
Morbid obesity (BMI ≥ 40) high-obesity-bmi40 | DiagnosisSignal | ICD-10-CM: O99.21* · observation — LOINC 39156-5 |
Poorly controlled diabetes / IV insulin high-diabetes-poorly-controlled | DiagnosisSignal | ICD-10-CM: O24.0*, O24.3* · medication — RxNorm 5856/51428 |
Indeterminate FHR (Category II) labor-fhr-cat-iiFrom a diagnosis (O68) GRACE defaults to Cat II — only a coded observation distinguishes Cat III. | DiagnosisSignal | ICD-10-CM: O68* · observation — LOINC 32421-5/11949-4 |
Pre-eclampsia / PIH high-preeclampsia | Diagnosis | ICD-10-CM: O14*, O11–O13, O16, O15* · SNOMED-CT: 398254007, 15938005, 46764007 |
Eclampsia — active seizure / post-ictal high-eclampsia | Diagnosis | ICD-10-CM: O15* · SNOMED-CT: 15938005 |
Active hemorrhage high-hemorrhage | Diagnosis | ICD-10-CM: O46*, O72*, O44.1*, O45* · SNOMED-CT: 47821001, 28766005, 17617000, 36813001, 415105001 |
Postpartum hemorrhage / stabilization pp-hemorrhage | Diagnosis | ICD-10-CM: O72* · SNOMED-CT: 47821001, 28766005 |
IUFD / fetal demise high-iufd | Diagnosis | ICD-10-CM: Z37.1/4/7, O36.4* · SNOMED-CT: 276507005, 237364002 |
Bereavement / perinatal loss care high-bereavement | Diagnosis | ICD-10-CM: Z37.1/4/7, O36.4* |
Maternal cardiac disease high-cardiac | Diagnosis | ICD-10-CM: O99.41* |
Maternal pulmonary disease high-pulmonary | Diagnosis | ICD-10-CM: O99.51* |
TOLAC / VBAC attempt labor-tolac | Diagnosis | ICD-10-CM: O66.41 |
Multiple gestation in labor labor-multiple-gestation | Diagnosis | ICD-10-CM: O30* |
Critical / high-alert medication infusion (1:1) high-critical-med-infusion | Signal | medication — RxNorm (by display) |
Abnormal FHR (Category III) labor-fhr-cat-iiiNot reachable from a diagnosis code — requires a coded FHR observation value. | Signal | observation — LOINC 32421-5/11949-4 |
MEWS / MEOWS trigger active mews-active | Signal | observation — LOINC (MEWS/MEOWS by display) |
Group B Strep positive (GBS+) high-gbs-positive | Signal | lab — LOINC 88277-2/31773-6 |
Supplemental oxygen therapy high-oxygen-therapy | Signal | observation — LOINC (oxygen / FiO2 by display) |
Decreased fetal movement reported high-decreased-fetal-movement | Signal | observation — local FETAL_MOVEMENT_DECREASED |
Active pushing (second stage) labor-active-pushing | Signal | observation — local SECOND_STAGE/ACTIVE_PUSHING |
MEWS acknowledged — RN evaluating mews-acknowledged | Site-mapped | — |
Rule-out preterm labor triage-rule-out-ptl | Site-mapped | — |
Rule-out PPROM triage-rule-out-pprom | Site-mapped | — |
History of substance use disorder high-substance-abuse-hx | Site-mapped | — |
History of mental / behavioral health condition high-mental-health-hx | Site-mapped | — |
Known fetal / congenital anomaly high-fetal-anomaly | Site-mapped | — |
Recent trauma (MVA, fall, IPV) high-recent-trauma | Site-mapped | — |
Active vaginal bleeding (not show / spotting) high-vag-bleedingDefault ICD-10 bleeding codes route to high-hemorrhage; map locally if you want this distinct modifier. | Site-mapped | — |
Placenta previa high-placenta-previaO44.1 routes to high-hemorrhage by default; map locally for the distinct previa modifier. | Site-mapped | — |
Prolapsed umbilical cord (STAT) high-prolapsed-cord | Site-mapped | — |
Fetal parts visible / imminent birth high-fetal-parts-visible | Site-mapped | — |
Birth imminent (time window) birth-imminentDriven by the labor-flow time window, not a code. | Site-mapped | — |
Epidural initiation (≥30 min bedside) labor-epidural-init | Site-mapped | — |
Nitrous oxide analgesia labor-nitrous-oxide | Site-mapped | — |
Day-of-cesarean couplet flag pp-csection-day | Site-mapped | — |
Newborn surgery / circumcision (peri-op) nb-surgery | Site-mapped | — |
Centralized fetal telemetry monitoring nb-telemetry | Site-mapped | — |
Interpreter-mediated care env-interpreter | Site-mapped | — |
Dedicated labor-support role needed env-labor-support | Site-mapped | — |
Equity / SDoH risk env-equity-risk | Site-mapped | — |
Care-complexity / nurse-fatigue marker pp-burnout-risk | Site-mapped | — |
/app/integrations), or via POST /api/admin/terminology. Unmapped codes seen on live feeds are collected into a worklist so you can map them as they appear. Agents can read this same table as JSON at /api/public/integration-capabilities.Mint a key per integration at /app/integrations and grant only the scopes it needs. A PeriGen key might carry only ingest:clinical; a Workday key only ingest:roster.
ingest:adtGeneric JSON admit/discharge/transfer events.
ingest:hl7Raw HL7 v2 ADT messages.
ingest:fhirFHIR Encounter / Condition / Observation / MedicationAdministration.
ingest:censusBulk room census snapshots.
ingest:staffingNurses-on-duty + call-staff availability.
ingest:clinicalMeds / observations / labs → acuity modifiers (PeriGen, flowsheets).
ingest:rosterSkill-mix + tenure roster (Workday / Oracle HCM).
ingest:batchBulk historical ADT backfill.
read:statusRead ingest pipeline + unit-state status.
read:unit-stateRead the computed GRACE verdict: unit level, room scores, AWHONN shortfall.
read:predictRead the GRACE level + staffing-demand forecast.
GRACE emits tiered surge alerts over email, SMS (Telnyx), and HMAC-signed webhooks. Point a webhook at your integration engine or a per-vendor adapter (Pulsara, Epic Secure Chat, secure messaging) and relay alerts to the devices your team already uses. Each delivery includes an X-Grace-Signature header (sha256=HMAC_SHA256(secret, rawBody)).
Beyond alerts, GRACE pushes native state events the moment the computed verdict changes — so a partner system can mirror GRACE in real time without polling. Events ship in the same grace.v1 envelope:
| Event | Fires when |
|---|---|
| surge.level_changed | Unit GRACE level changed (e.g. yellow → red). Includes prior level + driving axis. |
| room.rescored | A room's color changed after an ingest. Includes prior color, score, and factors. |
Configure endpoints and signing secrets at /app/integrations. Agents can read the full machine contract — read endpoints, envelope, and webhook events — at /api/public/integration-capabilities or /api/openapi.json.