# Pack-Years Calculator

> Converts a smoking history into pack-years (packs per day × years smoked, 20 cigarettes per pack) and notes the USPSTF lung-cancer screening threshold of 20 pack-years.

- Calculator id: `pack-years` · Category: Medical & Clinical (`medical`) · Tool name: `calculate_pack_years`
- Canonical page: https://tttkmbb.com/medical/pack-years · This document: https://tttkmbb.com/medical/pack-years.md · JSON definition: https://tttkmbb.com/medical/pack-years.json

## Purpose

Converts a smoking history into pack-years (packs per day × years smoked, 20 cigarettes per pack) and notes the USPSTF lung-cancer screening threshold of 20 pack-years.

**Use when:** You need a standardised cumulative smoking exposure for risk assessment or screening eligibility.

**Do not use when:** Exposure is from cigars, pipes, vaping or smokeless tobacco, for which pack-years are not defined.

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `cigarettes_per_day` | number |  | optional | Average cigarettes smoked per day. Give this or packs_per_day. (min 0, max 200) |
| `packs_per_day` | number |  | optional | Average packs per day (alternative to cigarettes_per_day). (min 0, max 10) |
| `years_smoked` | number | years | required | Total years of smoking at that rate. (min 0, max 100) |
| `cigarettes_per_pack` | integer |  | optional, default 20 | Pack size; the pack-year definition uses 20. (min 10, max 50) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `pack_years` | number | pack-years | packs_per_day × years_smoked. |
| `packs_per_day` | number |  | Packs per day used. |
| `cigarettes_per_day` | number |  | Cigarettes per day used. |
| `total_cigarettes` | number |  | cigarettes_per_day × 365.25 × years_smoked. |
| `screening_note` | string |  | Whether the history reaches the 20 pack-year threshold used for lung-cancer screening eligibility (with age 50–80 and quit ≤15 years ago). |

## Formula

`pack_years = (cigarettes_per_day / cigarettes_per_pack) × years_smoked`

Pack-years summarise dose but not intensity or time since quitting, which also affect risk; periods with different rates should be calculated separately and added. Results are informational only and not a substitute for clinical judgement or medical advice.

## Data Sources

- NCI Dictionary of Cancer Terms – pack year — https://www.cancer.gov/publications/dictionaries/cancer-terms/def/pack-year (government, retrieved 2026-09-24)
- USPSTF (2021) Lung Cancer: Screening – recommendation statement — https://www.uspreventiveservicestaskforce.org/uspstf/recommendation/lung-cancer-screening (standard, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/pack-years?years_smoked=…`
- `POST https://tttkmbb.com/api/v1/calculate/pack-years` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/pack-years · OpenAPI operationId `calculate_pack_years` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "pack-years", "inputs": {…}}`

## Example

- 20 cigarettes/day for 30 years: inputs `{"cigarettes_per_day":20,"years_smoked":30}` → `{"pack_years":30,"packs_per_day":1,"total_cigarettes":219150}`
- Half a pack a day for 15 years: inputs `{"packs_per_day":0.5,"years_smoked":15}` → `{"pack_years":7.5,"cigarettes_per_day":10}`

```
GET https://tttkmbb.com/api/v1/calculate/pack-years?cigarettes_per_day=20&years_smoked=30
```

## Limitations

Exposure is from cigars, pipes, vaping or smokeless tobacco, for which pack-years are not defined. Pack-years summarise dose but not intensity or time since quitting, which also affect risk; periods with different rates should be calculated separately and added. Results are informational only and not a substitute for clinical judgement or medical advice. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**How do I handle changing habits?**

Compute each period separately (e.g. 10/day for 5 years = 2.5, then 20/day for 10 years = 10) and add them: 12.5 pack-years.

**Is 20 pack-years a hard cut-off?**

USPSTF 2021 recommends annual low-dose CT for adults aged 50–80 with at least 20 pack-years who smoke or quit within 15 years; other programmes use different thresholds.

## Related

- [Age Calculator](https://tttkmbb.com/everyday/age.md) — Age is part of screening eligibility.
- [VO2 Max Calculator](https://tttkmbb.com/fitness/vo2-max.md) — Cardiorespiratory fitness context.
