Output database

The normal run writes:
outputs/<batch>/annotations.sqlite
Tables:
TableWhat it stores
run_metadataOne row per run_id: wrapper commit, dirty flag, cTAKES version, dictionary hash, pipeline hash, Java version, command line, input/output folders, writer profile, manifest path.
documentsOne row per note: document_id, text length, pipeline name, processed time.
conceptsClinical concept rows with span, text, section, CUI, RxCUI, preferred text, TUI, semantic group/type, assertion fields, POS, relation fields, and WSD fields.
rxnormMedication mention rows with span, CUI, RxCUI, RxNorm name, dose, route, frequency, form, duration, status change, allergy, start date, and end date.
cui_countsPer-document CUI counts split into affirmed and negated.
Useful first queries:
SELECT run_id, pipeline_name, writer_profile, dictionary_sha256, pipeline_sha256
FROM run_metadata;

SELECT COUNT(*) FROM documents;
SELECT COUNT(*) FROM concepts;
SELECT COUNT(*) FROM rxnorm;

SELECT document_id, text, rxcui, rxnorm_name, dose, route, frequency
FROM rxnorm
LIMIT 20;

CSV/XMI output

With --writers standard, the output folders are:
FolderWriter
xmi/FileTreeXmiWriter.
concepts/ConceptCsvWriter.
rxnorm/DrugRxNormCsvWriter.
cui_counts/CuiCountSummaryWriter.
DrugRxNormCsvWriter writes one *_drug.csv per note. The medication columns are:
Dose, DoseText,
TotalDose, TotalDoseText,
DosageCount, DosageCountText,
Route, RouteText,
Frequency, FrequencyText,
Form, FormText,
Duration, DurationText,
StatusChange, StatusChangeText,
Allergy, AllergyText,
StartDate, StartDateText,
EndDate, EndDateText
Empty medication cells mean cTAKES did not attach that attribute to that medication mention.

Run manifest

Every real run writes:
outputs/<batch>/run_manifest.json
The manifest records:
Field groupWhat it proves
run_id, started_at, statusWhich execution this was and whether it completed.
documentsHow many notes were planned and completed.
pipelinePipeline key, source .piper, effective .piper, and hashes.
wrapperRepo path, git commit, and dirty flag.
ctakescTAKES version and runtime home.
dictionarySource XML, effective XML, XML hashes, DB hash, and isolation reason.
javaJava binary and Java version line.
inputRequested input folder and runtime/sanitized input folder.
outputOutput folder, work folder, writer profile, and SQLite path.
invocationSanitized command args.
If someone needs to reproduce or audit a run, start with run_manifest.json, run_pipeline.effective.piper, and run_dictionary.effective.xml.