- Before
- Finds out after the fact that a control was out of contract or a unit had changed — once the numbers are already in the warehouse.
- Now
- Sees every file stop at the station where it fails, with the evidence beside it, and decides each stop on the belt.
One plasma file, from the SFTP drop to the warehouse
Tuesday 7 October, 09:40. Quillon Bioanalytical drops QB-1180_PK_plasma_conc.xlsx on SFTP: LC-MS/MS concentrations of NWB-5104 in mouse plasma after an IV and an oral dose, 9 samples, under contract NWB-SOW-047 §2. Here is what happens next, screen by screen, in the working solution.
- 0109:40
Every CRO on one conveyor
Dr. Priya Raman · Study monitor, External ResearchPriya monitors the studies Northwind Bio runs at six CROs. Her intake conveyor has a lane for each — Halden, Corrib, Pellucid, Sorrel, Quillon, Larkspur — and four stations: Received, Mapped, QC-checked, Loaded. This week: 38 deliverables, 30 loaded, 1 ready to load, 4 stopped for a decision, 1 waiting on the CRO, 2 on the way in. Quillon's new file sits at Received.
Drift watch: “Before a single value is mapped, each file is compared with its CRO's last accepted layout — headers, column order, units and value ranges.”
- 02One click
Stopped at Mapped: the concentration unit changed
Template drift checkerThe deliverable classifier matches the workbook to Quillon, study QB-1180 and contract NWB-SOW-047 §2. The template drift checker compares its header with Quillon template v3, last used on QB-1174 on Sep 29, and finds four changes. Sample became Sample ID and Flag became BLQ — matched by meaning. Route and Time (h) swapped places — matched by name. Column E went from “Conc (ng/mL)” to “Conc (µg/mL)” — and that stops the file.
The template drift checker never accepts a unit change on its own.
- 03What would have loaded
1.284 ng/mL, or 1,284 ng/mL
Dr. Priya Raman · Study monitorThe diff shows what an import would have done: M1-0.25 IV reads 1.284 and would load as 1.284 ng/mL instead of 1,284 ng/mL; M4-2 PO would load as 0.451 instead of 451. The last three Quillon runs at 0.25 h read 1,190–1,410 ng/mL, so the values agree with the new header. Priya chooses “Convert × 1,000 and save template v4” — the rule is applied, template v4 is saved and Sam Patel, the template owner, is informed.
Her other choices on the same screen: “Query Quillon” or “Hold the file”.
- 04QC-checked
Two samples reported as 0 — below the 1.0 ng/mL limit
Study-spec checkerThe rest of the intake runs. The result extractor reads 9 samples, IV and oral, each with its cell in column E; the unit and identity normaliser converts the values to ng/mL and matches NWB-5104 through the shipped manifest. The study-spec checker stops at two samples, M1-24 and M4-24 at 24 h, that the export writes as 0 with flag BLQ. Loading 0 would pull exposure down.
Suggested: “Load both as "below LLOQ (1.0 ng/mL)" — never as zero.”
- 0509:49
Every check passed or decided
Dr. Priya Raman · Study monitorPriya loads both as below LLOQ. The inspector now reads: “Every check passed or is decided. 9 values mapped to house units, each citing its cell or page.” Both decisions sit on the file with her name — the schema drift converted × 1,000 with template v4 saved, and the two samples loaded as below LLOQ.
- 0609:51 · Loaded
Nine values in the research data warehouse
Warehouse loaderOne click on “Load 9 values”. The warehouse loader checks the records against house schema v4, writes them with house units, qualifiers and flags, holds back no values, links each to its page or cell and refreshes the SAR view for the Cedar program. QB-1180 moves to Loaded — eleven minutes after it arrived.
The warehouse loader loads only when every exception on the deliverable is decided.
- 07Any value
Every value opens its source cell
Dr. Lena Ortiz · DMPK scientistIn the review, the workbook sits beside the record grid. Click NWB-5104, IV at 0.25 h, and a line runs to cell E5: as reported 1.284 µg/mL, in house units 1,284 ng/mL, confidence 97, “µg/mL converted to ng/mL (× 1,000) by the rule approved today”. The two 24 h samples read <LLOQ (1.0 ng/mL), not zero.
- 08Same morning
The change becomes template v4
Sam Patel · Research data stewardOn File templates, Quillon's plasma concentration export is now v4: column E reads µg/mL → ng/mL. The drift log for the quarter gains its newest row — Oct 7, QB-1180, unit changed, converted × 1,000, template v4 — Dr. Priya Raman. Earlier rows show how harmless changes were handled: a sheet renamed at Halden matched by content, a column moved at Pellucid matched by name.
Renamed or moved columns are matched above 95% confidence; a unit change in a header always stops the file.
- 09Next on her list
Halden marked it Pass. The contract does not.
Study-spec checkerHalden's metabolic stability study HB-26-0417 — 96 values from human and mouse liver microsomes, day 8 of 10 — is read with a page or cell for every value and 46 converted to house units. On page 6 the verapamil control on MLM plate 2 ran at 17.9 min. Halden's SOP accepts 3–20 min and calls it Pass; contract NWB-SOW-031 §4.2 allows 3–15 min, and the report notes a second freeze–thaw of microsome lot ML-2291 on that plate.
The study-spec checker never marks a failed control as passed — the contract range wins over the CRO's SOP.
- 10On the exceptions board
Hold, flag, record — or query the CRO
Dr. Priya Raman and Sam PatelEach exception arrives with its evidence and a proposed decision. For the plate 2 control: hold the 22 MLM values and ask Halden to repeat the plate with a fresh microsome lot. For NWB-4488, CV 31% against the contracted 20%: load with a “high variability” flag. NWB-4490, not incubated because it precipitated at 1 µM: record as “not tested — solubility”. Corrib's “NB-4493” is not on the shipped manifest, so Sam decides whether it is NWB-4439, digits swapped on the tube label.
“The agents propose — a named person decides.”