open.gismo · data loading · Part 2

Fit

Four screens, clickable. A user drops an export folder, reads what fits and what does not, maps one domain column by column, and reviews the configuration change it writes back into their own study repository.

The scenario the screens are built against

A sponsor has a Phase 2 study running in an EDC, with central labs from a vendor. They fork the study-repo template, and they have a folder.

What they have

Eleven files, three formats, one folder

An EDC extract as CSV, a central-lab SAS transport, a site list somebody keeps in Excel, and a define.xml. Column names are SDTM-ish upper case. The lab file’s subject identifier is site-prefixed; the demographics file’s is not.

What open.gismo wants

Fourteen domains, 126 columns

Counted from demo-301/workflows/1_mappings/. Findings and events are lower-case SDTM-adjacent (lbstresn, aeterm); subject, site and enrolment are operational-EDC shaped (invid, agerep, enrollyn, subject_nsv). Neither SDTM nor ADaM arrives fitting.

What happens today

They edit YAML, by hand, against a spec they cannot see

og_validate() prints which file and column is missing. Fixing it means opening fourteen workflow files and adding source_col: lines — a key that exists, works, and is documented nowhere a user of open.gismo would look.

The four screens

Click the numbered steps. The third screen is live: change a mapping and the preview, the readiness line and the diff on screen four all move with it.

open.gismo — PROTO-24-002 — Setup › Data

Point at your data

open.gismo copies what you give it into input/ as plain CSV and leaves the originals alone. The project folder stays a folder of text files you can read, diff and review.

Drop a folder here
CSV · SAS7BDAT · XPT · XLSX  ·  or og_init("PROTO-24-002", from = "~/exports/2026-08-20")
Choose a folder…

11 files read · 9 placed · 1 ambiguous · 1 ignored

FileReads asWhy open.gismo thinks so
dm_2026-08-20.csvRaw_SUBJ13 of 15 spec columns present after case-folding · one row per SUBJID
ae.csvRaw_AE16 of 16 present after case-folding
lb_central.xptRaw_LBSAS transport, converted on import · 13 of 14 present
lb_local.csvRaw_LB ◐ second candidateAlso fits Raw_LB. Stack the two files or choose one — open decision D7
eg.csvRaw_EG9 of 10 present · egblfl absent
pd.csvRaw_PD6 of 6 present
enroll.csvRaw_ENROLL7 of 7 present
queries_20260820.csvRaw_QUERY4 of 5 present · subject_nsv absent
sites.xlsxRaw_SITESheet 1, converted on import · 9 of 9 present
study.csvRaw_STUDY6 of 15 present — the rest is protocol metadata, not an extract → study card
define.xmlIgnored. open.gismo reads no define.xml today — open decision D6
Continue to the fit report Add another folder

Nothing has been written yet. The next screen is the last one before anything lands in the repository.

Screen three is live — change any of the three highlighted rows and screens three and four both update. The other screens are fixed.

What the four screens are arguing

Screen 1

Accept what people have, then normalise once

Transport files, Excel and CSV all come in the front door and are written out as CSV into input/. The conversion happens once, at import, so the project folder keeps being the plain, diffable, forkable thing the whole product rests on.

Screen 2

Report fit, not file existence

Today’s validation asks whether the columns are there. This asks whether the study will produce anything: do the identifiers join, and what do you lose by going without a domain. Both are answerable before a pipeline runs and neither is asked today.

Screen 3

Show the requirement beside the data

A user cannot map to a spec they cannot see. Putting the required column, its type and its downstream consumer next to their own column with a proposed match and a stated reason is the whole surface. It is a grid, not a wizard.

Screen 4

Write it back, always

Every commercial platform with a real mapping surface keeps the result inside itself. safetyGraphics — our own ancestor — is the one surveyed tool that hands the mapping back as code. This goes one step further and makes it a reviewed file in the study repository.