Coder Social home page Coder Social logo

fellypsantos / cadsusweb Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 446 KB

Melhorias locais no ambiente de impressão do Cartão do SUS no CADSUSWEB.

License: MIT License

Batchfile 0.02% JavaScript 3.86% Nunjucks 21.68% TypeScript 4.27% CSS 70.17%
cns datasus cartao-sus cadsus cadsusweb sus

cadsusweb's Introduction

CADSUSWEB - Aprimoramentos

bg-graphics-header

Este projeto NodeJS foi desenvolvido para criar um servidor local que gerencia operações CRUD (Create, Read, Update, Delete) de dados, utilizando um banco de dados MongoDB para armazenamento offline dos Cartões do SUS emitidos na nossa Secretaria Municipal de Saúde. Além disso, inclui um userscript para instalação na extensão Tampermonkey.

server-running

Objetivo

O projeto foi concebido para atender à demanda por segundas vias de cartões, mesmo em situações de internet instável ou offline. A solução proposta envolve a criação de um cache local para armazenar os dados dos cartões, permitindo a emissão de segundas vias sem acesso à internet, contanto que os dados já tenham sido previamente salvos no banco local.

Além disso, o projeto aborda o desperdício de papel ao possibilitar a impressão de múltiplos cartões em uma única folha, otimizando o processo e reduzindo a quantidade de papel utilizada.

Recursos

  • Três botões adicionais para controle de fila de impressão.
  • Exclusão de cartões fila.
  • Impressão de até quatro cartões na mesma folha.
  • Fila de impressão implementada em localStorage.
  • Página de impressão com listagem de todos os cartões que estão em fila.

multi-card-print

Pré Requisitos

Certifique-se de ter as seguintes dependências instaladas:

Banco de Dados MongoDB

Instalação

  1. Instale o MongoDB Server em uma máquina principal.
  2. (Opcional) Instale o MongoDB Compass para gerenciar os dados no banco.

Configurações na LAN

Para acessar o banco em rede local:

  • Libere o acesso no firewall do Windows, criando uma regra de entrada para o programa mongod.exe e permitindo acesso à porta 27017.
  • Modifique o arquivo de configurações do MongoDB em C:\Program Files\MongoDB\Server\[VERSAO]\bin\mongod.cfg:
#network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0 # modifique aqui
  • Reinicie o serviço do MongoDB pelos serviços do Windows.

Instalação

  1. Na pasta do projeto, modifique o arquivo mongodb.ini, ajustando a propriedade SERVER_IP nas outras máquinas em rede para conter o IP da máquina principal que contém o MongoDB Server.
  2. Na máquina principal, não é necessário modificar a configuração de IP do servidor.
  3. Execute o arquivo SERVER.bat.
  4. Três endereços serão exibidos no terminal:
    • O primeiro mostra o IP usado para conectar ao MongoDB Server.
    • O segundo é o endereço para instalar o userscript no Tampermonkey.
    • O terceiro abre a página de pesquisa para buscar cartões no banco offline.
  5. O console acompanha um pequeno menú acessível através dos respectivos números.
  6. Por exemplo, pressione o número 2 para abrir a página de instalação o script.
  7. Pronto, tudo deve estar funcionando corretamente. Agora você pode utilizar o sistema CRUD e visualizar os dados no MongoDB Compass, se instalado.

Resumo dos Desafios Técnicos

O projeto enfrentou desafios técnicos significativos, abordados em diferentes etapas.

Persistência de Dados

A escolha do MongoDB para armazenamento local de dados foi baseada em sua simplicidade de instalação e uso. O desafio subsequente foi integrar os dados pesquisados no site CadSusWeb ao banco local. A solução envolveu a criação de scripts usando a extensão Tampermonkey para manipular conexões e elementos na página, permitindo a transferência dos dados para o banco MongoDB.

Conexão do Site com o Banco Local

A abordagem adotada foi a utilização da extensão Tampermonkey para injetar scripts nas páginas do site durante o carregamento. Isso permitiu a manipulação de conexões e elementos na tela, recriando janelas modais, adicionando botões e interceptando os dados de pesquisa para salvá-los no banco local. Essa abordagem manteve a identidade visual do CadSUS.

Servidor Local

Para facilitar a integração com o MongoDB, foi escolhido Node.js com Express para criar um servidor local. Esse servidor atuou como intermediário entre o script Tampermonkey e o banco de dados, gerenciando solicitações do CadSUS, verificando a existência de pacientes, salvando novos pacientes localmente e fornecendo acesso ao userscript.

Limitações

Por questões de segurança, o script Tampermonkey enfrentou limitações ao realizar requisições HTTP para endereços IP e não HTTPS. Isso exigiu que o servidor Node.js fosse executado em todas as máquinas, já que o script só conseguia fazer requisições para o localhost. A ideia inicial de centralizar o banco de dados e o servidor em um computador principal foi inviabilizada, resultando na necessidade de ter o servidor Node em todas as máquinas para contornar as limitações de segurança.

syste-architecture

cadsusweb's People

Contributors

fellypsantos avatar dependabot[bot] avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.