Review ask

As a clinical trial statistician or programmer, challenge anything in this benchmark: describe a problem in Comments, or propose a fix with the Edit button on any source file.

  1. Task: Is this a specification error a study team could realistically make, and should the build stop on it rather than continue?
  2. Inputs: Do they trigger the failure for the reason the summary gives?
  3. Expected failure: Is this the right error, raised at the right point, and would it tell the programmer what to fix?

The other tabs beside Comments are background for assessment, not under review.

Summary

Lifecycle: draftEditUnder review
What this benchmark means
README.md

Goal: convert hemoglobin results and reference limits to g/dL, and reject a result whose reported unit has no conversion factor.

Input: hemoglobin results with test code (LBTESTCD), reported units, and reference limits, plus a conversion table keyed by test code and reported unit.

Variables:

  • LBORRES and LBORRESU keep the reported result and unit.
  • LBORNRLO and LBORNRHI keep the reported reference limits.
  • LBSTRESN is the reported result multiplied by the matching factor; it is missing when no factor matches.
  • LBSTRESC is the standardized numeric result written as text, or missing with LBSTRESN.
  • LBSTRESU is the standard unit, g/dL.
  • LBSTNRLO and LBSTNRHI are the reported limits multiplied by the same factor, or missing when no factor matches.

When a reported unit is absent from the conversion table, the standard unit remains known but its result and reference limits are missing. Those standardized values must be present together, so the completed dataset is rejected and not accepted.

How to fix

Confirm the appropriate conversion for the uncovered hemoglobin unit, add its test-and-unit row with the correct factor to the conversion table, and rerun. For hemoglobin reported in mmol/L, the usual factor to g/dL is 1.611:

TESTCD,UNIT,FACTOR
HGB,g/L,0.1
HGB,mmol/L,1.611

Do not assume a factor of one for an uncovered unit.

Expected failure

Edit
the run is rejected; no artifact is accepted
expected/error.yaml
phase
verification
condition
all_or_none_failed
requirement
REQ-0382
expected/error.yaml
phase: verification
condition: all_or_none_failed
spec_paths:
  - verifications[0].all_or_none
requirement: REQ-0382
context:
  verification_id: standardized-result-completeness
  failure_count: 1
  keys:
    - STUDYID: YAMAA-01
      USUBJID: YAMAA-01-001
      LBSEQ: 2

Inputs

Under review
2 source files

input/conversion.csv

Edit
1 row
input/conversion.csv
TESTCDUNITFACTOR
HGBg/L0.1

input/lb_raw.csv

Edit
2 rows
input/lb_raw.csv
STUDYIDUSUBJIDLBSEQLBTESTCDLBORRESLBORRESULBORNRLOLBORNRHI
YAMAA-011HGB138g/L120160
YAMAA-012HGB8.5mmol/L7.510

Unexpected Output

Under review
2 rows presented to the failing check - not an accepted artifact

expected/lb.csv

Edit
2 rows
expected/lb.csv
DOMAINSTUDYIDUSUBJIDLBSEQLBTESTCDLBORRESLBORRESULBORNRLOLBORNRHILBSTRESNLBSTRESCLBSTRESULBSTNRLOLBSTNRHI
LBYAMAA-011HGB138g/L12016013.813.8g/dL1216
LBYAMAA-012HGB8.5mmol/L7.510——g/dL——
Shaded columns are derived— = missing value

Comments and assessment materials

Comments

Signed in with GitHub; saved in repository Discussions

Mapping spec

Generated from the benchmark YAML; do not edit by hand

Variable NameVariable LabelTypeLengthControlled Terms or FormatOriginCoreConversion DefinitionVariable TypeVariable OrderComments for Define
DOMAINDomain AbbreviationCharAssignedSet constant value "LB".SDTM1
STUDYIDStudy IdentifierCharCollectedCopy value from LB_RAW.STUDYID.SDTM2
USUBJIDUnique Subject IdentifierCharCollectedCopy value from LB_RAW.USUBJID.SDTM3
LBSEQSequence NumberNumCollectedCopy value from LB_RAW.LBSEQ.SDTM4
LBTESTCDLab Test or Examination Short NameCharCollectedCopy value from LB_RAW.LBTESTCD.SDTM5
LBORRESResult or Finding in Original UnitsCharCollectedCopy value from LB_RAW.LBORRES.SDTM6
LBORRESUOriginal UnitsCharCollectedCopy value from LB_RAW.LBORRESU.SDTM7
LBORNRLOReference Range Lower Limit in Orig UnitCharCollectedCopy value from LB_RAW.LBORNRLO.SDTM8
LBORNRHIReference Range Upper Limit in Orig UnitCharCollectedCopy value from LB_RAW.LBORNRHI.SDTM9
LBSTRESNNumeric Result/Finding in Standard UnitsNumDerivedCompute RESN * FACTOR.SDTM10
LBSTRESCCharacter Result/Finding in Std FormatCharDerivedCopy value from LBSTRESN.SDTM11
LBSTRESUStandard UnitsCharAssignedSet constant value "g/dL".SDTM12
LBSTNRLOReference Range Lower Limit in Standard UnitsNumDerivedCompute LO_RESN * FACTOR.SDTM13
LBSTNRHIReference Range Upper Limit in Standard UnitsNumDerivedCompute HI_RESN * FACTOR.SDTM14
VersionDateAuthorDescriptionReviewerSign-off
1.32026-09-29yamaa docs buildShow study codelist names, external dictionaries, and ISO 8601 formats in variable rows; list the document's codelist values and metadata
1.22026-09-29yamaa docs buildClassify ADaM copies from a declared input as Predecessor and recodes as Derived, and SDTM recodes of locally derived columns as Derived
1.12026-09-29yamaa docs buildResolve lookups into the donor record they select, and give every derivation shape a plain-language rule instead of its raw YAML
1.0yamaa docs buildInitial generation from spec.yaml