cTAKES USDHUBClinician documentation
July 24-25, 2026Single batchComplete and checked

Batch 1 completed 1,708,157 notes in 9 hours and 47 minutes

Batch 1 is one accepted run of 1,708,157 notes. Four workers completed the recorded plan, the aggregate SQLite and both CSVs passed their final read-back, the sanity report recorded zero errors, and WSD runtime validation passed. The timing, 60.14-note-per-second processing rate, hardware context, output sizes, and preliminary urinary-stone counts below belong to this run only.

Download the complete Batch 1 report as a Word document.

The batch reached complete after every output check passed

The no-write input check inventoried all 1,708,157 notes once and finished in about 29 seconds. The accepted recovery contract then divided the batch into four async shards, assigned four pipeline threads and a 16,384 MB Java heap ceiling to each shard, and kept the aggregate Java heap ceiling at 65,536 MB. Combined observed memory stayed near 50 to 52 GB, and the output volume had 627.7 GB free after finalization.

Execution specificationBatch 1 valueEvidence boundary
Compute hostCPM2, Linux x86-64Run location plus host inspection
CPU capacity2 × Intel Xeon Silver 4216 at 2.10 GHz; 32 physical cores and 64 logical CPUsCPM2 lscpu inspection after the run
Installed memory404.7 GB decimal, reported by Linux as about 376.9 GiBCPM2 free -b inspection after the run
Async plan4 shards × 4 pipeline threadsAccepted recovery_contract.json
Java heap plan16,384 MB per shard; 65,536 MB aggregate ceilingAccepted recovery_contract.json
Clinical settingsSTAR recipe, SQLite + 2 CSVs, WSD on, strict filenames, XMI offRun manifest and receipt read-back
Software identityWrapper 2.1.19_2026AA.r1_6.0.0; Apache cTAKES 6.0.0; UMLS 2026AA dictionaryRun manifest and dictionary receipt
Sanitized cTAKES TUI completion summary showing 1,708,157 of 1,708,157 notes complete, a 9 hour 47 minute duration, and output checks passed.
Screen 1. The completed Batch 1 summary. The crop excludes local usernames and clinical paths. Open full size
Timing measureBatch 1
Processing window7h 53m 24s
Engine wall time8h 03m 12s
Post-engine validation and export1h 43m 46s
Complete wall time9h 47m 21s

The accepted output contains SQLite, two checked CSVs, and runtime receipts

The two CSV streams matched their scoped SQLite views during the final read-back. The sanity report passed the manifest, source-integrity, SQLite, WSD, embedded-source, and batch-CSV checks.

ArtifactApproximate sizeChecked state
annotations.sqlite81.47 GBSchema 8, checked
concepts.csv19.73 GBRow and cell parity checked
drugs.csv1.53 GBRow and cell parity checked
run_manifest.json8.9 KBComplete
sanity_report.json2.0 KBPass, zero errors
wsd_validation.json1.0 KBRuntime pass

The three main data files use about 102.73 GB in total. GB uses decimal storage units, where 1 GB equals 1,000,000,000 bytes.

The automatic handoff adds the batch-folder name

The canonical files stay named concepts.csv and drugs.csv inside the run folder because validation, recovery, and the viewer depend on those fixed names. After the run passes, the wrapper creates one owner-only handoff copy for each logical CSV under named-csv/. Because this input folder was batch_1, the automatic Batch 1 handoff is:

named-csv/batch_1--ctakes-async-20260724T232510Z-3615680/
  batch_1--ctakes-async-20260724T232510Z-3615680--concepts.csv
  batch_1--ctakes-async-20260724T232510Z-3615680--drugs.csv

The wrapper takes batch_1 from the selected notes-folder name automatically and adds the source run ID so separate runs cannot collide. Check output records each logical result once as canonical name → file to send. The automatic name has no handoff timestamp, so a retry verifies the same published bytes or rebuilds an interrupted unpublished staging directory instead of creating another timestamped set. A changed published CSV fails closed and is not overwritten.

Sanitized cTAKES receipt read-back showing complete and pass states, accepted current delivery, and checked output artifacts.
Screen 2. The receipt read-back after acceptance. The crop excludes the local username and clinical path. Open full size

Four direct urinary-stone CUIs identified the first cohort signal

The NIH project USDHub: community resource for Urinary Stone Disease research, project 1RC2DK140865-01, includes an aim to enrich USDHub from CT images and clinical notes with natural language processing and machine learning. This first readout checks whether the completed cTAKES batch contains the expected urinary-stone signal. It is an extraction inventory, not a phenotype validation or prevalence estimate.

The direct set used kidney calculi C0022650, kidney stone or nephrolithiasis C0392525, ureterolithiasis C0041952, and urolithiasis C0451641. NCBI MedGen documents the kidney-stone, ureterolithiasis, and urolithiasis mappings used in this preliminary set.

Direct urinary-stone measureCount
Candidate mentions178,146
Notes with at least one core CUI104,728
Notes with at least one core CUI not marked negated101,669
Notes containing only negated core-CUI mentions3,059
HubIDs with at least one core CUI4,548 of 4,996, or 91.0%
HubIDs with at least one core CUI not marked negated4,485 of 4,996, or 89.8%

The person-level coverage is consistent with a urinary-stone cohort, while 6.1% of all notes contain one of the four direct CUIs. The batch averages 342 notes per HubID, so a patient-level history cannot count every note or repeated mention as a separate event.

The aggregate signal supports variable development, not clinical conclusions

The direct-stone coverage supports the intended cohort signal. It does not prove that cTAKES identified every true stone history or excluded every false one. A related concept in the same note does not prove that the stone caused the other condition, that both concepts refer to the patient, or that they belong to the same clinical episode.

An exact lookup for acute kidney injury CUI C2609414 returned no rows in the narrow code set. That is a code-set gap to investigate, not evidence that acute kidney injury is absent. The next pass needs a broader CUI and synonym set before evaluating that variable.

The most common raw co-occurring concepts also included generic rows such as stone, kidney, history, and pain. The output preserves candidates by design. The 142.9 million concept rows therefore cannot be treated as finished research variables.

The preliminary query stayed aggregate and read-only

The analysis opened the accepted SQLite file in immutable read-only mode and selected aggregate fields from run_metadata, documents, cui_counts, and terminology columns in concepts.

  • No source note text was selected.
  • No HubID, NoteID, filename, path, or row-level clinical value was printed or copied into this report.
  • HubIDs appeared only inside COUNT(DISTINCT ...).
  • Related-concept counts were limited to notes containing one of the four direct-stone CUIs.
  • Counts overlap because one note and one HubID can contain several concepts.

The next pass should order approved note dates within HubID, separate current from historical and uncertain mentions, preserve conflicting evidence, collapse repeated references without collapsing separate events, and validate each final variable on a locked clinician-reviewed sample.

The install path now separates browser text from checkout execution

The README, install guide, troubleshooting guide, release notes, public TUI walkthrough, and versioned Word MOP use three separate steps: clone without running repository code, verify the exact remote/source/clean state with local Git, then run setup from that checkout.

The public site has no shell-command Copy button and no JavaScript path that writes site content to the clipboard. Commands and CSV examples remain visible and manually selectable. The site check fails if clipboard-writing code returns or if the clone command also invokes setup.sh or ./ctakes.

Continuethe exact artifact and handling contract behind this reportOutputs and review