# PK dataset standards: CDISC, NONMEM data items, and the defects that survive review ## The two worlds Regulatory submission data is CDISC. Modelling data is NONMEM-format. They are different shapes and converting between them is where most defects are introduced. | Layer | Domain / dataset | Contents | | --- | --- | --- | | SDTM | **PC** | Pharmacokinetic concentrations, as collected | | SDTM | **PP** | Pharmacokinetic parameters (NCA output) | | SDTM | **EX** | Exposure — what was actually administered | | ADaM | **ADPC** | Analysis-ready concentrations | | ADaM | **ADPP** | Analysis-ready parameters | | — | NONMEM dataset | One row per event, wide covariates, numeric only | Useful SDTM PC variables: `PCTESTCD`/`PCTEST` (analyte), `PCORRES`/`PCSTRESN` (result as collected and standardised), `PCSTRESU`, `PCLLOQ`, `PCTPT`/`PCTPTNUM` (nominal time), `PCDTC` (actual date/time), `PCSPEC` (matrix). PP parameters use the CDISC `PKPARM`/`PKUNIT` controlled terminology — `AUCALL`, `AUCIFO`, `AUCIFP`, `CMAX`, `TMAX`, `LAMZ`, `LAMZHL`, `CLFO`, `VZFO`. **Nominal versus actual time is the single most consequential conversion decision.** NCA and population modelling should use **actual** elapsed time from the most recent dose. Using nominal time flattens the absorption phase, biases Cmax and Tmax, and inflates residual error. Nominal time is for grouping and presentation only. ## NONMEM data items | Item | Meaning | Traps | | --- | --- | --- | | `ID` | Subject | Must be numeric and contiguous per subject; records for one subject must be together | | `TIME` | Elapsed time | Must be non-decreasing within a subject. Use one unit consistently | | `DV` | Dependent variable | **Must be numeric.** See below | | `AMT` | Dose amount | On a dose record only; units must match the model's | | `EVID` | Event ID | 0 observation, 1 dose, 2 other, 3 reset, 4 reset+dose | | `MDV` | Missing DV | 1 means the record contributes nothing to the objective function | | `CMT` | Compartment | Which compartment is dosed or observed | | `RATE` | Infusion rate | `>0` a rate; `-1` model-estimated duration; `-2` model-estimated rate | | `SS` | Steady state | 1 = achieve steady state before this dose; **requires `II`** | | `II` | Interdose interval | Required by both `SS` and `ADDL` | | `ADDL` | Additional doses | `n` further doses every `II`; **silently does nothing without `II`** | ## The defects that do not stop a run These are the reason `check_popk_dataset.py` exists. None of them raises an error in NM-TRAN. 1. **Non-numeric `DV`.** `BLQ`, `