# lucascunha1979/causa-mortis-rs architecture

> Architecture diagram of the GitHub repository lucascunha1979/causa-mortis-rs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lucascunha1979/causa-mortis-rs
- Repository: https://github.com/lucascunha1979/causa-mortis-rs

## Overview

Causa Mortis RS is an Astro/ECharts dashboard for exploring mortality across Rio Grande do Sul and its municipalities. The user adjusts location, cause, year, sex, age, and residence/occurrence filters; the dashboard loads generated datasets and dimensions, then renders maps, trends, cause and age analyses, standardized mortality ratios, and flows. The documented data pipeline ingests official records, classifies and aggregates them, builds indexed data, and generates browser assets. Pipeline ordering comes from the README; implementation details for unsampled scripts are not inferred.

Main entry points: [`src/lib/mortality/main.ts`](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/main.ts) (Dashboard controller), [`pipeline/03_04_classificar_agregar_rs_v4.py`](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/03_04_classificar_agregar_rs_v4.py) (Classify and aggregate), [`pipeline/05_06_montar_indexed_rs_v5.py`](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/05_06_montar_indexed_rs_v5.py) (Indexed datasets), [`src/lib/mortality/data.ts`](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/data.ts) (Data loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pipeline["Data pipeline"]
  node_ingest["Record ingestion"]
  node_classify["Classify and aggregate"]
  node_indexed["Indexed datasets"]
  node_assertions["Data assertions"]
  node_flowdata["Flow generation<br/>[07_fluxos_rs.py]"]
  node_generator["Asset generation"]
end

subgraph group_data["Dashboard data"]
  node_assets["Generated data assets<br/>[types.ts]"]
  node_loader["Data loader<br/>[data.ts]"]
  node_dimensions["Dimensions loader<br/>[dimensions.ts]"]
end

subgraph group_analysis["Mortality analysis"]
  node_cause["Cause data access<br/>[cause-level.ts]"]
  node_smr["SMR analysis<br/>[smr.ts]"]
  node_flowcalc["Flow analysis<br/>[flows.ts]"]
end

subgraph group_charts["Visualizations"]
  node_map["Municipality map<br/>[map.ts]"]
  node_evolution["Mortality evolution<br/>[evolution.ts]"]
  node_causes["Cause charts<br/>[causes.ts]"]
  node_age["Age charts<br/>[age-profile.ts]"]
  node_pyramid["Age pyramid<br/>[pyramid.ts]"]
  node_smrchart["Observed vs expected<br/>[smr.ts]"]
  node_flowchart["Residence flows<br/>[flows.ts]"]
  node_quality["SIM coverage<br/>[quality.ts]"]
end

subgraph group_interaction["Dashboard interaction"]
  node_filters["Filter state<br/>[filters.ts]"]
  node_main["Dashboard controller<br/>[main.ts]"]
  node_export["Chart exports<br/>[chart-export.ts]"]
  node_share["Shareable filters<br/>[share.ts]"]
end

node_official(("Official sources"))

node_official -->|"provides records"| node_ingest
node_ingest -->|"feeds records"| node_classify
node_classify -->|"builds aggregates"| node_indexed
node_indexed -->|"validates data"| node_assertions
node_indexed -->|"supplies datasets"| node_generator
node_classify -.->|"supports flow data"| node_flowdata
node_flowdata -.->|"supplies flow data"| node_generator
node_generator -->|"generates assets"| node_assets
node_assets -->|"loaded as JSON"| node_loader
node_loader -->|"fetches mortality tables"| node_cause
node_dimensions -->|"indexes dimensions"| node_cause
node_filters -->|"notifies changes"| node_main
node_main -->|"updates filters"| node_filters
node_main -->|"initializes chart"| node_map
node_main -->|"initializes chart"| node_evolution
node_main -->|"initializes chart"| node_causes
node_main -->|"initializes chart"| node_age
node_main -->|"initializes chart"| node_pyramid
node_main -->|"initializes chart"| node_smrchart
node_main -->|"initializes chart"| node_flowchart
node_main -.->|"initializes chart"| node_quality
node_evolution -->|"uses cause data"| node_cause
node_flowchart -->|"uses flow analysis"| node_flowcalc
node_smrchart -->|"uses SMR analysis"| node_smr
node_main -.->|"configures exports"| node_export
node_main -->|"restores shared state"| node_share
node_loader -.->|"loads dimensions"| node_dimensions

click node_ingest "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/02_ingerir_rs_v2.py"
click node_classify "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/03_04_classificar_agregar_rs_v4.py"
click node_indexed "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/05_06_montar_indexed_rs_v5.py"
click node_assertions "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/08_assercoes_rs_v4.py"
click node_flowdata "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/07_fluxos_rs.py"
click node_generator "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/scripts/generate-mortality-data.ts"
click node_assets "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/types.ts"
click node_loader "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/data.ts"
click node_dimensions "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/dimensions.ts"
click node_filters "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/filters.ts"
click node_main "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/main.ts"
click node_cause "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/cause-level.ts"
click node_smr "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/smr.ts"
click node_flowcalc "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/flows.ts"
click node_map "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/map.ts"
click node_evolution "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/evolution.ts"
click node_causes "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/causes.ts"
click node_age "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/age-profile.ts"
click node_pyramid "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/pyramid.ts"
click node_smrchart "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/smr.ts"
click node_flowchart "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/flows.ts"
click node_quality "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/quality.ts"
click node_export "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/chart-export.ts"
click node_share "https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/share.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ingest,node_classify,node_indexed,node_assertions,node_flowdata,node_generator toneBlue
class node_assets,node_loader,node_dimensions toneAmber
class node_cause,node_smr,node_flowcalc toneMint
class node_map,node_evolution,node_causes,node_age,node_pyramid,node_smrchart,node_flowchart,node_quality toneRose
class node_filters,node_main,node_export,node_share,node_official toneIndigo
```

## Components

### Data pipeline

- [Record ingestion](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/02_ingerir_rs_v2.py): `pipeline/02_ingerir_rs_v2.py`
- [Classify and aggregate](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/03_04_classificar_agregar_rs_v4.py): `pipeline/03_04_classificar_agregar_rs_v4.py`
- [Indexed datasets](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/05_06_montar_indexed_rs_v5.py): `pipeline/05_06_montar_indexed_rs_v5.py`
- [Data assertions](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/08_assercoes_rs_v4.py): `pipeline/08_assercoes_rs_v4.py`
- [Flow generation](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/pipeline/07_fluxos_rs.py): `pipeline/07_fluxos_rs.py`
- [Asset generation](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/scripts/generate-mortality-data.ts): `scripts/generate-mortality-data.ts`

### Dashboard data

- [Generated data assets](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/types.ts): `src/lib/mortality/types.ts`
- [Data loader](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/data.ts): `src/lib/mortality/data.ts`
- [Dimensions loader](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/dimensions.ts): `src/lib/mortality/dimensions.ts`

### Mortality analysis

- [Cause data access](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/cause-level.ts): `src/lib/mortality/cause-level.ts`
- [SMR analysis](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/smr.ts): `src/lib/mortality/smr.ts`
- [Flow analysis](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/flows.ts): `src/lib/mortality/flows.ts`

### Visualizations

- [Municipality map](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/map.ts): `src/lib/mortality/charts/map.ts`
- [Mortality evolution](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/evolution.ts): `src/lib/mortality/charts/evolution.ts`
- [Cause charts](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/causes.ts): `src/lib/mortality/charts/causes.ts`
- [Age charts](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/age-profile.ts): `src/lib/mortality/charts/age-profile.ts`
- [Age pyramid](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/pyramid.ts): `src/lib/mortality/charts/pyramid.ts`
- [Observed vs expected](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/smr.ts): `src/lib/mortality/charts/smr.ts`
- [Residence flows](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/flows.ts): `src/lib/mortality/charts/flows.ts`
- [SIM coverage](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/charts/quality.ts): `src/lib/mortality/charts/quality.ts`

### Dashboard interaction

- [Filter state](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/filters.ts): `src/lib/mortality/filters.ts`
- [Dashboard controller](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/main.ts): `src/lib/mortality/main.ts`
- [Chart exports](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/chart-export.ts): `src/lib/mortality/chart-export.ts`
- [Shareable filters](https://github.com/lucascunha1979/causa-mortis-rs/blob/main/src/lib/mortality/share.ts): `src/lib/mortality/share.ts`

### Other components

- **Official sources**

## Connections

- Official sources → Record ingestion: provides records (evidence: `README.md`)
- Record ingestion → Classify and aggregate: feeds records (evidence: `README.md`)
- Classify and aggregate → Indexed datasets: builds aggregates (evidence: `README.md`)
- Indexed datasets → Data assertions: validates data (evidence: `README.md`)
- Indexed datasets → Asset generation: supplies datasets (evidence: `README.md`)
- Classify and aggregate → Flow generation: supports flow data
- Flow generation → Asset generation: supplies flow data
- Asset generation → Generated data assets: generates assets (evidence: `README.md`)
- Generated data assets → Data loader: loaded as JSON (evidence: `src/lib/mortality/data.ts`)
- Data loader → Cause data access: fetches mortality tables (evidence: `src/lib/mortality/cause-level.ts`)
- Dimensions loader → Cause data access: indexes dimensions (evidence: `src/lib/mortality/cause-level.ts`)
- Filter state → Dashboard controller: notifies changes (evidence: `src/lib/mortality/filters.ts`)
- Dashboard controller → Filter state: updates filters (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Municipality map: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Mortality evolution: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Cause charts: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Age charts: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Age pyramid: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Observed vs expected: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → Residence flows: initializes chart (evidence: `src/lib/mortality/main.ts`)
- Dashboard controller → SIM coverage: initializes chart
- Mortality evolution → Cause data access: uses cause data (evidence: `src/lib/mortality/charts/evolution.ts`)
- Residence flows → Flow analysis: uses flow analysis (evidence: `src/lib/mortality/charts/flows.ts`)
- Observed vs expected → SMR analysis: uses SMR analysis (evidence: `src/lib/mortality/charts/smr.ts`)
- Dashboard controller → Chart exports: configures exports
- Dashboard controller → Shareable filters: restores shared state (evidence: `src/lib/mortality/main.ts`)
- Data loader → Dimensions loader: loads dimensions
