Healthcare engineering guide
Telehealth Platform Architecture: Patient, Clinician, Pharmacy and Admin Systems
How to structure a connected telehealth platform across patient applications, professional review, administration, pharmacy integrations, APIs, background jobs, and auditability.
Conceptual architecture reviewed for software engineering; not a client architecture. This content is engineering information, not medical, legal, or regulatory advice.
A telehealth platform is easier to evolve when responsibilities are explicit. The architecture below is a general engineering pattern—not Medy’s internal architecture—and must be adapted to the organization’s clinical, regulatory, security, and operational requirements.
A conceptual system map
Patient web or mobile experience → application API → workflow and data services → clinical, administrative, pharmacy, payment, communication, and partner integrations. Background workers handle delayed or retried work; operational tools expose exceptions to authorized staff.
- Patient boundary: identity, forms, uploads, appointments, status
- Professional boundary: review queues and authorized decisions
- Operations boundary: support, orders, fulfilment, exceptions
- Integration boundary: provider adapters, webhooks, and synchronization
- Reporting boundary: approved, minimized operational views
Authentication is not authorization
A valid session establishes identity; it does not prove permission to read a patient record or perform a professional action. Enforce ownership, organization, and role rules on the server and database. Treat administrative support, clinical review, pharmacy operation, and marketing as distinct permission domains.
Workflow orchestration and state
Represent long-running journeys as explicit state transitions with guards. Do not let a button directly imply that an external payment, notification, or fulfilment action succeeded. Persist intent, process it safely, record the provider result, and expose failure to an operational owner.
- Idempotent commands and webhook handlers
- Transactional state changes where possible
- Outbox or durable job patterns for external work
- Retries with limits and dead-letter handling
- Human resolution for ambiguous outcomes
Data access, auditability, and retention
Separate operational access from analytics access. Minimize replicas of health data, record security-relevant actions, and define retention and deletion behavior with the data controller. Audit logs should be protected from ordinary editing and should capture meaningful actions rather than every harmless page view.
Payments and pharmacy connections
Keep provider-specific details behind adapters and use normalized internal states. Payment, prescription-related hand-off, dispensing, and carrier events have different authority and failure semantics. The user interface should show what is known, what is pending, and who can resolve an exception.
Deployment and testing
Test domain rules beneath the UI, integration contracts at provider boundaries, and complete critical journeys in a production-like environment. Use synthetic data only. Deploy incrementally, observe queue age and integration failures, and keep rollback paths for workflow changes.
Modernizing a tightly coupled platform
Start by adding observability and tests around high-risk behavior. Extract provider adapters and background work before splitting services. A modular monolith is often safer than premature microservices; separate deployment units only when ownership, scaling, reliability, or release constraints justify the cost.