Skip to main content

Health Records

These pages all follow the same pattern: fetch a list of FHIR resources for the patient, display them in a table, and allow filtering and sorting. Each row shows where the data came from (which EHR provider).


Conditions​

Route: /conditions
File: memberportal/src/pages/ConditionsPage.tsx
FHIR Resource: Condition

Shows the patient's medical conditions (e.g., Type 2 Diabetes, Hypertension).

What is displayed per row:

  • Condition name
  • Clinical status (Active, Inactive, Resolved)
  • Onset date
  • EHR source badge

Allergies​

Route: /allergies
File: memberportal/src/pages/AllergiesPage.tsx
FHIR Resource: AllergyIntolerance

Shows the patient's known allergies and intolerances.

What is displayed per row:

  • Allergen name
  • Reaction / criticality
  • Status (Active, Inactive)
  • EHR source badge

Medications​

Route: /medications
File: memberportal/src/pages/MedicationsPage.tsx
FHIR Resource: MedicationRequest

Shows the patient's medications. Clicking a row opens the detail page.

What is displayed per row:

  • Medication name
  • Dosage instructions
  • Status (Active, Stopped, etc.)
  • EHR source badge

Medication Detail​

Route: /medications/:medicationId
File: memberportal/src/pages/MedicationDetailPage.tsx

Full detail view for a single medication — includes prescriber, dosage instructions, start/end date, and reason for medication.


Procedures​

Route: /procedures
File: memberportal/src/pages/ProceduresPage.tsx
FHIR Resource: Procedure

Shows medical procedures the patient has had (e.g., surgeries, tests, therapy sessions).

What is displayed per row:

  • Procedure name
  • Status (Completed, In Progress, etc.)
  • Performed date
  • EHR source badge

Immunizations​

Route: /immunizations
File: memberportal/src/pages/ImmunizationsPage.tsx
FHIR Resource: Immunization

Shows the patient's vaccination history.

What is displayed per row:

  • Vaccine name
  • Date administered
  • Status (Completed, Not Done)
  • EHR source badge

Common pattern across all health record pages​

All these pages follow the same code structure:

1. Get patient ID from useMedplumProfile()
2. Fetch resources using medplum.searchResources(ResourceType, { patient: patientId })
3. Display in a DataTable with sorting and filtering
4. Show EhrSourceBadge on each row
5. Set page title using useHeader()

EHR source badge​

Every row shows a small badge indicating which EHR system (Epic, Healow, MEDITECH) the record came from. This is determined by reading the identifier[].system field on the FHIR resource — each EHR uses a unique system prefix (urn:epic:, urn:healow:, urn:meditech:).

Filtering​

Most pages include a filter dropdown that lets patients filter by:

  • EHR provider (e.g., show only Epic records)
  • Status (e.g., show only active conditions)

Empty states​

If no records exist, the page shows an appropriate empty state message (e.g., "No medications found") instead of a blank table.