Skip to content

Backend Integrations

Ankit Upadhyay edited this page Jul 24, 2026 · 2 revisions

Backend: Integrations

External providers behind interfaces — labs (IDEXX), the Merck veterinary knowledge base, and codes/terminology. Architecture context: FHIR and Interoperability. Part of Backend Overview.

Two adapter registries

  • src/integrations/ — a generic adapter registry, getIntegrationAdapter(provider) keyed by IntegrationProvider (IDEXX, MERCK_MANUALS). Files: integrations/index.ts, integrations/types.ts, integrations/idexx/{idexx.client.ts, idexx.adapter.ts, idexx-results.client.ts}, integrations/merck/{merck.client.ts, merck.adapter.ts}.
  • src/labs/ — a lab-order adapter registry, getLabOrderAdapter(provider) (currently IDEXX only): labs/idexx/{idexx-order.adapter.ts, idexx.shared.ts}, labs/{status.ts, types.ts, index.ts}.

Keeping providers behind getIntegrationAdapter / getLabOrderAdapter is the "agnostic labs" principle — adding Antech or an in-house analyzer is a new adapter, not a rewrite.

Labs (IDEXX)

  • Routers: lab-order.router.ts (LabOrderController + LabCensusController), lab-result.router.ts (LabResultController).
  • Controllers: web/lab-order.controller.ts, web/lab-result.controller.ts, web/lab-census.controller.ts.
  • Services: lab-order.service.ts, lab-result.service.ts, lab-status.service.ts, lab-census.service.ts, idexx-reference.service.ts, idexx-results.service.ts, idexx-results-query.service.ts.
  • Models: lab order/result entities are Prisma-only (their Mongoose models were removed in PR #1819).
  • Async: idexx-reference.*, lab-status.*, lab-results.* BullMQ jobs poll and ingest results into the companion timeline.

Merck (knowledge)

  • Router knowledge.router.tsweb/merck.controller.ts (MerckController) + app/merck.controller.ts (MerckMobileController); service merck.service.ts; controllers/merck/merck-response.ts. Surfaced in the mobile Merck feature.

Codes / terminology & audit

Supporting integrations that back clinical coding and audit:

  • Codes: code.router.tsweb/code.controller.tscode.service.ts, code-sync.service.ts, clinical-terms.service.ts; models code-entry.ts, code-mapping.ts. This powers the SOAP clinical-term autocomplete plan (GET /v1/codes/terms/suggest).
  • Audit: audit-trail.router.tsweb/audit-trail.controller.tsaudit-trail.service.ts, model audit-trail.ts.
  • Integration accounts (per-org credentials): integration.router.tsweb/integration.controller.tsintegration.service.ts (the entity is Prisma-only since PR #1819).

Related

Product & Domain
Architecture
Applications
Design & Accessibility
Engineering Handbook
Decisions (ADRs)
Design Docs & Plans
Roadmap
Operations
Meta

Canonical code & docs: main repo · Auto-generated companion: DeepWiki

Clone this wiki locally