Implementar na tela de gerenciamento de permissões diferentes níveis de acesso por operações no banco de dados, ou relacionados (CRUD - create, read, update, delete; como nada é deletado, a inativação de um item do cadastro poderia ser um dos níveis de acesso).
Todos os objetos que dependem de permissões de acesso deverão também ser alterados.
Isso tornaria todo o processo mais seguro, pois além de impedir que usuários sem permissão acessem a determinadas telas, possibilitaria que o acesso seja possível, mas algumas operações, como criar ou atualizar uma entrada no cadastro, sejam bloqueadas.
Também facilitaria o controle de outras telas que abrem o mesmo cadastro, como visualizar intervenções, que pode ser acessada pela tela 'abrir intervenções', mas também por 'abrir análise de prescrição'.
Outra regra possível é que a ação de visualizar seja pai de todas as outras, pois se não é possível ler, automaticamente já é descartado a possibilidade de criar e atualizar.
Inativar um item, por ser na verdade uma ação de atualização, talvez não deva ser incluída como um nível extra.
Ex.:
[ ] cadastrar medicamento \Possibilidade de abrir a tela
[ ] visualizar medicamento \Ver a lista de medicamentos, caso contrário ela fica vazia
[ ] incluir novo medicamento \Poder incluir um item, senão o botão 'incluir' fica inativo
[ ] atualizar medicamento cadastrado \o botão 'atualizar' fica inativo ou não
[ ] inativar medicamento \a flag 'ativo' fica em modo somente-leitura
Outra possibilidade:
[ ] Visualizar medicamentos \Permissão de acessar o cadastro de medicamentos
[ ] incluir medicamentos \Permissão de incluir medicamentos pelo cadastro ou qualquer outro lugar, caso contrário o botão 'incluir' fica inativo
[ ] atualizar medicamentos \Permissão de atualizar os medicamentos pelo cadastro ou qualquer outro lugar, incluindo a flag 'ativo', caso contrário o botão 'atualizar' fica inativo
Ainda assim, mais uma possibilidade seria o controle de ações tela por tela, ou seja, eu poderia permitir a atualização de uma intervenção pela tela 'abrir análise de prescrição' mas não permitir pela tela 'abrir intervenções'. Ficaria muito mais longa a lista de permissões, mas ao mesmo tempo daria muito mais controle no fluxo de trabalho do usuário.
Por fim, é necessário balancear se a prioridade é controle do fluxo de trabalho ou das operações com o banco de dados. Impedir o usuário de alterar dados ou de acessar telas?