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.