- Ya
- 26 Agosti 2026, 18:40 UTC
- Mwandishi
- kamo
- Ahadi ya
- 2d96610
EXPORT_PATIENT_DATA, VIEW_QUALITY_MEASURES and MANAGE_PATIENT_PORTAL were added to Java in August and never mirrored into the client enum, so RoleRightType.THE_RIGHT was simply undefined and the three surfaces they guard had no client-side gate at all. The server refused correctly the whole time; the UI just never asked. That is worse than it sounds on a compliance screen. Quality and the records office rendered for anybody with VIEW_PATIENTS, fired six requests, and showed the refusals as empty lists — "no unknown requesters", "no held matches" — when the truth was "nobody looked". A rail tile reading zero from a request that was never made is a false reassurance, and on the exchange monitor zero is exactly the number somebody is checking for. So: mirror the three rights, and gate what they guard. The section rail now carries only sections the member can open, and a bookmarked ?section=records from before a rights change falls back to Today rather than highlighting a tab above an empty frame. Inside the records office the five tabs are built from rights — its surfaces are guarded by three DIFFERENT rights server-side, so "can open the records office" was never one permission — and the loader skips the requests it knows will be refused rather than firing and discarding them, because each one wrote a denied-access row against a member who did nothing wrong, and PHI access review is a screen somebody reads. Portal invitations get their own gate on the chart: issuing one creates a standing login to that record, which is a larger act than handing over a copy of it. Somebody who may produce a record on request is not thereby somebody who may grant permanent access to it. A new parity test reads the Java enum and fails on drift in anything the mirror carries, and on any EHR right missing from it. The mirror is deliberately partial; it must not be silently partial, which is the whole bug.