# Extraction codebook: the numbers each trial reported

Each item is one eligible trial: its arms and measures as the design coding found them, and the text of its source, the open full text (Results, tables, and figure captions), an open preprint, a registry's posted results, or the abstract alone, as `source` says. Copy the numbers the source reports for the arms the design coding marks `ketamine` and `control`. Copy, don't compute: record what is printed, in the form it is printed, and the code does every conversion.

## What to extract

**Arms.** For each analysed arm, `randomized` (the number randomized to it) and `analysed` (the number in the analysis of the outcomes below, if the source gives one for the arm as a whole). Name arms exactly as the design coding does.

**Depression.** Every depression measure the design coding lists, at every time the source reports it, before and after the procedure. One entry per measure and time:

- `measure`, as the design coding names it.
- `day`: days after the procedure (0 is the day of surgery or delivery; "postoperative day 1" is 1; "6 weeks" is 42; "1 month" is 30), or `-1` for a baseline measured before it.
- `form`, and the values for each arm in that form:
  - `mean_sd`: `mean`, `sd`, and `n` (the number assessed at that time, if given).
  - `mean_se`: `mean`, `se`, `n`.
  - `mean_ci`: `mean`, `lower`, `upper`, `level` (0.95 unless stated), `n`.
  - `median_iqr`: `median`, `q1`, `q3`, `n`.
  - `median_range`: `median`, `min`, `max`, `n`.
  - `count`: `events` (participants with depression, by the source's definition) and `n` (assessed), with `definition` (for example "EPDS ≥ 10").
  - `change_mean_sd`: the change from baseline to that time, `mean`, `sd`, `n` (other change forms the same way, prefixed `change_`).
  - `difference`: when the source gives only the difference between arms: `estimate`, `lower`, `upper`, `level`, `scale` (`mean_difference`, `odds_ratio`, `risk_ratio`), and the arm `n`s.
- `location`: where in the source the numbers are (for example "Table 2", "Results, second paragraph", "Figure 3, printed values", "abstract").

Take values from tables over text, and text over figures. Use a figure only where its values are printed on it; never estimate a value from a bar's or point's position. If the source gives the same number in two places and they differ, take the table's and say so in `note`.

**Pain.** Each pain or opioid-consumption measure the design coding lists, at 24 hours after the procedure (`day` 1) and at 48 hours (`day` 2), if reported, in the same forms as depression, with `measure` as the design coding names it. A pain score reported at another hour goes to the nearer of the two days only if it is within 6 hours of it (18 to 30 hours is day 1, 42 to 54 hours is day 2); otherwise leave it out.

**Psychotomimetic adverse events.** For each arm, the number of participants with each of: `hallucination`, `nightmare` (including vivid or unpleasant dreams), `dissociation` (including feelings of unreality, derealization, or depersonalization), `visual` (diplopia, blurred vision, nystagmus), `dizziness`, `agitation` (including delirium-like excitement on emergence), `psychiatric_any` (if the source reports only a combined count of "psychiatric" or "psychotomimetic" events), and `any_ae` (any adverse event, if given). Give `window` (`intraoperative`, `emergence`, `postoperative`, or `overall`). Record zeros the source prints as zeros; leave out what it doesn't report.

**Blinding check.** If the source reports participants' or assessors' guesses of their arm, the guesses by arm.

**Dates and registration.** The enrollment period as the Results state it, and any registration number and date the source gives that the design coding lacks.

## Output

One JSON object per trial, in the order given, as a JSON array written to the file named in your task:

```json
{
  "id": "pmid:12345678",
  "source": "fulltext",
  "arms": {"Esketamine group": {"randomized": "60", "analysed": "58"}, "Control group": {"randomized": "60", "analysed": "57"}},
  "depression": [
    {"measure": "HAMD-17", "day": -1, "form": "mean_sd", "location": "Table 1",
     "values": {"Esketamine group": {"mean": "12.40", "sd": "3.10", "n": "60"}, "Control group": {"mean": "12.10", "sd": "3.40", "n": "60"}}},
    {"measure": "HAMD-17", "day": 3, "form": "median_iqr", "location": "Table 2",
     "values": {"Esketamine group": {"median": "6", "q1": "4", "q3": "9", "n": "58"}, "Control group": {"median": "8", "q1": "5", "q3": "11", "n": "57"}}}
  ],
  "pain": [],
  "adverse_events": [{"window": "postoperative", "values": {"Esketamine group": {"dizziness": "6", "hallucination": "1"}, "Control group": {"dizziness": "2", "hallucination": "0"}}}],
  "blinding_check": null,
  "enrollment": {"start": "2022-07", "end": "2023-03"},
  "registration": null,
  "note": ""
}
```

Give every number as a string, exactly as printed, with its decimals and trailing zeros (`"12.40"`, not `12.4`), so checks that depend on the reported precision can be run. `day` is a plain number.

`note`: anything a second reader would need, above all where a number's arm, time, or form was ambiguous.
