Skip to content

Healthcare AI PlatformProduction

FHIR Telehealth Platform

We built a FHIR-native telehealth platform on Azure Health Data Services that keeps appointments, conditions, medications, imaging and care plans in one FHIR R4 record. Its Claude clinical assistant on AWS Bedrock is grounded in the open patient's record. Access to patient records is checked against roles, care teams and consent, and every access is logged.

  • FHIR R4 on Azure Health Data Services
  • AI grounded in one patient's record
  • Every record access audit-logged
.NET 10React 19Azure FHIR + DICOMAWS Bedrock (Claude)PineconeOHIF / DICOMweb

Healthcare & medical · Updated

The challenge

Clinicians needed the full clinical record — appointments, conditions, medications, imaging, care plans — in one place, with AI help that answers from the patient in front of them.

What we built· with the Bracket Mind team

  • Complete FHIR R4 clinical records on Azure Health Data Services — appointments, conditions, medications, observations, notes and care plans in one place
  • A Claude clinical assistant on AWS Bedrock, grounded in the open patient's record: six FHIR resource types embedded into Pinecone, chunked, and re-embedded in the background as the record changes
  • AI-assisted drafting of clinical notes, conditions, medications, orders and care plans
  • DICOM imaging end to end — a DICOMweb client for Azure's DICOM service, upload and validation, studies that open in an OHIF-based viewer, and expiring share links that can be revoked, with each opening recorded
  • Apple Health exports imported into FHIR — clinical records, ECG, XML and CDA — tracked in phases so an interrupted upload resumes instead of starting over
  • Patient-data access through one security service: role checks, CareTeam and Consent validation, and an audit log of who opened which record

How it fits together

  1. Clinicians

    • Web app

      React 19

  2. Platform

    • .NET 10 API

    • Security service

      Role, CareTeam and Consent checks; an audit log of who opened which record

    • Apple Health import

      Into FHIR; resumes from checkpoints

  3. Health data

    • Azure Health Data Services

      FHIR R4 records and DICOM imaging

    • OHIF viewer

      DICOMweb; expiring, revocable share links

  4. Clinical AI

    • Claude on AWS Bedrock

      Grounded in the open patient's record

    • Pinecone

      Six FHIR resource types, re-embedded in the background as records change

Simplified, and drawn only from this case study: what it shows, not every moving part.

Which engineering decisions shaped it?

  1. Clinical records are stored as FHIR R4 resources, not in our own tables

    Instead of
    A custom relational schema for clinical data, mapped to FHIR only when records are exchanged
    Why
    FHIR is HL7's standard for exchanging health records, so the platform's data is already in that shape, on a BAA-eligible managed service (Azure Health Data Services). The app's own database keeps operational state, such as sync tracking, import jobs and role assignments.
  2. The assistant answers from the open patient's record

    Instead of
    A general medical chatbot, or one search across every patient's records
    Why
    Clinicians wanted AI help that answers from the patient in front of them. Retrieval is filtered to the open patient's record, so the context Claude works from is that patient's conditions, medications, observations and notes, re-embedded in the background as the record changes.
  3. The AI index follows FHIR, not our own save events

    Instead of
    Re-embedding a record only when our app saves it
    Why
    FHIR is the source of truth, and other apps can create, change or delete records without going through ours. A background job picks up resources changed since its last run, and a reconciler compares FHIR with the sync log to add missing records, remove deleted ones and refresh stale ones.
  4. Apple Health imports save checkpoints and resume

    Instead of
    Restarting a failed import from the beginning, as the first version did
    Why
    A crash late in a large import used to mean downloading, parsing and posting everything again: 40 minutes lost on a 40-minute import. Each import now records its phase and a checkpoint (sizes, counts and dates, never patient data), so an interrupted one picks up where it stopped.

Why it matters

Healthcare is where careless AI gets you sued. The assistant is grounded in the record of the patient the clinician has open, patient-record access is checked against roles, care teams and consent and then logged, and patient data is redacted from application logs. If you're building anything touching patient data, this is the discipline you're hiring.

Our founder's part

Haseeb Attaullah: Lead engineer on the platform's FHIR back end — the FHIR R4 integration, the first version of the clinical assistant, DICOM imaging and share links, and the Apple Health import; led the move to .NET 10.

Building something like this?

Tell us what you're building. We reply within 0–4 hours with honest feedback on scope, timeline and whether we're the right fit.

contact

Have a product to ship or an AI feature to get right?

Tell us what you're building. Replies within 0–4 hours, with honest feedback on scope, timeline and whether we're the right fit.

Book a 30-min call