Mapping profiles
The versioned EDFlow site mapping profile: encounter filters and identifiers, locations and beds, CTAS codes, roles and practitioner ids, dispositions, order and consult codes, NPO diet codes, result thresholds, privacy options, and unmapped-code governance.
Every source has a versioned mapping profile. Your engine's transformer (if you map at the engine) and EDFlow's HL7 and FHIR adapters use the same profile. Every event records the profile version that produced it.
Example
The values are illustrative, not real hospital codes.
{
"profileId": "demo-epic",
"version": 3,
"siteCode": "demo-ed",
"timezone": "America/Toronto",
"defaultCharset": "UNICODE UTF-8",
"encounterFilter": { "patientClass": ["E"], "pointOfCarePrefixes": ["ED"] },
"encounterId": { "hl7Field": "PV1-19.1", "idSystem": "epic-csn" },
"locations": {
"EDWR": "waiting_room", "EDTRI": "triage", "EDACU": "treatment_space",
"EDRES": "resuscitation", "EDFT": "fast_track", "EDIW": "internal_waiting",
"EDHALL": "hallway", "RAD": "imaging"
},
"ctas": { "hl7ObxCodes": ["11283-9^LN"], "fhirObservationCodes": ["http://loinc.org|11283-9"] },
"roles": {
"ATND": "attending_physician", "RES": "resident_physician", "NP": "nurse_practitioner",
"PA": "physician_assistant", "RN": "primary_nurse", "TRN": "triage_nurse", "CON": "consultant_physician"
},
"dispositions": {
"01": "discharge", "02": "admit", "03": "transfer", "04": "observation",
"LWBS": "left_without_being_seen", "AMA": "left_against_medical_advice"
},
"a11Semantics": "cancel",
"piaSource": "attending_assigned",
"orders": {
"catalog": { "LAB123": "urinalysis", "LAB100": "cbc", "IMG4410": "ct-abdomen-pelvis" },
"categoryBySection": { "LAB": "lab", "CT": "imaging", "US": "imaging", "RAD": "imaging", "EC": "cardiology" },
"contrastPattern": "\\bW(ITH)?/? ?(IV )?CONTRAST\\b",
"npoDietCodes": ["DIET_NPO"],
"consultCodes": { "CONS_IM": "internal_medicine", "CONS_GS": "general_surgery" }
},
"resultComplete": { "lab": "resulted", "imaging": "preliminary", "cardiology": "performed" },
"privacy": { "acceptChiefComplaint": false, "maskConfidentialNamesOnBoard": true }
}Sections
| Section | What it decides |
|---|---|
encounterFilter | Which visits are ED visits (patient class and location prefixes). Filter the rest at the engine too |
encounterId | Where the visit identifier comes from and its id system |
locations | Location code → area (waiting room, triage, treatment space, resuscitation, fast track, internal waiting, hallway, imaging). Beds map to zones in the admin |
ctas | Which OBX or Observation codes carry the triage level |
roles | Role codes → care-team roles. Practitioner ids link to staff accounts through their EHR identities |
dispositions | Disposition codes → decisions, including left before treatment complete and NACRS codes |
a11Semantics | Whether an A11 means cancel or left without being seen |
piaSource | NACRS PIA at the attending assignment or at the first explicit assessment (analytics only) |
orders | Order code catalogue, category by section, the contrast pattern, NPO diet codes, consult codes (with the sensitive flag from the consult catalogue) |
resultComplete | When a test counts as "back": per category, and per imaging modality (preliminary by default; performed where ED physicians read their own films) |
privacy | Whether chief complaint is accepted (staff only), confidential masking |
| Care-flag mappings | EHR codes for must-not-leave, custody, isolation, fall risk |
| Reassessment mappings | Signed notes or procedure-area moves that count as a reassessment |
defaultCharset | Required when MSH-18 is empty |
Versions
Every edit creates a new version with a diff against any earlier one, in Sources and keys. A replay after a profile change supersedes earlier results for the same event id.
Unmapped codes
A code not in the profile or catalogue doesn't block ingest: the patient sees "Other test" and the code lands in Unmapped codes. Go-live needs zero unmapped codes over the last 30 days of test traffic.


Related
Last updated on