Escolar Documentos
Profissional Documentos
Cultura Documentos
DOCUMENTAÇÃO DO PROJETO
CAMPO GRANDE MS
2023
SUMÁRIO
1. VISÃO GERAL DO SANGUE BOM.................................................................................4
2. INTRODUÇÃO...................................................................................................................4
3. LEVANTAMENTO DE REQUISITOS.............................................................................5
4. REGRAS DE NEGÓCIO..................................................................................................11
7. DESENVOLVIMENTO DO SISTEMA...........................................................................24
10. CONCLUSÃO...............................................................................................................38
LISTA DE TABELAS
Tabela 1: Requisitos Funcionais do Usuário..............................................................................4
Tabela 2: Requisitos Funcionais do Administrador....................................................................6
Tabela 3: Requisitos não Funcionais..........................................................................................8
Tabela 4: Regras de negócio do Sangue Bom..........................................................................11
Tabela 5: Casos de Uso do Sangue Bom..................................................................................17
Tabela 6: Níveis de acesso........................................................................................................27
1. VISÃO GERAL DO SANGUE BOM
A plataforma Sangue Bom tem como objetivo possibilitar fins assistenciais para
doação de sangue e medula óssea, facilitando e agilizando a comunicação entre Hemocentros,
postos de coleta e os usuários. Sangue Bom é focado em ajudar pacientes que necessitam de
doação de sangue e medula óssea.
O usuário terá acesso ao histórico de doação, coleta de informações e requisitos para
doação de sangue.
No Web App será possível a divulgação de campanhas de doação para o
abastecimento dos hemocentros, como também em casos de urgência, por exemplo, um
paciente que precise de transfusão de um tipo sanguíneo que esteja em baixo estoque.
Usuários também poderão divulgar campanhas, caso aprovadas pelos administradores.
No cadastro o usuário terá a possibilidade de adicionar também a doação de medula
óssea para em caso de necessidade, existir no banco de dados o público que está disposto a
essa respetiva doação.
2. INTRODUÇÃO
A doação de sangue e medula óssea é um ato de generosidade e solidariedade que
desempenha um papel crucial na vida de inúmeras pessoas em todo o mundo. Através desse
gesto altruísta, vidas são salvas, e esperança é oferecida a pacientes enfrentando condições
médicas graves. É um compromisso com a humanidade, uma demonstração de empatia e um
testemunho da força da comunidade global.
Nos últimos anos, o campo da doação de sangue e medula óssea tem avançado
significativamente, mas também enfrenta desafios contínuos. A demanda por produtos
sanguíneos seguros e compatíveis está em constante crescimento, e encontrar doadores
compatíveis é muitas vezes uma corrida contra o tempo. Além disso, garantir a segurança dos
procedimentos de doação é de extrema importância para a saúde tanto dos doadores quanto
dos receptores.
Nesse contexto, apresentamos com grande orgulho a documentação abrangente do
nosso Sistema de Doação de Sangue e Medula Óssea. Este sistema representa um
compromisso com a missão de tornar a doação mais acessível, eficiente e segura para todos os
envolvidos.
Ao longo das próximas seções deste relatório, vamos mergulhar profundamente na
importância, funcionalidades, do nosso sistema.
Com esta iniciativa, buscamos não apenas atender às necessidades imediatas da
comunidade, mas também contribuir para o avanço contínuo do campo da doação de sangue e
medula óssea. Estamos dedicados a oferecer esperança, salvar vidas e fazer a diferença no
mundo.
3. LEVANTAMENTO DE REQUISITOS
RF-02 Login
Descrição O usuário faz o login no sistema.
RF-05 Hemocentros
O usuário tem acesso a todos os hemocentros cadastrados na
Descrição
plataforma Sangue Bom.
O sistema exibe todos os hemocentros cadastrados na plataforma
Saída
Sangue Bom.
RNF-01 Desempenho
O sistema deve ser responsivo, garantindo que as consultas de busca
Descrição e recuperação de informações sejam concluídas em um tempo
aceitável, mesmo quando há um grande volume de dados.
RNF-02 Segurança
O acesso aos dados do sistema deve ser restrito apenas a usuários
Descrição autorizados. Deve haver medidas de autenticação, autorização e
criptografia de dados confidenciais.
RNF-03 Confiabilidade
O sistema deve estar disponível a maior parte do tempo, com tempo
Descrição de inatividade mínimo. Deve ser implementada uma estratégia de
backup e recuperação de dados para evitar perda de informações.
RNF-04 Escalabilidade
O sistema deve ser capaz de lidar com um aumento no número de
Descrição usuários e no volume de dados sem degradação significativa no
desempenho.
RNF-05 Usabilidade
A interface do usuário deve ser intuitiva e de fácil utilização. Deve
Descrição ser realizada usabilidade e testes de acessibilidade para garantir que
o sistema seja acessível a todos os usuários.
RNF-06 Manutenibilidade
Descrição O sistema deve ser projetado de forma modular, permitindo
atualizações e manutenção sem interromper o funcionamento normal
do sistema.
RNF-07 Compatibilidade
O sistema deve ser compatível com diferentes navegadores da web e
Descrição
dispositivos para atender a diversos tipos de usuários.
RNF-09 Integração
O sistema deve ser capaz de se integrar a outros sistemas utilizados
Descrição pela biblioteca, como sistemas de gerenciamento de bibliotecas e
sistemas de autenticação.
RNF-12 Privacidade
Deve haver salvaguardas para proteger a privacidade dos dados dos
Descrição usuários, incluindo informações de empréstimo e histórico de
pesquisa.
RNF-14 Desenvolvimento
O sistema deve ser desenvolvido na linguagem JavaScript, usando
Descrição
React e Node.js, utilizando o banco de dados SQL Server.
RNF-15 Criptografia
Descrição Deverá existir criptografia na senha do usuário/administrador.
4. REGRAS DE NEGÓCIO
Regras de negócio são declarações ou diretrizes que definem como uma organização
conduz suas operações e processos de negócios. Essas regras estabelecem as políticas,
procedimentos e restrições que orientam o comportamento dos sistemas de informação e dos
profissionais de TI em uma empresa ou projeto. As regras de negócio têm o objetivo de
garantir que as operações de TI atendam aos objetivos de negócios da organização de forma
consistente, eficiente e alinhada com suas estratégias.
7. DESENVOLVIMENTO DO SISTEMA
O desenvolvimento web é uma parte essencial do nosso projeto, pois é a interface que
permitirá aos usuários interagir com nossa aplicação. Abaixo, descrevemos os principais
aspectos do desenvolvimento web:
Parte superior: contém o nome da classe. Esta parte é sempre necessária, seja falando do
classificador ou de um objeto.
Parte do meio: contém os atributos da classe. Use esta parte para descrever as qualidades
da classe. É necessário somente quando se descreve uma instância específica de uma
classe.
Parte inferior: inclui as operações da classe (métodos). Exibido em formato de lista,
cada operação ocupa sua própria linha. As operações descrevem como uma
classe interage com dados.
Dando continuidade ao projeto, iniciamos com instância do banco de dados. Esta pode
conter vários bancos de dados que foram criados pelos usuários, sendo possível o seu acesso
através das mesmas ferramentas ou aplicativo do cliente.
Na sequência, foi utilizado o método “define” como na figura 5, para criação de uma
nova tabela no banco de dados. Esse método recebe o nome da tabela e todos os atributos
dela, bom como todos os campos que essa tabela vai possuir. Exemplo: nome, CPF, e-mail,
cidade, entre outras informações que podem ser de interesse das instituições.
Após criado a “model” foi utilizado o método “sync” do Sequelize, para poder seguir
realmente com a criação da tabela:
1. Model.sync() - cria a tabela se ela não existir (e não faz nada se já existir);
3. Model.sync({ alter: true }) - verifica qual é o estado atual da tabela no banco de dados
(quais colunas ela possui, quais são seus tipos de dados, entre outros), e então realiza as
alterações necessárias na tabela para que ela corresponda ao modelo.
Depois da “model” criada, tabela e banco conectado, planejamos as rotas que serão
consumidas pelo front-end, para acesso e manipulação das tabelas no banco. Para isso foi
utilizado o conceito de controller: responsável por intermediar as requisições enviadas pelo
View com as respostas fornecidas pelo model, processando os dados que os usuários
informaram, e repassando para outras camadas.
Figura 8: Rotas.
Ou seja, para conseguir cadastrar um novo usuário, o nosso front-end terá que enviar
os dados na rota “/usuário”. Na figura 10 está a demonstração do servidor rodando na porta
8000 no arquivo index.js:
A função “onFinish” tem como objetivo retorna a chamada após o envio das
informações do formulário, bem como a verificação dos dados. Na figura 12 segue o registro
no banco de dados como exemplo:
Fon
te: Elaborado pelos alunos.
Na figura 14 é apresentado uma função em que a senha é testada varias vezes para
verificar se segue as regras citadas acima, caso ela não siga alguma regra a senha é invalidada,
fazendo assim com que o usuário não consiga concluir o cadastro.
Senha: teste123
Depois da criptografia:
$2b$08$JoFlp1cwelca6n7XEUpMWeJFf6bePRoZ07BDCwuVUeOztgiszl9uW
Dessa forma a senha fica mais protegida contra possíveis acessos e tentativas de
fraude.
Também realizamos o uso de “Token de segurança”, e para isso utilizamos a
biblioteca JWT ou JSON Web Token que é um padrão da indústria definido pela RFC7519
que tem como objetivo transmitir ou armazenar de forma compacta e segura objetos JSON
entre diferentes aplicações.
O JWT é digitalmente assinado usando uma chave secreta com o algoritmo HMAC ou
um par de chaves pública e privada RSA ou ECDSA.
Exemplo de token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik
pvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6y
JV_adQssw5c
Também foi feito o uso de middleware que é um software que diferentes aplicações
usam para se comunicar umas com as outras. Ele oferece funcionalidade para conectar
aplicações de modo inteligente e eficiente, para que você possa inovar mais rapidamente.
No nosso caso o middleware executa sempre que uma rota especifica da API é
chamada, exemplo destacado a vermelho na figura 18:
O método “verify” que esta destacado a vermelho, na figura 19, realiza essa ação, se
for um token valido ele consegue prosseguir naquela requisição.