The listing is unchanged
The certified listing names the major version, so every 8.x release sits inside the same listing. We pin 8.2.0 rather than the newest point release for maturity, not compliance.
Core
We host OpenEMR 8.2.0 exactly as the project publishes it — same files, same checksum, no patches and nothing dropped into its directories. Everything we build reaches it over its own APIs, from the outside. That single rule is what makes all the rest of this safe.
Why it matters
This is how most OpenEMR deployments end up stuck. A vendor adds a feature by editing a core file, then another, and eighteen months later the install cannot be upgraded without re-doing work nobody documented — and the certified version on the listing is not the version actually running.
So core/ here is replaced wholesale and only deliberately. A pin file names
the release and its checksum, one command verifies the tree against it, and another shows
what has shipped upstream since. If our copy ever differs from the published release by a
single byte, the check fails and says so.
bin/core verify does core/ match the pin? bin/core install download, checksum, install bin/core check-upstream what has shipped since bin/core routes the API surface we build on
Not a convention. There is no supported way to change
core/ other than replacing it.
Certification
The certified listing names the major version, so every 8.x release sits inside the same listing. We pin 8.2.0 rather than the newest point release for maturity, not compliance.
Our code talks to OpenEMR across a network boundary. That is the right engineering answer, it is the OpenEMR project's own stated preference, and it happens to be the licensing answer too.
Because there is nothing to re-apply. Moving between releases is one line in the pin file, and a route check afterwards to see whether the API surface moved under us.
Three ways to have it
Hosted, backed up, restore-drilled, monitored. The application your staff already know, run properly, with nobody's fingerprints on it.
Our own front end on the same database. Staff who prefer the original keep using it; the two coexist because they are reading the same tables.
Reminders, referrals, booking, the patient app, payments — over the API, so they work the same whichever front end your staff are looking at.
See the modulesEither way the record stays in a shape any OpenEMR can read — including one that is not ours.