Exploration
Identify plausible pathways, variables, feedbacks and constraints that may connect climate exposure to health need and service continuity.
CHRS is a stochastic, discrete-time hybrid agent-based microsimulation that follows how climate-related exposure propagates through heterogeneous health need, care seeking, spatial accessibility and finite health-service capacity. Each process is a separate submodel, so a change in outcomes can be traced to an explicit mechanism instead of disappearing into a composite risk score.
The methodological logic of CHRS follows four stages. The first three interrogate the model and explain simulated system behaviour. Prescription is intentionally a later stage: it would require empirical calibration, withheld validation data and a defensible link between model outputs and real decisions.
Identify plausible pathways, variables, feedbacks and constraints that may connect climate exposure to health need and service continuity.
Characterise where, when and for whom care need, access barriers, queues and unmet care emerge within a declared scenario.
Use controlled scenario contrasts and mechanism evidence to examine which pathways are responsible for changes in simulated outcomes.
Compare interventions for decision support only after the model has been constrained and challenged with appropriate empirical evidence.
The model represents heterogeneous residents, spatially differentiated exposure and a health-service network whose effective capacity can change over time. Residents are rule-based agents. Facilities are resource-constrained service entities. Interaction is mediated through care need, care seeking, accessibility, facility selection, queues and allocation.
Demographic, vulnerability, mobility, care-need, service and exploratory health-risk states are represented separately.
The synthetic benchmark uses synthetic zones with a zone-to-zone travel matrix. The Barcelona pilot maps official districts into ten harmonised zones on the same machinery.
Type, location, opening hours, workforce, electricity, cooling and backup power contribute to effective capacity.
The simulation advances in daily steps. Warm-up is simulated but excluded from analysis-window estimands.
care_need_statusCurrent essential-care needNo current need, routine, urgent or emergency.
access_statusAbility to reach an eligible serviceAccessible, transport limited, geographically unreachable or service unavailable.
service_statusPosition in the service pathwayNot seeking, seeking, waiting, served, delayed or unmet.
health_risk_statusExploratory model stateStable, heat stressed, clinically deteriorating or critical; these are not validated clinical diagnoses.
Most risk models collapse these into one number. CHRS refuses to, because each equality hides a different policy lever and a different kind of evidence. Keeping them distinct is what makes the model auditable — and what makes its data requirements demanding.
The engine executes a fixed thirteen-step causal schedule each simulated day. Causal ordering matters: care need is established before downstream behaviour, access support or service allocation, so the primary denominator never moves because an intervention changed utilisation.
Transient service flags from the previous day are cleared; served and delayed residents return to not-seeking.
The day's zone temperatures, humidity and episode state are drawn from the climate source.
Zone power and transport-disruption states are resolved for the day.
Opening hours, workforce absence, cooling and electricity determine each facility's continuous effective capacity.
New need is generated, existing need resolves or escalates, and the pre-allocation demand ledger captures every resident with current need.
Unassisted accessibility is evaluated purely as a behavioural signal for seeking — not as the final outcome.
Residents with current need draw for intention to seek; existing waiting residents stay queued.
Bounded same-day transport support is offered to eligible genuine seekers.
Accessibility is recomputed with support applied — only if support actually changed; otherwise step 5 stands as final.
Access denial becomes explicit unmet demand; facility queues persist across days; allocation runs severity-first; the ledger reconciles to terminal categories.
Exploratory risk-state updates occur after allocation and remain model-conditional.
The day's state transition completes and is committed.
Daily aggregates, subgroup tallies and mechanism-evidence counters are collected after the boundary.
These formulas are verified against the current implementation. Every parameter that appears here is illustrative or assumed unless explicitly marked as an observed input — none has been fitted to data.
The seasonal maximum-temperature baseline is a sinusoid plus seeded daily noise:
A declared heatwave episode adds a trapezoidal excess profile — linear ramp, plateau, linear decay:
Night-minimum temperature and relative humidity are attached to episode days as declared scenario properties.
Excess exposure above the cumulative threshold, by zone and day:
Heat raises care-need pressure through a saturating multiplier:
Zero excess leaves demand unchanged; pressure grows with exposure and asymptotically approaches the configured peak multiplier M_peak. The shape is mechanistic, not empirically calibrated.
For a resident without current need, the engine first constructs three mutually exclusive interval widths. Heat scales all three; chronic burden scales the routine component only:
One uniform draw then assigns at most one new need state:
The configuration validator guards the reachable parameter region so the three interval widths cannot silently exceed probability one. For existing need, a separate resolution draw is evaluated first; if need persists, routine need may escalate to urgent and urgent need may escalate to emergency. Served need resolves immediately. These probabilities remain illustrative rather than empirically fitted.
Seeking is a separate probabilistic event conditional on current need. The model begins with the baseline seeking probability, applies the transport limitation penalty multiplicatively, then adds the configured health-risk boost when the resident belongs to a boost-eligible risk state:
A person can therefore need care and not seek it — precisely why attendance alone cannot identify need. Residents already waiting are treated as expressed demand and are not silently subjected to a fresh seeking draw that could remove them from the queue.
Required travel time starts from the zone-to-zone base matrix and is modified by personal mobility, transport disruption and any same-day support:
After the minimum-cost eligible facility is selected, the resulting travel time is compared with severity-specific thresholds: accessible within the acceptable threshold, transport-limited between the acceptable and hard limits, and geographically unreachable beyond the hard limit. If no active eligible facility with positive effective capacity exists, the classification is service unavailable.
For an operating facility, nominal capacity is transformed by workforce availability, opening hours and cooling status, then capped by the configured maximum effective-capacity factor:
Heat-related absenteeism is constructed from a baseline plus a bounded temperature-dependent increment:
Scenario-level staff absenteeism can multiply that absenteeism term. Electricity loss without working backup closes an electricity-dependent facility outright; a cooling-dependent facility that remains operational without cooling is reduced by the cooling factor. Extended hours increase the hours term only when their intervention rules apply. Nominal capacity behaves as a 24-hour-equivalent daily quantity — a registry convention, not an observed Barcelona value.
Effective capacity is continuous, but service events are indivisible whole-person visits. Immediately before allocation, each facility's capacity c is resolved stochastically:
Concretely: a facility with c = 0.24 serves 1 person on roughly 24% of matched facility-days and 0 otherwise — unbiased across replications. Deterministic flooring was invalid at sampled scales because it silently converted small capacities into zero capacity. The continuous value remains authoritative for reporting and queue-limit rules; the realised integer governs only indivisible admission. This is numerical resolution, not calibration.
For each resident, day and requested service type:
Queue length, utilisation and remaining capacity play no role in this choice. FAC-001 is deliberately not load balancing: it removes a deterministic first-facility bias that previously funnelled all same-cost demand into whichever facility happened to be listed first. The tie draw is keyed by (seed, replication, resident, day, service type) and excludes scenario identity, so paired scenarios share draws wherever their candidate sets coincide.
Health-risk states are exploratory model states rather than validated clinical endpoints. Heat-stress probability increases with excess temperature and individual vulnerability:
Unmet urgent and emergency need can additionally trigger deterioration or critical-state transitions through separate illustrative probabilities. Mortality remains disabled when the configured baseline mortality probability is zero. These states help inspect pathway consequences; they are not diagnoses, forecasts or validated clinical risks.
Allocation converts expressed, accessible demand into served, delayed, waiting or unmet care. Facility queues are authoritative and persist across daily boundaries; capacity is consumed in whole-person units only.
Within each facility, queued demand is ordered by three keys — severity first, then arrival, then identity:
Emergency need is served before urgent, urgent before routine; within a severity tier, earlier queue entry wins, and agent id breaks remaining ties deterministically.
When realised capacity cannot admit a claimant, two independent bounds govern whether they may remain waiting. The queue multiplier limits queue occupancy relative to the facility's continuous effective capacity; max_queue_days separately limits how long an individual may wait.
If either bound is exhausted, or final access is denied, the need is classified explicitly as unmet rather than left in an indefinite queue. Every pre-allocation need person-day ends the day in exactly one terminal ledger category; reconciliation is machine-checked and unresolved categories must remain zero.
queue_multiplier × C_eff limits concurrent queue occupancy, while max_queue_days independently caps individual waiting duration; exceeding either relevant bound leads to unmet care.The primary estimand is unmet essential-care person-days per 1,000 pre-allocation care-need person-days. The denominator therefore includes residents who need care but do not seek it, alongside those later blocked by access or capacity.
All unmet pre-allocation need in the daily ledger: access-denied plus capacity- and queue-denied need.
Alive resident-days with current essential-care need, captured at step 4 — before seeking, support, final access, allocation or receipt. Measuring here prevents the denominator from being contaminated by the very outcomes the model compares.
The unit preserves duration. Repeated unmet need contributes more than a single isolated day, while numerator and denominator remain directly inspectable.
If a rate or mean has a zero eligible denominator, it is treated as undefined rather than forced to zero. Strict JSON outputs record an explicit validity reason.
unmet_person_dayscare_need_person_days_pre_allocationEquity tables treat the replication as the analysis unit. The headline subgroup rate is the unweighted mean of replication-level subgroup rates over the analysis window; a pooled person-day rate is reported separately because it answers a different weighting question when denominators vary between replications.
Stochasticity is governed rather than hidden. Persistent named streams are derived from the base seed, replication identifier and stream name; scenario identity is deliberately excluded. Separate keyed draws are used for order-independent events such as capacity integerisation and equal-cost facility ties.
capacity_resolution and facility_tiebreak are scenario-independent for the same key, although FAC-001 can still select differently when the eligible/tied candidate set itself changes.For the bundled intervention contrasts, extreme heat without additional intervention (CHRS-S1) is the comparison baseline; CHRS-S0 remains the reference-conditions scenario. Paired analyses report mean difference, relative change, Cohen's dz and, where requested, Holm-adjusted inferential tests across matched replication IDs. A null result is reported as a null rather than smoothed away.
Numerator, denominator and rate travel together. Secondary summaries cover demand decomposition, travel, queues, service capacity, disruption and intervention-mechanism activation.
An intervention counts as active only when declared in the scenario, enabled in configuration, and visible in generated mechanism events — checked automatically per run.
The seven bundled scenarios are versioned synthetic contrasts. CHRS-S0 provides reference conditions; CHRS-S1 is the extreme-heat baseline against which the intervention and compound-disruption contrasts are normally evaluated. The scenarios test whether declared mechanisms activate and how those mechanisms alter pathways under otherwise controlled conditions. Parameters are not tuned to force a preferred direction.
The generic benchmark and the Barcelona pilot share one engine but stand on different evidence. Keeping the split explicit prevents the most damaging confusion — treating an observed input as a calibrated parameter.
Each rung demands different evidence. Climbing is slow by design: no rung can be skipped, and status language comes from the repository's own audits rather than marketing preference.
Deterministic execution, fixed event order, ledger reconciliation, capacity bounds and artifact integrity pass the repository test suite.
Official structure and context incorporated; behavioural and capacity mechanisms labelled as assumptions. Structural Stage C is conditionally permissible as a mechanistic diagnostic, but empirical interpretation remains blocked.
Blocked by missing need anchors, dated utilisation targets and operational-capacity evidence.
Requires a leakage-locked holdout, model-equivalent targets and pre-registered acceptance criteria.
No individual triage, dispatch, resource allocation or forecast claim is supported at any rung below full validation.
CHRS separates verification from validation. Verification asks whether the implementation behaves according to its declared design and accounting rules. Validation asks whether the model adequately represents observed phenomena for a stated use. The current release answers the first question; the second awaits evidence.
The repository test suite covers deterministic execution, configuration governance, event ordering, access, finite capacity, queues, accounting and output artifacts — including dedicated regression tests for the RES-001 and FAC-001 remediations.
Calibration is intentionally disabled. No observational target is currently accepted by the configured calibration pathway, and no historical holdout has been opened.
The model is intentionally narrower than a real urban health system. Its present value is making assumptions and mechanism interactions inspectable — not claiming behavioural, epidemiological or operational realism.
Bundled populations, facilities, climate and parameter values are synthetic, assumed or illustrative; Barcelona adds observed structure, not calibrated behaviour.
Travel uses a zone-to-zone matrix rather than street-network routing, scheduled public transport or time-dependent congestion.
Within-day timing, overnight thermal recovery and continuous-time queue dynamics are not separately represented.
Seeking does not learn, optimise, negotiate or respond to expected waiting time, fear, social networks or informal care.
Spontaneous resolution and escalation probabilities are single illustrative values, not severity-specific empirical models.
Risk labels are internal simulation states, not validated diagnoses, individual risk predictions or clinical endpoints.
State-dependent random streams diverge after scenarios diverge; paired replications give partial, not exact, trajectory matching.
The model must not be used for individual triage, emergency dispatch, automatic service denial, surveillance or real resource allocation.
Detailed boundaries and interpretive warnings live in the governed documentation distributed with the research repository — including the limitation, scope, outcome-dictionary and verification documents referenced below.
This page summarises the scientific design but is not the sole specification. Exact definitions, output semantics, parameter ownership, assumptions and validation boundaries should be traced to the versioned documentation in the research repository and to run provenance.
The worked example exposes its population, service network, scenario contrasts, replication summaries, subgroup outputs and run provenance. It makes the methodology concrete — and shows exactly where evidence is still needed.