Instalação Rad Server

De UniWiki
Ir para: navegação, pesquisa
 Nota importante!!
 Até por volta da versão 7.09.002 do Unilab o RAD server era utilizado para rodar as APIs de resultados, financeiro e uniesteira do WS U2U.
 Porém, a partir desta versão, mais especificamente a partir da versão 3.0.0.0 do UniSMS estes recursos passaram a funcionar diretamente apenas com o serviço do UniSMS.
 Ou seja, se o cliente for utilizar um destes recursos citados, pode-se ignorar completamente esta página da wiki e utilizar o recurso diretamente com o Serviço do UniSMS precisando apenas alterar o .ini do mesmo e colocar o trecho:
 [WS]
 PORTA=XXXX - Alterando o XXXX pela porta que vai ser utilizada
 Para mais detalhes, ver a wiki de envio de SMS Envio SMS

O Rad Server é um servidor que pode executar projetos em delphi que podem ser Webservices, aplicações.
Hoje nossa única aplicação sob o Rad Server é um WebService para comunicação de resultados.
Que necessita um Post com dados do cadastro do apoiado e do paciente para funcionar, e retorna um xml de resultados U2U com todos resultados de um paciente.

É instalada alguma ferramenta de serviços WEB podendo ser Apache(Para Linux) e IIS(Para Windows)
Nesta ferramenta é levantada a DLL do radserver com as BPLs (Arquivos delphi do projeto) que contem os metodos HTTP e todo codigo para funcionamento da interface via WS.


 Instalar o Interbase Enterprise 2017, NÃO MUDAR O USUARIO E SENHA PADRAO
 O instalador está disponível em \\uniware-files1\storage-r\programas_inst\Interbase 2017. Nota: Instalar a versão normal 32bits
 Durante a instalação vai perguntar se deseja instalar multi-instancias, colocar que NÃO
 Requisitar instalação, serial e usuario e senha para algum superior
 iniciar o serviço e o guardião

Após a instalarção do Interbase, escolher se vai utilizar o Apache ou IIS, é necessário seguir apenas a instalação do escolhido (é recomendável seguir com o apache).

Instalação IIS (Windows)

Dar permissão para TODOS nas pastas:

C:\Windows\System32\inetsrv

C:\Windows\SysWow64\inetsrv
Instalar o IIS em: Painel de controle > Adicionar ou remover programas > Ativar ou desativar recursos do windows

Serviços de informação da Internet.


A embarcadeiro diz que basta instalar os seguintes modulos do iis: (Não traduzi os nomes por causa da informação que está por vir)


IWeb Management Tools, check IIS Management Console.

World Wide Web Services: expand the Application Development Features and then check ISAPI Extensions and ISAPI Filters.

World Wide Web Services: expand the Common HTTP Features and make sure that Default Document, Directory Browsing, HTTP Errors, and Static Content.

 Os nomes em portugues mudam um pouco do esperado, mas não traduzi mesmo porque se marcar tudo funciona e não pesa quase nada a mais!
 *Então instale o IIS inteiro*
 *Marque todas opções no ato de instalar o IIS, "SE ESTIVER UM QUADRADO NO CHECKBOX NAO TA TUDO MARCADO"
 Se não tiver a opção do IIS, baixe o da internet, do site da microsoft.

Copie a pasta Instalacao_RadServer_IIS.zip em: \\uniware-files1\distribuicao-r\UnilabVersoes\RAD

Extraia o conteudo em: C:\inetpub\wwwroot\rocha
Não esqueça de dar permissão na pasta.

Abra o arquivo emsserver.ini e dentro do arquivo aponte todos os paths e ResourceFiles para: C:\inetpub\wwwroot\rocha\

  • Abra a ferramenta de gerenciamento do IIS
  • Expanda os menus laterais na esquerda até chegar na pasta rocha
  • Dê um clique com o botão direito na pasta rocha e selecione: Converter para aplicação:
  • Abra a opção Mapeamentos de manipulador
  • Selecione a ISAPI-DLL que está cinza, edite, e selecione o executavel emsserver.dll
  • Clique em Ok, depois em sim.
  • Clique em Editar permissões do recurso
  • Marque o checkbox de Executar e clique em Ok:


  • Vá para a raiz dos itens na esquerda e selecione Restrições ISAPI E CGI
  • Selecione Editar configurações do recurso e marque: Permitir modulos ISAPI não especificados.
  • Vá para Pools de aplicativos na esquerda
  • Selecione o item: DefaultAppTool, clique em avançado e Mude o item "Habilitar Aplicações 32 Bit" para Sim
  • Abaixo da pasta rocha, selecione WebResources, clique em cabeçalhos de respostas HTTP, clique em add.
  • O conteúdo deve ser no primeiro campo: Access-Control-Allow-Origin e no segundo campo: *
  • Reiniciar o serviço e pronto!

Irá Criar um arquivo WS_U2U.ini na pasta que deu permissão na system32 ou na syswow64 /inetsrv, lá se configura qual a base

Instalação Apache (Linux)

  • Instalar o apache 2.4 *NOTA: É necessário utilizar o 32bits, caso seja utilizado o XAMPP o mesmo também precisa ser 32bits.
  • Criar uma pasta, por exemplo Rocha e copiar o conteudo da pasta Instalacao_RadServer_Apache.zip para dentro, que fica em: \\uniware-files1\distribuicao-r\UnilabVersoes\RAD *Nota: Observar que nesta pasta existe um arquivo para atualização do RAD Server também. Caso esteja fazendo a atualização do zero, utilizar o arquivo citado, porém caso esteja atualizando uma base que já possua o RadServer configurado, pegar todos os arquivos do .zip de atualização e substituir na pasta que ja existe.
  • (Esta parte não é mais necessária, mas vou deixar aqui apenas para registro)Criar virtualhost para o caminho da pasta.
  • Editar o httpd.conf do apache para adicionar modulos:
 LoadModule emsserver_module "Caminho Aqui/mod_emsserver.dll"
 LoadModule emsconsole_module "Caminho Aqui/mod_emsconsole.dll"

