Repository navigation
UHM-9643: "Update OCL export" workflow: release in OCL, run the release check, open a PR - #769
Merged
Merged
Conversation
…via a PR Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
@lnball @mseaton haven't reviewed this yet, but this was something Claude suggested when I was working on an OCL skill... basically a one-step button to update the OCL dictionary. The goal was to get the point that we could build and release a new OCL library without to do any manual git work. If we think this is valuable I could try getting it set up and tested. |
lnball
approved these changes
Oct 30, 2026
lnball
left a comment
Member
There was a problem hiding this comment.
LGTM. But another timesaver would be that it tries to deploy the new OCL package on a server, it passes the OCL validation, and approves the PR. If it did that, Fiona or others without an SDK could make changes to the concept dictionary.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mseaton
approved these changes
Nov 1, 2026
mseaton
left a comment
Member
There was a problem hiding this comment.
Seems like a cool idea to me @mogoodrich !
The workflow now downloads ocl_release_check.py from the PIH/claude-plugins "ocl" plugin (main branch) and runs it on the new export, comparing it with the export already in the repo (--baseline), so only changed concepts are checked. Errors (e.g. a name uuid clash that would break the OpenMRS import, UHM-9656) fail the run and no PR is opened. The summary goes into the job summary and the PR description. A skip_release_check input exists for emergencies; the PR then says the check was skipped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New "release_new_version" option (with release notes): a "release" job, in the "ocl-release" GitHub environment so admins can require an approval, works out the next version (e.g. 1.8.50 -> 1.8.51), runs the release check on everything changed since the last release (--unreleased --fail-on error), and only then creates the released version in OCL. The export job then picks up that version. Releasing needs OCL_API_TOKEN to belong to a member of the PIH org in OCL. Also fixes an unused variable shellcheck flagged (actionlint is clean). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UHM-9643: adds a manually triggered GitHub Action so the PIH dictionary can be released in OCL, checked, and put into pihemr without checking out the repo.
Usage
Actions → Update OCL export → Run workflow. The options:
What it does
ocl-releaseGitHub environment, so admins can require an approval.--unreleased). If there are errors, nothing is released.export.jsonis the right version.content/configuration/backend_configuration/ocl/(orgs_PIH_sources_PIH_<version>_<timestamp>.zip). It does nothing if the repo already has that version.--export … --baseline …), so only changed concepts are checked. If there are errors, or the check can't run, the run fails and no PR is opened.ocl-export-<version>. The description has the OCL release notes, both check summaries, and who started the run. The check summaries also go on the run's summary page.The release check is
ocl_release_check.pyfrom the PIH/claude-pluginsoclplugin (PIH/claude-plugins#8). The workflow downloads it from claude-plugins'mainbranch, so it's the same check the Claude skill runs before a release, and new or retired checks apply here automatically.name-uuids: catches the UHM-9656 failure, a name UUID already used on PIH servers.clone-mappings: catches ICD-10/LOINC codes lost by OCL's$clonebug (UHM-9636).Setup
OCL_API_TOKEN: a PIH organization secret, shared with this repo only. For now it's Mark's personal OCL token (noted in the workflow), so releases made by the workflow show up in OCL as made by him. OCL has no service accounts, so the plan is a dedicated OCL user in the PIH org.GHA_WRITE_TOKEN: an organization secret, available to this repo. It opens the PR, so Verify PRs runs on it.ocl-releaseenvironment: created with required reviewers (Mark, Ellen, Mike Seaton) and deployment branches =masteronly. A release run pauses until one of them approves it under Review deployments, and a modified copy of the workflow on another branch can't release.Testing
actionlint(including shellcheck) is clean.🤖 Generated with Claude Code