QA and release assets¶
The scripts repository produces reproducible artifacts that supplement the CIEL Lab UI.
OpenMRS SQL¶
generate_mysqldump_from_ocl_version.py converts an OCL CIEL export ZIP or JSON
file into an OpenMRS 1.11-compatible concept dictionary dump.
Validate the result at two levels:
tests/test_generate_mysqldump_from_ocl_version.pycompares parsed schema and INSERT data without a database.tests/test_generate_mysqldump_from_ocl_version.shimports reference and generated dumps into disposable MySQL databases and performs a semantic comparison.
Treat PASS WITH CAVEAT as a review state, not an unconditional release pass.
Name validation assets¶
generate_name_validation_assets.py creates CIEL Lab-compatible CSV inputs from
WhoNamedIt and NCBI Taxonomy. Outputs separate:
- genus names;
- proper-name exceptions;
- eponym author data.
Record the upstream retrieval date so a later rule change can be reproduced.
ICD-11 mapping QA¶
qa_check_non_normalized_ciel_icd11_codes.pyfinds complex mappings that need normalization review.qa_check_broken_icd11_mapping_parts.pychecks each mapped part against Simple TabulationCodeandBlockId.check_newlyadded_icd11_codes_against_ciel_concepts.pycompares WHO changelog additions with CIEL.check_retired_duplicate_mappings.pydetects duplicate mapping keys when at least one member is retired.
Description-property migration safety gate¶
The description-property migration for issue #2754 is a reviewable artifact workflow, not an automatic production update.
- Run
audit_ciel_description_property_readiness.pyagainst an immutable CIEL export. It inventories markers, non-canonical labels, and ambiguous reference/definition signals without inferring a property or writing to OCL. - Curators review the generated CSV/NDJSON queue and approve only explicit decisions.
- Run
hydrate_ciel_description_property_candidates.pyas the final read-only live-HEAD gate. It excludes retired or changed candidates and stops artifact generation when retrieval is incomplete. - Run
ciel_description_properties_migration.pyto produce the offline NDJSON, before/after review data, and audit reports. Review conflicts and unsupported property types before any manual OCL import.
The generated Concept lines preserve complete names and descriptions because an OCL Concept bulk update is not a PATCH. Apply only a reviewed artifact through the manual import workflow.
Enrichment¶
generate_expanded_synonyms.py produces resumable NDJSON with expanded clinical
descriptions. Its output is model-generated and must be reviewed.
etf_ciel_source_v2026_02_06_expanded_synonyms.py merges reviewed descriptions
into OCL-ready output and can split large imports into ordered source, concept,
and mapping chunks.
Publish to Liquibase Runner¶
liquibaserunner_upload.sh uploads a ZIP through the GitHub Contents API. It
reads LIQUIBASE_RUNNER_TOKEN from a private .env. Before upload:
- verify the SQL tests;
- inspect archive contents and version names;
- confirm the target repository/path;
- preserve the checksum;
- publish with a least-privilege token.