{/* Tab strip */}
{tabs.map(t => (
))}
{tab === 'overview' && (
Address on file
{epic.addressOnFile}
Primary care
{epic.pcp.name}
{epic.pcp.clinic} · {epic.pcp.phone}
Care team ({epic.careTeam.length})
{epic.careTeam.map(m =>
{m.name} · {m.role}
)}
{/* key flags */}
{(epic.allergies.length > 0 || epic.careGaps.some(g => g.status === 'overdue')) && (
{epic.allergies.length > 0 && ⚠ {epic.allergies.length} allerg{epic.allergies.length === 1 ? 'y' : 'ies'}}
{epic.careGaps.filter(g => g.status === 'overdue').map(g =>
Overdue: {g.label})}
)}
)}
{tab === 'problems' && (
| Condition | ICD-10 | Onset | Status |
{epic.problems.map(p => (
| {p.label} |
{p.code} |
{p.onset} |
{p.status === 'active' ? Active
: p.status === 'remission' ? Remission
: Resolved} |
))}
)}
{tab === 'meds' && (
| Medication | Dose | Frequency | Prescriber | Since |
{epic.meds.map(m => (
| {m.name} | {m.dose} | {m.freq} |
{m.prescriber} |
{m.since} |
))}
)}
{tab === 'labs' && (
| Measure | Value | Flag | Ref range | Date | Trend |
{epic.labs.map(l => (
| {l.name} |
{l.value} {l.unit} |
{l.flag} |
{l.ref} |
{l.date} |
{l.trend && } |
))}
)}
{tab === 'encounters' && (
| Date | Kind | Provider | Reason |
{epic.encounters.map(e => (
| {e.date} |
{e.kind} |
{e.provider} {e.clinic} |
{e.reason} |
))}
)}
{tab === 'appts' && (
epic.appointments.length === 0 ?
No upcoming appointments on file.
:
| Date | Time | Kind | Provider | Reason |
{epic.appointments.map(a => (
| {a.date} | {a.time} |
{a.kind} | {a.provider} {a.clinic} | {a.reason} |
))}
)}
{tab === 'gaps' && (
| Care gap | Status | Due | Owner |
{epic.careGaps.map(g => (
| {g.label} |
{g.status} |
{g.dueDate} | {g.owner} |
))}
)}
{tab === 'imms' && (
| Vaccine | Last given | Status |
{epic.immunizations.map(i => (
| {i.name} |
{i.date || —} |
{i.due ? (i.due.includes('Overdue') ? {i.due} : {i.due}) : Up to date} |
))}
)}
{tab === 'sdoh' && (
epic.sdoh.length === 0 ?
No SDoH screenings on file.
:
| Screener | Response | Date |
{epic.sdoh.map((s, i) => (
| {s.q} |
{s.a} |
{s.date} |
))}
)}
{/* Allergies always inline below */}
{tab === 'overview' && epic.allergies.length > 0 && (
⚠ Allergies
{epic.allergies.map(a => (
{a.substance} · {a.reaction} ({a.severity})
))}
)}