Skip to content

Data dictionary

A submitted Bundle maps into BirthTracks’ canonical spine — a small set of entities shared by every input path (FHIR push, CSV import, structured web form). This is the common shape that downstream filing and benchmarking read from.

A course of care is one Submission with one Mother, one Encounter, one or more Children, and zero or more Transfers of care.

Field Type Notes
uuid string (uuid) Stable id for the course of care.
status string Lifecycle: draft, enrolled, … A FHIR push enrolls the record.
source string Input path — fhir_push, csv, or manual.
external_record_id string Your record id, from the Bundle identifier.value. Unique per practice.
intended_place / actual_place string Planned vs. actual place of birth.
intention_to_treat_flag boolean Intention-to-treat marker for benchmarking.
attendant_type string Type of attendant for the course.
bfdr_ig_version string BFDR IG version declared on the mother’s meta.profile.
enrolled_at / completed_at datetime Set as the record progresses.
Field Type Source Notes
maternal_age integer mapped from FHIR Derived from the mother’s birthDate and the newborn date.
residence_zip3 string(3) mapped from FHIR First 3 digits of the mother’s address.postalCode (Safe Harbor).
race json long-tail
ethnicity string long-tail
education string long-tail
marital_status string long-tail
primary_payer string long-tail
parity / gravidity integer long-tail
prepregnancy_bmi decimal long-tail
prior_cesarean / prior_cesarean_count boolean / integer long-tail
chronic_hypertension boolean long-tail
pre_existing_diabetes boolean long-tail
tolac_attempted boolean long-tail Trial of labor after cesarean.
perineal_status string long-tail
postpartum_hemorrhage boolean long-tail
estimated_blood_loss_band string long-tail
maternal_icu_admission boolean long-tail
maternal_mortality boolean long-tail
breastfeeding_at_discharge / breastfeeding_at_six_weeks string long-tail
Field Type Notes
labor_onset string Spontaneous, induced, etc.
induction / augmentation boolean
rom_method / rom_at string / datetime Rupture of membranes method and time.
fetal_monitoring string
pain_management string
mode_of_birth string
cesarean_type string
shoulder_dystocia boolean
Field Type Source Notes
sequence integer mapped from FHIR Birth order; from multipleBirthInteger when present.
sex string mapped from FHIR From the child Patient.gender.
birth_datetime datetime mapped from FHIR From the child Patient.birthDate/time.
birth_weight_g integer mapped from FHIR LOINC 8339-4 Observation (grams).
gestational_age_weeks integer mapped from FHIR LOINC 11884-4 Observation.
apgar_one_minute integer mapped from FHIR LOINC 9272-6 Observation.
apgar_five_minute integer mapped from FHIR LOINC 9274-2 Observation.
gestational_age_days integer long-tail
resuscitation / assisted_ventilation boolean long-tail
congenital_anomaly string long-tail
nicu_admission boolean long-tail
neonatal_death / neonatal_death_timing / neonatal_death_cause boolean / string long-tail

Zero or more per course of care — the community-birth differentiator. Captured via the structured web form (0..n), the CSV importer (one per row, gated on transfer_type), and the FHIR push (see below). In the CSV template the columns are prefixed transfer_.

Field Type Provenance Notes
transfer_type string long-tail One of antepartum, intrapartum, postpartum_maternal, neonatal. Marks a transfer present.
reason_code string long-tail Coded reason (SNOMED). CSV column transfer_reason_code.
reason_text string long-tail Free-text reason. CSV column transfer_reason_text.
destination string long-tail Where care transferred to. CSV column transfer_destination.
emergency boolean long-tail Whether the transfer was an emergency. CSV column transfer_emergency.
occurred_at datetime long-tail When the transfer occurred. CSV column transfer_occurred_at.

A transfer of care has no dedicated BFDR profile, so the push lane reads it from a FHIR R4 Encounter in the course-of-care Bundle. The transfer type is the gate — an Encounter that names no recognized transfer type (e.g. the birth Encounter) records no transfer, mirroring the CSV/web “transfer_type marks a transfer present” rule. Map each transfer Encounter as:

Canonical field FHIR source
transfer_type Encounter.type[].coding[].code ∈ {antepartum, intrapartum, postpartum_maternal, neonatal} (recommended system https://laravel-sandbox.twosportday.com/fhir/CodeSystem/transfer-type; matched on code, case-insensitive, regardless of system)
reason_code Encounter.reasonCode[0].coding[0].code (SNOMED)
reason_text Encounter.reasonCode[0].text, falling back to the coding display
destination Encounter.hospitalization.destination.display
emergency true iff Encounter.priority.coding[].code ∈ {EMER, STAT, ASAP} (HL7 ActPriority); otherwise false
occurred_at Encounter.period.start

Providers named in a course of care are stored as their own canonical entity, so attendant-level benchmarking works. Provider attribution is not patient PHI, so unlike the mother and child, a provider’s name and credentials are retained.

Canonical field FHIR source
external_provider_id The first non-NPI Practitioner.identifier.value, falling back to Practitioner.id. The stable identity key — a Practitioner without one is skipped.
npi The identifier whose system names US-NPI. A discovery signal only; deliberately never the key, because doulas and CPMs frequently have none.
role Keyword-matched from the practitioner’s qualification text/display: midwife (also CNM/CPM/LM), doula, nurse (also RN), assistant, else other.
display_name Practitioner.name[0].text, falling back to the assembled human name.
credentials The practitioner’s qualification text/display.

The attending provider is the participant an Encounter marks with the HL7 v3 ParticipationType ATND; nothing else promotes a practitioner to attendant.

LOINC Meaning
8339-4 Birth weight (grams)
11884-4 Gestational age (weeks)
9272-6 Apgar score at 1 minute
9274-2 Apgar score at 5 minutes