Saltar para o conteúdo

GNU Health/Servidor FHIR REST

Origem: Wikilivros, livros abertos por um mundo aberto.

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.

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.