Still stuck? Post in the Q&A discussion board or open an issue.
Python 3.12 is required. Other versions are not supported and may cause unexpected errors or incorrect validation results.
python --versionDownload Python 3.12 from python.org if needed.
Remove the quarantine attribute:
xattr -rd com.apple.quarantine .This is typically caused by a corporate firewall performing SSL inspection. CORE connects to api.library.cdisc.org on port 443. Contact your IT department to either obtain the corporate CA certificate bundle or request whitelisting for that hostname.
An API key is required for controlled terminology and library metadata. Rules are accessible without a key. Running update-cache without a key will still populate conformance rules.
To obtain a key: wiki.cdisc.org — Getting Started
Note: It can take up to an hour after sign-up for a key to be issued.
Set it as the CDISC_LIBRARY_API_KEY environment variable, or add it (without quotes) to a .env file in the project root directory:
CDISC_LIBRARY_API_KEY=your_key_here
- Console output / logs: By default, engine logs are disabled. Use
-l/--log-levelto enable them. Available levels:info,debug,warn,error,critical. - The output report: Open the results file and review the Rule Report tab (XLSX) or the top-level
Rules_Reportarray (JSON). Rules with a status ofSKIPPEDwill include a reason in the Issue Details — this is often the cause of unexpectedly absent results. - Scope flags: Confirm that your
-s,-v, and for TIG-ssarguments match the standard, version, and substandard you intended to validate against. A mismatch will cause rules to be silently out of scope.
If you're still not seeing expected results after checking the above, post in the Q&A discussion board and include the relevant log output and the rule IDs you expected to run.
| Status | Meaning |
|---|---|
SUCCESS |
Rule ran; no issues found. |
SKIPPED |
Rule did not run (column/domain not found, schema validation off, outside scope). |
ISSUE REPORTED |
Rule ran; issues were found. |
EXECUTION ERROR |
Rule failed unexpectedly. Check the Issue Details tab for details. |
CORE defaults to utf-8. If your files use a different encoding, specify it:
python core.py validate -s sdtmig -v 3-4 -dp path/to/dataset.xpt -e cp1252NOTE: you may notice a
'utf-9' codec can't decode byteerror in the logs. This is usually due to Windows Smart Quotes, produced in excel, which are CP1252 encoded, not utf-8. Unfortunately, Windows Smart Quotes produce a file that is mostly utf-8 with some CP1252 for the smart quotes so the -e command will not work to resolve this. You will need to locate these quotes and manually change them before being able to rerun this data.
Will using -d pointed at my data directory cause CORE to include my Define-XML file in the validation?
No. Define-XML must be provided separately via --define-xml-path (-dxp).
Set DATASET_SIZE_THRESHOLD=0 to force Dask processing for all datasets regardless of size:
# Linux/Mac
DATASET_SIZE_THRESHOLD=0 ./core validate -s sdtmig -v 3-4 -d /path/to/datasets
# Windows PowerShell
$env:DATASET_SIZE_THRESHOLD=0; .\core.exe validate -s sdtmig -v 3-4 -d C:\path\to\datasetsOr add to a .env file in the root directory:
DATASET_SIZE_THRESHOLD=0
By default the engine uses Dask automatically for datasets exceeding 1/4 of available RAM.
TIG requires --substandard and, in the case of custom domains, --use-case to identify what use case the custom domains are applicable to.
python core.py validate -s tig -v 1-0 -ss SDTM -uc INDH -d /path/to/datasetsValid substandards: SDTM, SEND, ADaM, CDASH
Valid use cases: INDH, PROD, NONCLIN, ANALYSIS
Use -r to include specific CORE IDs, or -er to exclude them:
# Only these rules
python core.py validate -s sdtmig -v 3-4 -d /data -r CORE-000001 -r CORE-000002
# All rules except these
python core.py validate -s sdtmig -v 3-4 -d /data -er CORE-000001You can view and clone the CDISC CORE rules at cdisc-open-rules
No. All input data remains local to the machine where CORE is executed. Specifically:
- Study files are read directly from the local filesystem (or a specified input path) and are never uploaded or transmitted anywhere.
- Validation runs entirely in-process on the local machine (or whatever environment CORE is deployed to — on-premises server, cloud VM, container, etc.).
- The output report is written locally upon completion (or to a specified output directory).
- All metadata required for rule execution (controlled terminology packages, standard metadata, etc.) is pre-fetched via
update-cacheand bundled at release time. Rule Validation execution itself requires no outbound network calls carrying study data.
No patient or personal data ever leaves the environment where CORE is installed, supporting compliance with data protection requirements such as HIPAA, GDPR, and sponsor data governance policies.
- Custom rules are individual rule definitions stored in the cache by CORE ID.
- Custom standards map a standard identifier to a list of rule IDs, acting as a lookup for which rules apply.
Add your custom rules first, then create a standard that references them. See CLI Reference → update-cache for details. Custom Rules & Standards continue to be a work in progress, there are tickets within CORE's Issues to full implement further support for them in the future.
Yes. If you name your custom standard after an existing CDISC standard (e.g. sdtmig/3-4), CORE will fetch library metadata for that standard while applying your custom rules.
- Search existing Q&A: GitHub Discussions
- Open a new discussion: For questions or usage help
- Open an issue: GitHub Issues for bugs or feature requests