Metadata-Version: 2.4
Name: dansk-register
Version: 0.1.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Rust
Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
Classifier: Typing :: Typed
Requires-Dist: polars>=1.0
Requires-Dist: pydantic>=2
Requires-Dist: rich>=13
Requires-Dist: sas7bdat-polars==0.8.0
Requires-Dist: matplotlib>=3.8 ; extra == 'figures'
Provides-Extra: figures
License-File: LICENSE
Summary: Danish register analysis platform (dansk_register) and the study pipelines built on it: societal costs, and educational and labour-market trajectories
Keywords: epidemiology,registers,denmark,survival-analysis,polars
Author-email: Tobias Kragholm <tkragholm@gmail.com>
License-Expression: MIT
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Issues, https://github.com/tkragholm/register-studies/issues
Project-URL: Repository, https://github.com/tkragholm/register-studies

# dansk-register

A platform for epidemiological studies on the Danish national registers, and
the study pipelines built on it.

The package contains no data. It is the code that reads a register delivery
inside a secure research environment, builds cohorts and outcomes from it, and
estimates and reports the results.

## What is in it

| Package | Role |
|---|---|
| `dansk_register` | The reusable platform: register catalog and I/O, the staged-pipeline runner, matching, estimation, disclosure control, figure styling |
| `societal_costs` | Study II: societal costs of severe chronic disease in childhood |
| `edu_labour_trajectories` | Study III: educational and labour-market trajectories from age 18 |

The dependency direction is one way and enforced by a test: the platform never
imports a study, and studies never import each other. Code that turns out to be
general is lifted into `dansk_register` rather than shared sideways.

## Install

```
pip install dansk-register
pip install "dansk-register[figures]"   # adds matplotlib for figure rendering
```

The `figures` extra is optional on purpose. The estimators are written in
polars and validated against R, so the pipeline itself carries no numeric stack;
matplotlib brings numpy and is needed only to draw. Without it every result is
still produced and the figure stage records that it could not render.

## Commands

```
edu-labour --list-profiles                          # what each profile runs
edu-labour-preflight --raw-root PATH                # what a delivery contains
edu-labour --output-dir RUN --profile production \
    --raw-root PATH --allow-expensive-stages --resume
edu-labour-figures --bundle RUN/outputs/export --out figures

societal-costs --output-dir RUN --profile production
```

Add `--dry-run` to any `edu-labour` invocation to resolve the plan and settings
without touching data.

## Design notes

**Stages talk through files.** Every stage writes named artifacts into a run
directory and reads its inputs from there, so any stage can be re-run alone
against a previous run's outputs, and `--resume` can skip what is already done.

**Estimators are written against polars.** Aalen-Johansen, Fine-Gray, Cox and
the multi-state occupancy are implemented directly rather than taken from a
modelling library, and each is validated against reference values from R with
those values checked into the tests. That keeps the numbers checkable line by
line and avoids a dependency that may not install in an offline environment.

**Disclosure control is part of the pipeline.** Results leave the secure
environment as a bundle of CSV tables with small cells suppressed and the
estimates resting on them blanked. Figures are rendered from that bundle rather
than from the raw artifacts, so a figure cannot show what the table beside it
was not cleared to show.

## Status

Research code, developed alongside the studies it implements. The public API is
not stable.

## Licence

MIT. See `LICENSE`.

