Patients can be admitted, transferred, and discharged from unit/bed stays with occupancy sync, so MAR and ward boards have inpatient context. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -566,7 +566,31 @@ class CarePermissions
|
||||
}
|
||||
}
|
||||
|
||||
return array_keys($merged);
|
||||
return $this->withDerivedAbilities(array_keys($merged));
|
||||
}
|
||||
|
||||
/**
|
||||
* Floor clinicians who record vitals may also place patients on care units/beds.
|
||||
*
|
||||
* @param list<string> $abilities
|
||||
* @return list<string>
|
||||
*/
|
||||
protected function withDerivedAbilities(array $abilities): array
|
||||
{
|
||||
if (in_array('*', $abilities, true)) {
|
||||
return $abilities;
|
||||
}
|
||||
|
||||
if (in_array('vitals.manage', $abilities, true)) {
|
||||
$abilities[] = 'inpatient.placement.view';
|
||||
$abilities[] = 'inpatient.placement.manage';
|
||||
}
|
||||
|
||||
if (in_array('analytics.department.view', $abilities, true)) {
|
||||
$abilities[] = 'inpatient.placement.view';
|
||||
}
|
||||
|
||||
return array_values(array_unique($abilities));
|
||||
}
|
||||
|
||||
public function isAdmin(?Member $member): bool
|
||||
|
||||
Reference in New Issue
Block a user