As a clinical trial statistician or programmer, answer two short questions in Your review: the task and the inputs and outputs. Agreeing with both approves this benchmark; disagreeing with either needs a comment. Propose a fix with the Edit button on any source file, or add it to your comments.
We suggest spending no more than 5 minutes on a review. The other tabs beside Your review are background for assessment, not under review.
Summary
README.mdPublic entries: Python and R. Passing coverage requires an installed inventory.
Goal: tidy the spacing of each reported adverse event term and keep only the digits of the sponsor-defined identifier.
Input: collected adverse events with one record for each event, carrying
the reported term (AETERM) and the sponsor-defined identifier (AESPID).
Variables:
AETERMC: the reported term with each run of white space between words reduced to one space and none left at either end, soHEAD ACHEreadsHEAD ACHE. A no-break space counts as white space; a term without extra white space is unchanged.AESPDIG: the digits of the identifier in their original order, soAE-0-12gives012; blank when the identifier is blank.
Note: an identifier with no digit at all gives an empty text value, not a blank. The output file writes the empty text value as two quote characters and leaves a blank empty.
Inputs
Under review1 source fileinput/ae.csv
Edit5 rows| STUDYID | USUBJID | AESEQ | AETERM | AESPID |
|---|---|---|---|---|
| YAMAA-01 | 1 | HEAD ACHE | AE-0-12 | |
| YAMAA-01 | 2 | NAUSEA | AE/7 | |
| YAMAA-01 | 1 | RASH (LEFT ARM) | — | |
| YAMAA-01 | 2 | DIZZINESS | NONE | |
| YAMAA-01 | 1 | FATIGUE | 12 |
Expected output
Under review5 expected rowsexpected/adae.csv
Edit5 rows| STUDYID | USUBJID | AESEQ | AETERMC | AESPID | AESPDIG |
|---|---|---|---|---|---|
| YAMAA-01 | 1 | HEAD ACHE | AE-0-12 | 012 | |
| YAMAA-01 | 2 | NAUSEA | AE/7 | 7 | |
| YAMAA-01 | 1 | RASH (LEFT ARM) | — | — | |
| YAMAA-01 | 2 | DIZZINESS | NONE | — | |
| YAMAA-01 | 1 | FATIGUE | 12 | 12 |
Human review and assessment
| Dataset Name | Variable Name | Variable Label | Type | Codelist/Controlled Terms | Core | Computational Method | Origin |
|---|---|---|---|---|---|---|---|
| ADAE | STUDYID | Study Identifier | character | Copy value from AE.STUDYID. | Predecessor | ||
| ADAE | USUBJID | Unique Subject Identifier | character | Copy value from AE.USUBJID. | Predecessor | ||
| ADAE | AESEQ | Sequence Number | numeric | Copy value from AE.AESEQ. | Predecessor | ||
| ADAE | AETERMC | Reported Term with Clean Spacing | character | Replace every match of ^ | $ in AETERMS with nothing. | Derived | ||
| ADAE | AESPID | Sponsor-Defined Identifier | character | Copy value from AE.AESPID. | Predecessor | ||
| ADAE | AESPDIG | Digits of the Sponsor-Defined Identifier | character | Replace every match of [^0-9] in AESPID with nothing. | Derived |
| Version | Date | Author | Description | Reviewer | Sign-off |
|---|---|---|---|---|---|
| 1.7 | 2026-10-20 | yamaa docs build | Read a specification in the 1.0 surface as its 0.5 counterpart; state that missing values stay missing where a mapping declares no missing handler, and leave out a declared missing answer that restates a handler's default | ||
| 1.6 | 2026-10-17 | yamaa docs build | Describe collected date parts written as ISO 8601 date text and times of day counted in seconds since midnight | ||
| 1.5 | 2026-10-17 | yamaa docs build | Name collected precision in words instead of letter codes; state imputation fallbacks, minimum source precision, bounds ignored outside the collected period, and invalid text with no handler as an error; describe date and datetime shifts, imputation flag codes, and partial text giving no date part | ||
| 1.4 | 2026-10-15 | yamaa docs build | State datetime precision codes through the hour and minute, and complete only the time parts a collected datetime lacks | ||
| 1.3 | 2026-09-29 | yamaa docs build | Show study codelist names, external dictionaries, and ISO 8601 formats in variable rows; list the document's codelist values and metadata | ||
| 1.2 | 2026-09-29 | yamaa docs build | Classify ADaM copies from a declared input as Predecessor and recodes as Derived, and SDTM recodes of locally derived columns as Derived | ||
| 1.1 | 2026-09-29 | yamaa docs build | Resolve lookups into the donor record they select, and give every derivation shape a plain-language rule instead of its raw YAML | ||
| 1.0 | yamaa docs build | Initial generation from spec.yaml |
yamaa