Skip to content

Run the whole lab (one command)

Run the clinical ecosystem brings the planes up one stack at a time. The umbrella orchestrator (general-hospital-lab) does the whole thing from one place — useful for a fresh stand-up, a demo, or a clean teardown.

It is a thin orchestrator: it owns the shared networks, the bring-up order, the cross-plane provisioning sequence, and a portal landing page. It does not duplicate any stack’s compose — each plane stays its own repo.

Clone all the repos as siblings under one directory:

~/lab/
├── samba-domain-controller (identity + docs-site)
├── gh-openemr (application)
├── gh-simhospital (activity)
├── gh-integration (integration)
└── general-hospital-lab (this umbrella)

The umbrella finds the others via STACKS=.. in its .env.

Terminal window
cd general-hospital-lab
cp .env.example .env
make up # shared networks + all four planes + docs + portal, in order
make provision # cross-plane wiring (see below)
# or both at once:
make demo
make status # container status across every plane
make portal # (re)build just the landing page
make down # stop everything (reverse order; keeps volumes)

make up runs in dependency order: identity (DC) → application (OpenEMR) → activity (Simhospital) → integration (OIE) → docs → portal.

make provision does the cross-plane wiring that can only happen once the stacks are up: OpenEMR’s AD auth + the full clinician cast + demo data + telemetry opt-out, then the OIE channel:

gh-openemr: fetch-ca · ldap-setup · provision-cast · no-telemetry · seed-demo · seed-immunizations
gh-integration: provision (deploy the ADT→OpenEMR channel)

make portal serves a landing page at portal.l.supported.systems — the front door, linking the four plane UIs (OpenEMR, the Simhospital dashboard, the interface engine, and these docs). It’s a tiny static site behind the edge proxy.

  • Daily / focused work on one plane → that stack’s own make targets.
  • Fresh stand-up, demo, or teardown of the whole hospital → the umbrella.