Product
Solutions
Developers
Resources
Company
Request demo
Home · Developers
RING 00 The infrastructure

Build with sovereign-first infrastructure.

FHIR-native APIs, mature SDKs, clear architecture docs. Integrate in days, not quarters — without ever moving raw data.

FHIR R5 native OAuth 2.1 · mTLS 0 records moved
federation.lumkomdx.com python
$
Collecting lumkomdx ... resolved 1.3 MB
Installed in 0.6 s
 
from lumkomdx import Federation

fed = Federation(token=TOKEN)

cohort = fed.cohort(
    diagnosis="E11",
    age_range=(40, 65),
    last_hba1c__gt=7.5,
)
print(cohort.count(), cohort.sites)
› 12,847 14
audit_id a18c3e2f query 47 ms records moved 0
RING 01Build

Federated queries in three lines.

Identical semantics across SDKs and HTTP. The federation layer handles routing, consent, and audit transparently.

SDK reference
python · sdk
from lumkomdx import Federation

fed = Federation(token=TOKEN)

# Build a federated cohort — runs at every site
cohort = fed.cohort(
    diagnosis="E11",        # Type 2 diabetes
    age_range=(40, 65),
    last_hba1c__gt=7.5,
)

print(f"{cohort.count():,} patients across {cohort.sites} sites")
# › 12,847 patients across 14 sites
import { Federation } from "@lumkomdx/sdk";

const fed = new Federation({ token: TOKEN });

// Build a federated cohort — runs at every site
const cohort = await fed.cohort({
  diagnosis: "E11",          // Type 2 diabetes
  ageRange: [40, 65],
  lastHbA1cGt: 7.5,
});

console.log(`${cohort.count} patients · ${cohort.sites} sites`);
// › 12,847 patients · 14 sites
curl -X POST https://api.lumkomdx.com/v1/cohort \
  -H "Authorization: Bearer $LUMKO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "diagnosis": "E11",
    "age_range": [40, 65],
    "last_hba1c_gt": 7.5
  }'
FHIR API access

HL7 FHIR R5, federated by default.

Every clinical resource the spec defines, exposed as a federated endpoint. Your query fans out to participating sites; aggregated results return.

MethodEndpointPurpose
GET/v1/PatientPseudonymous resource list
GET/v1/ObservationLab + vitals (site-local)
POST/v1/cohortFederated cohort query
POST/v1/insightStudio reasoning + cite
POST/v1/consent/verifyPre-flight check
GET/v1/audit/{id}Signed audit trail
Full API reference
SDKs

One contract. Four languages.

Production SDKs with identical semantics, type-safe handles, and built-in retry. Pick the one your team already runs.

Pythonv1.4.0
pip install lumkomdx
TypeScriptv1.4.0
npm install @lumkomdx/sdk
Gov0.9.1
go get github.com/lumkomdx/sdk-go
Rv0.7.2
install.packages('lumkomdx')
SDK guides
RING 02Integrate

Land it where the data already lives.

Adapters for every major EMR, deployable pipelines, and a federation node that runs inside your VPC. Your data never leaves the building.

01
EMR integration

Connect to what you already run.

Ship-ready adapters for every major EMR — plus a generic FHIR adapter for anything else, including bespoke schemas.

  • EpicFHIR R5 + Bulk Dataready
  • CernerFHIR R4/R5 dual supportready
  • MeditechExpanse REST adapterready
  • OpenMRSFHIR2 module + extensionsready
  • AllscriptsUnity-to-FHIR adapterready
  • CustomGeneric FHIR + adapter SDKready
02
Data pipelines

Scheduled. Event-driven. Source-local.

Run normalisation and enrichment at the source. The federation node reads them; raw data never leaves the host.

SCHEDULE0 2 * * *Nightly cohort refresh
EVENTon: patient.admitTrigger on EMR event
STREAMkafka://hl7-v2Continuous ingest
03
Federation setup

One node. Inside your network.

Deploy the federation node to your own VPC with Terraform or Helm. We ship the modules; you keep the keys, the audit log, and the traffic.

deploy.sh bash
# Helm — Kubernetes cluster inside your VPC
helm repo add lumkomdx https://charts.lumkomdx.com
helm install fed lumkomdx/federation-node \
  --set token=$LUMKO_TOKEN \
  --set vpc.id=$VPC_ID

# Terraform — same shape, infra-as-code
terraform apply -var="region=af-south-1"
Architecture reference

Operator-controlled. The federation node runs on your infrastructure with your secrets. LumkoMDX never has a copy of your raw clinical data — and is structurally unable to access it.

RING 03Learn

Read once. Reach for it forever.

Guides for getting up the curve, a complete API reference, and architecture deep-dives — written like the code: precise and short.

Documentation

Guides & tutorials.

  • 01
    QuickstartFrom zero to first federated query in 12 minutes.
  • 02
    Cohort patternsCommon cohort shapes, with code.
  • 03
    Consent modelHow consent is verified at execution time.
  • 04
    Audit formatReading and exporting the signed audit log.
  • 05
    Adapter SDKWrap a bespoke EMR in 200 lines.
Browse all guides
API reference

Endpoints & schemas.

  • Patients6
  • Cohorts4
  • Insights3
  • Federation5
  • Consent4
  • Audit3
Base URL https://api.lumkomdx.com/v1
Open reference
Architecture guides

Why the system is shaped this way.

Long-form deep dives on federation, identity boundaries, the consent model, and threat surface — written for senior engineers.

Federation Layer architecture — sites and routing
Read the architecture
RING 04Common questions

Built to integrate.

01 How long does integration take?

Most institutions are running production federated queries within two weeks. The federation node is a single deployment; your existing FHIR endpoints handle the rest.

02 What gets installed inside my network?

A single federation node — a containerised service that receives queries, executes them locally against your data, and returns aggregated results. No raw data ever leaves.

03 Do you support non-FHIR data?

Yes. The federation layer ships with adapters for OMOP, i2b2, and bespoke schemas. Custom adapters typically take a week.

04 What about audit and consent?

Every query is signed, logged, and consent-checked at the patient level — at execution time, not sign-up. The audit log is yours; we never have copies.

05 What does the SLA look like?

Sandbox is best-effort. Production is 99.9% with regional failover, monitored at the federation node and the API gateway. SLO dashboards are part of the operator console.

06 How do you handle versioning?

The API is versioned in the URL (/v1). SDKs follow semver. Breaking changes get six months of overlap. Architecture guides flag deprecations as they happen.

PERIMETERStart building

Sandbox access in an afternoon.

Get a working federated environment, sample synthetic cohorts, and a token. No NDA required for the sandbox.

welcome.sh bash
# Step 1 — install
pip install lumkomdx

# Step 2 — authenticate
export LUMKO_TOKEN=sandbox.****

# Step 3 — your first federated query
python -c "from lumkomdx import Federation; \
  print(Federation().sites)"

# ['hospital_jhb', 'clinic_lagos', 'lab_nairobi', ...]