Skip to content

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 12:19
· 55 commits to main since this release
734d57a

This release makes the import step safer and the flattening step quieter. local_import now scans only the top level of a source directory, so you can point it straight at a TORCH output directory without a false duplicate error; set services.local_import.recursive: true to keep the old behavior. A CRTDL with two attributeGroups that write to one CSV file is now rejected before the first write, instead of losing rows and failing late with a confusing rename error. The report about columns with no data is removed, because an empty cell is normal for an optional FHIR element. CI enforces DCO sign-off on every pull request, and the repository has agent instructions in AGENTS.md.

What's Changed

Breaking Changes

  • fix(services): scan a local import directory non-recursively by defaultlocal_import copies every file it finds into one flat destination directory keyed by basename, so a recursive scan is safe only if all basenames are unique. A TORCH output directory broke this: the internal working directories (batches/, core_batches/, reports/) hold files with the same basenames as the real result bundles, which caused a false duplicate error. The scan is now non-recursive. To scan subdirectories, set services.local_import.recursive: true. The message "no FHIR NDJSON files found" names the flag, and the duplicate error lists the full path of every colliding file. (closes #683) #684
  • fix: reject CRTDL attributeGroups that write to one CSV file — two attributeGroups with one name wrote to one CSV file. The second group truncated the file of the first group, rows were lost, and the rename of the .partial file failed with "no such file or directory". ValidateCRTDL now stops the run before any CSV write and names the two attributeGroups that collide. A CRTDL with a duplicate attributeGroup name that ran before now fails validation. (closes #701) #702

Bug Fixes

  • fix(flattening): remove the report about columns with no data — the step wrote a warning for each batch, and one row without the column was sufficient to cause it, so a large job made many false warnings. Pull request #704 first reduced the report to one debug message for each job, behind --verbose. Pull request #706 removes the report: an empty cell is normal, because FHIR elements are optional, and a ViewDefinition that finds no data is a problem of the ViewDefinition, not of the transfer. (closes #703, #705) #704 #706

Internal & CI

  • ci: enforce DCO sign-off on pull requests with a workflow job. (closes #688) #690
  • docs: add agent instructions in AGENTS.md. (closes #614) #687

Dependency Updates

  • Go modules: aws-sdk-go-v2 monorepo #682; aws-sdk-go-v2/service/s3 v1.107.0 #694; klauspost/compress v1.19.2 #691
  • Docker images: fhir-flattener v0.1.0-alpha.8 #685 and v0.1.0-alpha.9 #693; miracum/fhir-pseudonymizer v2.32.0 #695; chrislusf/seaweedfs v4.41 #692; nginx-unprivileged:1.31-alpine #700; postgres:18.4 #689
  • GitHub Actions: actions/attest-build-provenance #686; step-security/harden-runner v2.20.1 #681; github/codeql-action #679
  • Tools and docs: fhir-ontology-generator v4.3.0 #696; errata-ai/vale v3.17.1 #680; vite v8.2.1 #698; vue v3.5.41 #697; lock file maintenance #699

Full Changelog