O caminho configurado é o da pasta criada anteriormente, lembrar de inverter as barras

  • Acrescentar logo abaixo as linhas:
 <Location /ems-server>
   SetHandler mod_emsserver-handler
 </Location>
 <Location /ems-console>
   SetHandler mod_emsconsole-handler
 </Location>


  • É recomendado pela embarcadeiro para mudar o listen para 8085, não sei o motivo. Testamos utilizando outras portas e funcionou normalmente sem problemas
  • Na pasta criada, configurar o emsserver.ini para apontar todos os paths e Resources para a pasta rocha. Pelo que testamos é necessário configurar em apenas dois locais, logo nas primeiras linhas, na variável "Database" e no bloco [Server.Packages], onde se seta o pacote.
  • Uma forma de testar se o server está funcionando e colocar no navegador http://IP:PORTA/ems-server/version, desta forma deve ser exibido um texto com a versão do RAD Server.
  • Caso seja apresentado algum erro de biblioteca (seja no teste acima ou abaixo), pegar a libmysql.dll da pasta do Unilab e colocar na System32 e SysWOW64
  • Para testar o recurso em si e gerar o ini de configuração do banco, é recomendado utilizar o Postman, para isso:
 Abrir o Postman
 Criar um projeto HTTP Request
 Modificar de GET para POST
 Colocar no endereço: http://IP:PORTA/ems-server/resultados
 Acessar a aba 'Body' e clicar na opção 'raw'
 colar o seguinte código:
   {   
   "apoiado": "0001", 
   "senha": "123456",
   "cpf": "",
   "rg": "TESTE",
   "json":"s",
    "dataini": "2022-01-01 00:00:00",
    "datafim": "2022-07-01 23:59:59" 
    }
 Explicando os dados: apoiado e senha são referentes ao código do apoiado e senha do cadastro do apoiado no Unilab, cpf e/ou rg é necessário para identificar o paciente, json vai ter o valor n (para devolver o resultado em XML) ou s (para devolver o resultado em JSON), dataini e datafim é para a api de faturamento, o que não vai ser abordado neste momento.
 Clicar no botão 'Send'
  • Após este teste (que possivelmente vai falhar, acusando não ter encontrado o banco de dados), basta acessar a pasta /bin do apache, dentro desta pasta vai aparecer um arquivo WS_U2U.ini, basta editar este .ini para configurar o banco correto do Unilab

Build e Distribuição do WS_USU

Esta parte da WIKI server apenas para procedimentos internos relacionados ao Delphi, para distribuir corretamente o WS_USU.

  • Para distribuir:
 Dar update na pasta onde se encontra o WS_U2U (Normalmente é a CVS_XE10)
 Abrir o projeto do WS_USU, normalmente fica em D:\CVS_XE10\WS_U2U 
 Na lista de projetos, verificar se está selecionada a versão Release e Windows 32-bit, se não estiver, selecionar
 Agora clicar com o botão direito no projeto 'WS_USU.bpl' e clicar em Build
 Ao terminar, abrir o menu Project>Deployment
 O Delphi vai exibir uma lista de dezenas de arquivos .bpl, basicamente é necessário acessar os caminhos indicados e copiar arquivo por arquivo indicado para alguma outra pasta temporária 
 Se o inicio do caminho estiver como $(BDS), normalmente se refere a C:\Program Files (x86)\Embarcadero\Studio\20.0
 Pronto, agora para atualizar basta pegar todos estes arquivos e substituir.

Funcionamento da API

Quanto ao funcionamento da API, primeiramente no cadastro do apoiado deve-se configurar uma senha para o WS, esta vai ser utilizada na busca dos dados. Atualmente existem dois recursos que podem ser utilizados com o WS_U2U:

  • Resultados: É possível buscar os resultados de um determinado paciente através do CPF ou RG do mesmo. Este resultado pode ser retornado em formato XML ou JSON, sendo o XML bem parecido com a estrutura de resultados do U2U.
  • Financeiro: Parecido com o anterior, é possível buscar pelos pedidos de um determinado paciente através do CPF ou RG e em um determinado período, também em XML ou JSON. A resposta desta solicitação trás os dados financeiros dos pedidos deste paciente (cada pedido é listado separadamente, com seus exames, valores faturados, códigos de CH, dados de guia e etc...).

Para ambos os recursos, basta realizar um POST na api específica (/resultados ou /financeiro) com os dados devidamente preenchidos. Estes dados serão listados abaixo, cada qual com suas explicações.

 {   
 "apoiado": "0001", - Código do apoiado no Unilab
 "senha": "123456", - Senha configurada no cadastro do apoiado do Unilab
 "cpf": "", - CPF do paciente, este é dado prioritário para buscar o paciente!
 "rg": "TESTE", - RG do paciente, este é o dado secundário
 "json":"s", - Indica se o resultado será em formato JSON (caso esteja marcado como "s") ou em formato de XML (caso esteja marcado como "n"). Este dado não é obrigatório e o Post pode ser realizado sem ele, o padrão é "n"
 "dataini": "2022-01-01 00:00:00", - Ambas as datas são referentes a data de entrada do pedido. Estes campos funcionam apenas para a API de financeiro.
 "datafim": "2022-07-01 23:59:59"  - Apesar de existir HORA, este dado não deve ser modificado, deve permanecer sempre 00:00:00 (inicial) e 23:59:59 (final)!
 }