Skip to main content

Patient Portal Service — Service Risk Register

Status: populated Owner: TBD Last updated: 2026-04-18 Companion: Service Template · 11 risks-and-tradeoffs

1. Risk Register

Risk IDRiskLikelihoodImpactOwnerMitigationStatus
RISK-PORTAL-01Premature result disclosure — unreleased lab or imaging result displayed to patient due to a release-policy enforcement bugLowCriticalEngineering LeadServer-side policy check mandatory on every upstream call; unit + integration tests for policy enforcement; release-policy regression suiteOpen
RISK-PORTAL-02Proxy scope escalation — proxy user accesses resource types beyond their granted scopeLowHighEngineering LeadServer-side scope check per request against ProxyDelegation.scope; dedicated proxy-scope unit tests; audit event on every proxy accessOpen
RISK-PORTAL-03PHI leakage via AI prompts — patient identifiers or clinical data inadvertently included in navigation assistant promptLowHighAI Product OwnerPrompt builder enforces no-PHI rule at code level; reviewed in every PR; tested in unit suite; ai-gateway-service moderation as second layerOpen
RISK-PORTAL-04Upstream service cascade failure — multiple upstream services down simultaneously leaving portal in partially degraded state that confuses patientsMediumMediumPlatform SREPer-upstream circuit breakers; per-section graceful degradation with clear user banners; health dashboard aggregates upstream statusOpen
RISK-PORTAL-05Account takeover via compromised MFA deviceLowHighIdentity / SecurityMFA mandatory; session anomaly detection (future); suspicious login → account suspension flow; Keycloak brute-force protectionOpen
RISK-PORTAL-06Export job serving stale or incorrect patient bundle — export worker assembles data across multiple upstream calls; partial failure produces incomplete bundleLowHighEngineering LeadExport job collects all sections before completing; any upstream failure marks job failed with errorDetail; patient retries; no partial downloads servedOpen
RISK-PORTAL-07Expired proxy delegation not enforced — proxy continues to access data after validTo date if clock drift or cron delayLowHighEngineering LeadvalidTo evaluated server-side on every request (not cached); daily cron sets status = expired for elapsed delegations; test covers boundary conditionsOpen
RISK-PORTAL-08Mobile push notification delivery failure — APNs/FCM unreachable; patients not notified of new resultsMediumLowPlatform SREPush is best-effort; portal UI polls for new results on next session open; runbook for push gateway recoveryOpen

2. Open Questions

  • Clarify MoPH policy on maximum data retention period for portal_access_events (currently: 7 years assumed).
  • Confirm whether SMS OTP is an acceptable MFA fallback for patients without smartphones (Afghanistan context).