Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
1 Introdução 2
1.1 Sistema de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Front-end 2
2.1 Pagina Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Cadastro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 Edição de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Back-end 7
3.1 Armazenamento e Tratamento de Dados (XML) . . . . . . . . . . . . . . . 7
3.2 Principais Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.1 Login e Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2.2 Validação dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.3 Busca de informações . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.4 Estruturação de Tabelas do Pefil . . . . . . . . . . . . . . . . . . . 10
3.2.5 Reconhecimento de exames . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.6 Edição de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Resultados 12
5 Agradecimentos 17
1
1 Introdução
O presente trabalho propõe uma aplicação simplificada para gerenciamento de um
plano de saúde. Para tal, será utilizado pseudo-usuários padrão para cada categoria ao
longo do relatório para fim de explicações conforme a Tabela 1. Além disso, esses usuários
estarão nativamente cadastrados na aplicação para testes locais.
2 Front-end
Para a estruturação e customização da interface gráfica, não foi utilizado frameworks
como bootstrap ou bibliotecas como JQuery, portanto, utilizou-se unicamente HTML e
CSS. Essa decisão foi tomada para fins de aprendizado da base do front-end, princi-
palmente visando como seriam feitos elementos dinâmicos com essas linguagens. Nas
subseções a seguir será abordada a interface de cada página.
2
o próprio da página index.css e um que é comum a todas as páginas, trazendo algumas
padronizações, como os botões main.css.
(a) (b)
2.2 Cadastro
A página de cadastro é basicamente composta por entradas de texto, mas diverge em
algumas delas de acordo com o tipo de usuário. Como exemplo, na Figura 3, o cadastro
de pacientes possui a entrada no estilo “radio”, para inserção de gênero, que coincide
com o médico e se ausenta no laboratório e administrador. No caso do laboratório, existe
um campo em formato de lista de checkbox para inserir os tipos de exames que o mesmo
dispõe.
3
Figura 3: Página para cadastro de pacientes.
4
2.3 Login
A página de login possui duas etapas: na primeira (Figura 5), o usuário escolhe seu
tipo perante a plataforma. A escolha é feita por uma seleção estilo “radio”, com a exceção
do administrador, que dispõe de um botão para encaminhá-lo ao seu ambiente correspon-
dente, também de login. Na segunda etapa da página para login haverá os campos para
inserir e-mail e senha, de forma similar à Figura 5, porém com campos do tipo texto.
2.4 Perfil
Aqui temos uma aplicação de interface dinâmica, pois no perfil poderemos ver na
página a lista de exames ou consultas que o usuário está vinculado. Na Figura 6, refe-
rente ao perfil de um laboratório, a tabela se apresenta vazia, e seu preenchimento será
apresentado posteriormente na Seção 4. Para o caso do paciente, haverá duas tabelas,
pois o mesmo poderá estar vinculado tanto a exames quanto a consultas.
5
Figura 6: Página de perfil para laboratórios.
6
3 Back-end
Nesta seção será abordado as regras de negócio para a execução das funções que tan-
gem a aplicação, apresentando os principais algoritmos para ilustração da implementação
usada. Utilizou-se majoritariamente PHP para tais funções, e um pouco de Javascript
para funções auxiliares. Apenas bibliotecas nativas dessas linguagens foram utilizadas,
como a simplexml do PHP para lidar com permissividade dos dados por XML, investigado
na próxima seção.
7
<p r e s c r i p t i o n />
<o b s e r v a t i o n s />
</ c o n s u l t a>
</ c o n s u l t a s>
8
falta da conexão e retornará para página de login. Além das funções conectivas, os
cookies desempenham papel fundamental na aquisição de dados dentro da plataforma. A
Tabela 2 apresenta diferentes aplicações dos mesmos em diferentes escopos do sistema,
acompanhado de sua função e origem.
Verifica existência:
empty($ POST[“ ψ ”])
Limpa a entrada:
– Remove contra-barras:
stripslashes($data)
– Remove espaços antes e depois da string:
trim($data)
9
percorre o arquivo XML de laboratórios e compara o e-mail do laboratório atual (fornecido
pelo cookie) com cada instância de laboratório presente no arquivo, quando encontra,
armazena o valor da iteração.
$ xml = s i m p l e x m l l o a d f i l e ( ” . . / Dados/ l a b o r a t o r i o s . xml” ) ;
f o r ( $ i = 0 ; $ i < $ xml=>count ( ) ; $ i ++) {
$ l a b o r a t o r i o X m l = $ xml=>l a b o r a t o r i o [ $ i ]=> e m a i l ;
i f ( $ COOKIE [ ’ l a b o r a t o r i o ’ ] == $ l a b o r a t o r i o X m l ) {
$laboratorioId = $i ;
break ;
}
}
10
<?php e n d i f ; e n d f o r e a c h ; ?>
</tbody>
para o caso de uma mudança de nome de um laboratório. No caso, com o arquivo XML
instanciado como um objeto, basta modificar seus atributos para termos a edição, e para
efetivar a mudança, o objeto $xml é salvo ao final do código. O cenário que temos nessa
ocasião é que podemos mudar quaisquer dados simultaneamente e independentes entre
si, pois modificamos apenas aquilo que é recebido, visto que o teste de validação verifica
existência.
Outra modificação que pode ser requerida é a remoção de um tipo de exame de um
laboratório. Dentro da página de edição é apresentado uma lista dos tipos de exames
cadastrados para o laboratório em questão, usando o mesmo princı́pio do algorı́timo da
3.2.5. Ao lado dos nomes desses tipos, há um botão indicando a possibilidade da remoção.
11
Pressionando do botão e requerindo a remoção, o exame é buscado dentro do nodo “exa-
mes”, que por sua vez está dentro do nodo “laboratório”. Quando encontrado o código
é executado para a remoção da linha que corresponde ao exame a ser retirado. A veri-
ficação que identifica a remoção de tipo de exame é a primeira das verificações, e quando
chamada, ela própria salva o XML e executa um retorno, não dando continuidade à demais
edições, por se tratar de um botão especı́fico.
4 Resultados
Para uma validação do funcionamento da aplicação, ilustrações gráficas de seu funcio-
namento trazem uma noção de seu comportamento de acordo com os requisitos previstos.
Esta seção compila tais ilustrações, que em conjunto com a execução do código-fonte
validam o funcionamento pleno.
Em primeira instância, na página principal da aplicação podemos ver na Figura 8 que
não temos cookies criados, e no momento, todos os arquivos de dados estão vazios.
12
Figura 9: Momento antes do envio de cadastro .
13
Figura 11: Notificação de login e cookie gerado.
14
para teste da ferramenta, sendo o primeiro na Figura 12 (a) uma entrada inválida de
e-mail, sem o caractere “@”, nem uma finalização “.com”ou similar. Temos então um
erro de formato. No segundo teste, em Figura 12 (b), é inserido um e-mail no formato
válido, mas que não corresponde a nenhum usuário cadastrado, portanto, é apresentada
uma caixa de alerta com tal informação.
(a)
(b)
15
quando é aberto a página de edição. Pode ser visto que ambos retornaram apresentaram
os mesmos exames, que são os contidos no arquivo de dados.
(a) (b)
(a)
(b)
Figura 15: (a) Perfil laboratório e (b) perfil médico após cadastros.
Por fim, acessando a página do paciente, temos ambas tabelas apresentadas simulta-
neamente, considerando o paciente logado. Vale salientar que o paciente não recebe a
16
informação das observações.
5 Agradecimentos
Agradeço o Ubaldo por ceder seu nome para exemplificação do paciente, pode ser visto
na Figura 17. No caso da Diana e do LAMSA não tive autorização, espero que não me
processem.
(a) (b)
17