GNU Health/Servidor FHIR REST
Sobre FHIR e REST
[editar | editar código-fonte]Recursos de Interoperabilidade de Cuidados Rápidos (Fast Healthcare Interoperability Resources -FHIR) é um padrão para troca de informações de saúde desenvolvido eletronicamente por HL7. Para mais informações sobre FHIR, consulte http://hl7.org/fhir.
Transferência de Estado Representacional (Representational State Transfer -REST) é um estilo de arquitetura de software para serviços web escaláveis desenvolvidas pelo W3C Technical Architecture Group (TAG). Os sistemas baseados em REST podem ser acessados através do protocolo de transferência de hipertexto (HTTP), o mesmo protocolo que é usado por navegadores da Web para solicitar páginas da Web e enviar dados para um servidor Web. Para mais informações sobre REST, consulte https://pt.wikipedia.org/wiki/REST.
Instalação
[editar | editar código-fonte]O servidor requer o Flask e alguns de seus addons. E também, obviamente, uma instalação do GNU Health funcional.
Recomenda-se instalar os pacotes em um ambiente virtual usando virtualenv.
Configuração do ambiente (como usuário gnuhealth):
$ pip install virtualenv # Instale virtualenv usando Python (pode requerer root) $ cd my_work_folder # O nome que queira colocar na pasta do ambiente virtual $ virtualenv -p /usr/bin/python2 venv # Crie o ambiente com o interpretador Python 2.x $ source venv/bin/activate # Aive o ambiente
Agora instale os pacotes usando o arquivo de requisitos:
$ pip instalar -r requirements.txt
Alguns dos pacotes (como pywebdav) já estão instalados no sistema. No entanto, é geralmente mais fácil administrar e depurar o servidor Flask quando se trabalha em um ambiente virtual.
Mais ajuda com virtualenv.
Configuração
[editar | editar código-fonte]O servidor é fornecido com um arquivo de configuração de produção simples. No entanto, ele precisa ser editado.
server / config.py ---------------- TRYTON_DATABASE = '' # banco de dados GNU Health SERVER_NAME = '' # Nome de domínio do servidor (por exemplo, fhir.example.com) SECRET_KEY = '' # Defina esse valor como uma cadeia longa e aleatória </ pre> Há outras opções disponíveis para Flask e seus complementos: *[http://flask.pocoo.org/docs/0.10/config/ Flask] *[https://flask-login.readthedocs.org/en/latest/ Flask -login] *[https://code.google.com/p/flask-tryton/ Flask-Tryton] *[http://flask-restful.readthedocs.org/en/latest/quickstart.html Flask-Restful] *[https://flask-wtf.readthedocs.org/en/latest/ Flask-WTF] ==Segurança== Use TLS. Informações médicas sensíveis devem ser protegidas e confidenciais. Por padrão, todos os terminais FHIR exceto a declaração de conformidade exigem autenticação de usuário. A autenticação do usuário e acesso segue o modelo do Tryton, respeitando modelo de acesso e domínio dos direitos. As mesmas credenciais usadas para fazer login no GNU Health são usados para acessar o servidor FHIR REST. ==Execução do servidor== O servidor é fornecido com um script simples (run_server.py) na pasta ''server/'' para executar o servidor usando [http://www.tornadoweb.org/en/stable/ Tornado]. O script em si espera ser localizado a um nível de diretório acima da pasta ''server/''. Consequentemente, mova o script ''run_server.py'' um nível de diretório acima. Por exemplo: <Pre>$ mv /example/base/server/run_server.py /example/base/run_server.py
Com o ambiente virtual ativado e como o usuário gnuhealth, execute o servidor.
$ python run_server.py </ pre> No entanto, a maioria dos servidores de produção usam ''nginx'', ''lighttpd'' ou ''apache'' na frente do servidor ''Tornado''. Uma prática comum é ter ''nginx'' colocado na frente de várias instâncias Tornado, para balanceamento de carga, manuseio de SSL e servindo de conteúdo estático (como imagens e javascript comum). Como configurar um ''nginx/lighttpd + tornado + configuração flask'' vai além deste documento, embora não seja complicado, especialmente com nginx. ==Resolução de Problemas== ===Não é possível conectar ao banco de dados=== Certifique-se de que você está executando como o usuário ''gnuhealth''. Flask-Tryton deve encontrar automaticamente e analisar o arquivo de configuração Tryton. Se não for encontrado: <Pre> server / config.py ---------------- TRYTON_CONFIG = '' # Defina esta opção para o caminho do arquivo de configuração Tryton (por exemplo, '/weird/tryton/weird-tryton.conf')
Nenhum banco de dados com esse nome
[editar | editar código-fonte]Isto está relacionado com o erro anterior e ocorre quando Flask-Tryton não pode encontrar o arquivo de configuração Tryton. Seguindo o procedimento anterior deverá ajud-alo a corrigir isto.