Field guide

What an incident record means

This route translates the canonical wide incident model into UI-facing language. The schema comes from docs/architecture/03-data-model.md; the examples mirror the mock DetailedIncident data rendered by the incident modal today.

mock example
id INC-2024-04183
date 2024-04-18
address 400 Block of Lancaster Ave
description 111 - Building fire
type fire
responseMin 6.0
totalIncidentMin 58.0
lat 40.0379
lng -76.3055
casualties 2 civilian injuries · 0 civilian fatalities · 1 firefighter injury
propertyLoss $185,000
Legend

How to read the badges

canonicalderivedNFIRS vintage-sensitivemap-safeaggregate-onlydrilldown-only
identity provenance

Identity & provenance

Stable identifiers and source metadata explain where a row came from and how it was keyed across NFIRS eras.

Field Example Meaning
incident_uid STRING
b2f83e7d9c4a10ab

Stable hash of state, FDID, incident date, incident number, exposure number, year, and source.

canonicalNFIRS vintage-sensitive
incident_uid_version STRING
blake2b16-5part-v1

Names the key algorithm so a future UID migration is explicit and auditable.

canonical
raw_incident_key_json STRING
{"state":"PA","fdid":"51021","inc_date":"2024-04-18"}

Pre-hash key payload retained for debug, audits, and data lineage.

canonicaldrilldown-only
source_system STRING
NFIRS

The upstream system that supplied the record. NFIRS is constant during the mock phase.

canonical
source_schema_vintage STRING
2019plus

Vintage marker for schema/code-set differences such as pre-2019, 2019+, or dBASE records.

canonicalNFIRS vintage-sensitive
source_release_scope STRING
all_incidents

Per-row coverage band used to gate call-composition charts honestly across fire-only and all-incident years.

canonicalderivedNFIRS vintage-sensitive
department

Department

Department fields connect each incident to the current MVP identity seam: state plus FDID, decorated with a display name.

Field Example Meaning
dept_fdid STRING
51021

Fire Department Identifier. For MVP, state plus FDID is the working department identity.

canonical
state STRING
PA

Two-letter state code and a serving partition key.

canonicalaggregate-only
dept_name STRING
Lancaster City Bureau of Fire

Display name decorated from department header data during ETL.

canonicalderived
timestamps

Timestamps

Dates and event times power trends, response-time metrics, and the timeline shown in the incident modal.

Field Example Meaning
incident_date DATE
2024-04-18

ISO-8601 normalized incident date. Normalization happens before UID hashing.

canonicalNFIRS vintage-sensitive
year INT
2024

Partition key and the field used to place records into release-scope bands.

canonicalderivedaggregate-only
alarm_ts TIMESTAMP
2024-04-18T14:03:00Z

Dispatch/alarm time. In mock incidents this is represented as dispatchTimeline.alarm.

canonical
arrival_ts TIMESTAMP
2024-04-18T14:09:00Z

On-scene time. Used with alarm_ts to derive responseMin in the mock UI.

canonicalderived
cleared_ts TIMESTAMP
2024-04-18T15:01:00Z

Clear/in-service time. Used to derive totalIncidentMin in the mock UI.

canonicalderived
classification

Incident classification

Classification keeps incident kind separate from severity: a fatal building fire is still a fire, with severity in outcome columns.

Field Example Meaning
incident_type_code STRING
111

Raw NFIRS incident type code.

canonicalNFIRS vintage-sensitive
incident_type_label STRING
Building fire

Vintage-aware decoded label. The mock modal combines code and label as description.

canonicalderivedNFIRS vintage-sensitive
incident_category STRING
fire

Canonical kind such as fire, ems, hazmat, service, goodIntent, falseAlarm, severeWeather, or other.

canonicalderivedaggregate-only
rollup_version STRING
nfirs-kind-v1

Version for the code-to-kind rollup dimension stamped onto each incident row.

canonicalderived
location geography

Location & geography

Location fields are split between display geography and coordinate provenance so maps can avoid mixing points and centroids silently.

Field Example Meaning
prop_use_code / prop_use_label STRING
419 / 1 or 2 family dwelling

Property-use code and decoded label for context and filtering.

canonicalNFIRS vintage-sensitive
city / zip / census_tract STRING
Lancaster / 17602 / 42071001000

Geographic descriptors used for tables, filters, and aggregated maps.

canonicalaggregate-only
lat / lon DOUBLE
40.0379 / -76.3055

Coordinates used by mock map pins. Production rows only expose pin-safe coordinates when provenance allows it.

canonicalmap-safe
coordinate_source STRING
gpkg

Provenance such as gpkg, geocoded_address, tract_centroid, zip_centroid, or missing.

canonicalmap-safe
coordinate_precision STRING
point

Map rule switch: point coordinates can be pins; tract/zip centroids are aggregate-only.

canonicalmap-safeaggregate-only
outcomes severity

Outcomes & severity

Severity is an overlay made from casualties, loss, and acreage. It never changes the incident kind.

Field Example Meaning
civilian_fatalities / civilian_injuries INT
0 / 2

Civilian casualty counts. Mock data surfaces these as casualties.civFatalities and casualties.civilianInjuries.

canonicalaggregate-only
ff_fatalities / ff_injuries INT
0 / 1

Firefighter casualty counts. Mock incidents currently display firefighter injuries.

canonicalaggregate-only
property_loss_usd BIGINT
185000

Estimated property loss in dollars, displayed in the incident modal when present.

canonicalaggregate-only
acres_burned DOUBLE
3.5

Wildland acreage impact when applicable.

canonicalaggregate-only
modules

Modules

Boolean module flags tell the UI whether a row has fire, hazardous-material, or EMS-specific detail available.

Field Example Meaning
has_fire_module BOOLEAN
true

Indicates linked fire-incident module data exists for drilldown.

canonicaldrilldown-only
has_hazmat_module BOOLEAN
false

Indicates linked hazardous-material module data exists for drilldown.

canonicaldrilldown-only
has_ems_module BOOLEAN
true

Indicates linked EMS module data exists for drilldown where the release scope includes EMS.

canonicalNFIRS vintage-sensitivedrilldown-only
nested satellite records

Nested & satellite records

Low-cardinality child rows live in nested arrays for incident drilldown and in satellites/pre-aggregates for analytics.

Field Example Meaning
casualties ARRAY<STRUCT<...>>
[{ kind: "civilian", severity_label: "Injury", age: 42 }]

Nested casualty details for a selected incident. Not enough by itself for corpus-wide casualty analytics.

canonicaldrilldown-only
incident_casualty.record_uid STRING
cas_8fd2b2a01c77

Child-record identifier that references the parent incident_uid rather than replacing it.

canonicaldrilldown-only
agg_casualty_dept_year_kind AGGREGATE
PA / 51021 / 2024 / civilian / injury_count = 12

Pre-aggregate for casualty analytics because R2 SQL cannot explode nested arrays.

derivedaggregate-only