CONTEÚDO
- Visão Geral
- Configurações INI
- Verbos
- Exemplos de chamada da API
- Atributos de Resposta
- Pontos de Entrada
- Parâmetros
01. VISÃO GERAL
A API procedures foi desenvolvida para ser utilizada em conjunto com o Portal Autorizador (HAT) auxiliando a busca de procedimentos nas rotinas de Digitação de Guias e Jornadas de Atendimento.
VERBO GET
Através do verbo GET, a API retorna os eventos disponíveis para utilização realizando a busca através de um filtro complexo ou por código de procedimento (via pathparam).
Exemplos:
- Via filtro complexo: http://localhost:8080/rest/totvshealthplans/v1/procedures?action=typeAhead&pageSize=7&customWhere=1&filter=(tableCode%20eq%20%2718%27%20or%20tableCode%20eq%20%2719%27%20or%20tableCode%20eq%20%2720%27%20or%20tableCode%20eq%20%2722%27%20or%20tableCode%20eq%20%2700%27%20or%20tableCode%20eq%20%2798%27)%20and%20%20procedureId%20startswith(%27CONSULTA%27)%20or%20procedureDescription%20startswith(%27CONSULTA%27)&procedureId=10101012
- Via ID (pathparam): http://localhost:8080/rest/totvshealthplans/v1/procedures/10101012
A API também tem dois recursos para retornar dentes e faces:
- Dentes (teethRegions): http://localhost:8080/rest/totvshealthplans/v1/procedures/2282000026/teethRegions?page=1&pageSize=7
- Faces (surfaces): http://localhost:8080/rest/totvshealthplans/v1/procedures/2282000026/teethRegions/12/surfaces?page=1&pageSize=10
02. CONFIGURAÇÕES INI
Para iniciar a instalação do processo, devemos configurar seu INI Protheus com a funcionalidade REST para habilitar o acesso as API´s. Documentos auxiliares:
1. Configuração do REST do Protheus
Com o INI Protheus configurado, a nomenclatura das API´s ficará no formato: <url + Porta + chave rest definidos no INI Protheus> + /totvsHealthPlans/v1/procedures. Exemplo:
Logo, a minha URL será: http://localhost:8080/rest/totvsHealthPlans/v1/procedures
03. VERBOS
Seguem os verbos disponíveis na API:
Verbo | Path | Descrição |
---|---|---|
GET | procedures | Busca por filtro complexo |
GET | procedures/{procedureId} | Busca por código de procedimento |
GET | procedures/{procedureId}/teethRegions/ | Retorna os dentes de um procedimento de Odonto |
GET | procedures/{procedureId}/teethRegions/{teethRegionId}/surfaces | Retorna as faces de um dente de um procedimento de Odonto |
04. EXEMPLOS DE CHAMADA DA API
Chamada por filtro complexo:
Para o funcionamento correto da API, informar os QueryParams:
QueryParam | Obrigatório | Descrição |
---|---|---|
action | Sim | Informar sempre typeAhead |
pageSize | Sim | Quantidade de registros que serão apresentados em uma solicitação (o padrão é 7). |
filter | Sim se tableCode não informado | Filtro que será realizado na API. O padrão do filtro é: ( Filtro de Tabelas ) and filtro de Código de Procedimento or filtro de Código de Descrição. Seguir o modelo abaixo (filtrando CONSULTA como exemplo): (tableCode eq '18' or tableCode eq '19' or tableCode eq '20' or tableCode eq '22' or tableCode eq '00' or tableCode eq '98') and procedureId startswith('CONSULTA') or procedureDescription startswith('CONSULTA') Importante: utilizar %20 para espaços e %27 para aspas simples. |
procedureId | Sim | Código do procedimento buscado. |
tableCode | Sim se filter não informado | Código da tabela de terminologia TISS. Utilize: 00 Tabela própria das operadoras |
customWhere | Não | Realiza um filtro adicional: 1 - Consultas 9 - Procedimentos de Odonto tratSeriado - Eventos de Seriado (Definidos pela classe do evento BJE_TIPO = 2) |
Exemplo da chamada filtrando por filter:
Exemplo de chamada por tableCode e procedureId:
Chamada por procedureID:
Esta busca retorna o primeiro registro encontrado com o pathparam informado. Realizado a busca por 10101012:
http://localhost:8080/rest/totvshealthplans/v1/procedures/10101012
Busca por dentes
Retorna os dentes de um procedimento de Odonto:
http://localhost:8080/rest/totvshealthplans/v1/procedures/2282000026/teethRegions?page=1&pageSize=7
Busca por faces
Retorna as faces de um dente de um procedimento de Odonto:
05. ATRIBUTOS DE RESPOSTA
Chamadas GET:
Atributo | Campo Protheus | Tipo |
---|---|---|
manufacturer | BTQ_FABRIC | Caracter |
procedureId | BTU_CODTAB + BTU_CDTERM ou BTQ_CODTAB + BTQ_CDTERM | Caracter |
procedureCode | BTU_CDTERM ou BTQ_CDTERM | Caracter |
procedureType | BR8_TPPROC | Caracter |
inSerie | BJE_TIPO = '2' (o registro BJE é vinculado ao BR8_CLASSE | Lógico |
eventType | BR8_TIPEVE | Caracter |
procedureDescription | BR8_DESCRI | Caracter |
anvisaId | Sempre vazio (mantido para manter a integridade já existente) | Caracter |
tableCode | BTU_CODTAB ou BTQ_CODTAB | Caracter |
manufacturerReference | BTQ_REFFAB | Caracter |
procedureDental | BR8_ODONTO = '1' | Lógico |
Exemplo de resposta com evento encontrado (filtro complexo):
{ "items": [ { "manufacturer": "", "procedureId": "2210101012", "procedureCode": "10101012", "procedureType": "0", "inSerie": false, "eventType": "", "procedureDescription": "CONSULTA EM CONSULTORIO", "anvisaId": "", "tableCode": "22", "manufacturerReference": "", "procedureDental": false } ], "hasNext": false }
Exemplo de resposta com evento encontrado (busca por ID):
{ "manufacturer": "", "procedureId": "2210101012", "procedureCode": "10101012", "procedureType": "0", "inSerie": false, "eventType": "", "procedureDescription": "CONSULTA EM CONSULTORIO", "anvisaId": "", "tableCode": "22", "manufacturerReference": "", "procedureDental": false }
Em buscas por filtro complexo, a quantidade mínima de caracteres para realizar a busca é 3. Se forem informados menos que 3, será apresentada uma mensagem impeditiva:
{ "code": 200, "message": "Nao foram localizados resultados com os valores informados", "detailedMessage": "O servidor nao foi capaz de entender a solicitacao", "helpUrl": "", "details": [ { "code": "", "message": "", "detailedMessage": "", "helpUrl": "" } ] }
Em buscas por filtro complexo, a quando não for encontrado um evento com os parâmetros informados:
{ "items": [], "hasNext": false }
Busca por dentes:
Atributo | Campo Protheus | Tipo |
---|---|---|
procedureCode | BTU_CDTERM ou BTQ_CDTERM | Caracter |
terminologyCode | B05_CODIGO | Caracter |
description | BTQ_DESTER | Caracter |
hasSurfaces | Verifica se há registros correspondentes no Alias BYL | Caracter |
permanent | Baseado no campo B05_CODIGO: 11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,41,42,43,44,45,46,47,48 - True 51,52,53,54,55,61,62,63,64,65,71,72,73,74,75,81,82,83,84,85 - False | Lógico |
deciduous | Baseado no campo B05_CODIGO: 11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,41,42,43,44,45,46,47,48 - False 51,52,53,54,55,61,62,63,64,65,71,72,73,74,75,81,82,83,84,85 - True | Lógico |
{ "items": [ { "procedureCode": "82000026", "terminologyCode": "11", "description": "Incisivo Central Superior Direito", "hasSurfaces": "1", "permanent": true, "deciduous": false }, { "procedureCode": "82000026", "terminologyCode": "12", "description": "Incisivo Lateral Superior Direito", "hasSurfaces": "1", "permanent": true, "deciduous": false } ], "hasNext": false }
Busca por faces:
Atributo | Campo Protheus | Tipo |
---|---|---|
procedureCode | BTU_CDTERM ou BTQ_CDTERM | Caracter |
id | R_E_C_N_O_ da BYL | Numérico |
teethCode | B05_CODIGO | Caracter |
terminologyCode | BYL_FACE | Caracter |
hasSurfaces | Verifica se há registros correspondentes no Alias BYL | Caracter |
permanent | Baseado no campo B05_CODIGO: 11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,41,42,43,44,45,46,47,48 - True 51,52,53,54,55,61,62,63,64,65,71,72,73,74,75,81,82,83,84,85 - False | Lógico |
deciduous | Baseado no campo B05_CODIGO: 11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,41,42,43,44,45,46,47,48 - False 51,52,53,54,55,61,62,63,64,65,71,72,73,74,75,81,82,83,84,85 - True | Lógico |
description | BTQ_DESTER | Caracter |
{ "items": [ { "procedureCode": "82000026", "id": 10, "teethCode": "12 ", "terminologyCode": "DIL", "hasSurfaces": "1", "permanent": true, "deciduous": false, "description": "Distal Incisal Lingual" } ], "hasNext": false }
06. PONTOS DE ENTRADA
Foram implementados os pontos de entrada PLRSTPR1 e PLRSTPR2 para auxiliarem na API.
PLRSTPR1
O ponto de entrada PLRSTPR1 permite customizar a Query que será executadas para buscar os procedimentos.
Parâmetros:
Paramixb | Parâmetros | Descrição | Tipo |
---|---|---|---|
paramixb[1] | cSql | Query padrão montada pelo sistema | Caracter |
paramixb[2] | cType | Indica se está realizando a busca por filtro complexo ou id. C - Complexo S - Busca por id | Caracter |
paramixb[3] | cFilter | Conteúdo do Queryparam filter | Caracter |
paramixb[4] | cTableCode | Conteúdo do Queryparam tableCode | Caracter |
paramixb[5] | cProcedId | Conteúdo do Queryparam procedureId | Caracter |
paramixb[6] | lSrcTabCode | Indica se a busca será realizada por Código Tabela + Procedimento | Lógico |
paramixb[7] | cCodRda | Código do Prestador que está realizando a busca | Caracter |
Retorno:
Retorno | Descrição | Tipo | Obrigatório |
---|---|---|---|
cSql | Query que será executada | Caracter | Sim |
Exemplo de Ponto de Entrada:
User Function PLRSTPR1() Local cSql := paramixb[1] Local cType := paramixb[2] Local cFilter := paramixb[3] Local cTableCode := paramixb[4] Local cProcedID := paramixb[5] Local lSrcTabCode := paramixb[6] Local cCodRda:= paramixb[7] //Implementar ajuste desejado Return cSql
PLRSTPR2
O ponto de entrada PLRSTPR2 permite customizar o json de resposta. O ponto será executado para cada evento encontrada na Query. É possível capturar um dado da query utilizando o Alias TRB→ (consultar o exemplo abaixo). A lista com todos os Alias podem ser encontradas analisando a Query informada no ponto de entrada PLRSTPR1.
Parâmetros:
Paramixb | Parâmetros | Descrição | Tipo |
---|---|---|---|
paramixb[1] | oItem | Objeto json gerado pelo sistema para o evento posicionado | Objeto |
Retorno:
Retorno | Descrição | Tipo | Obrigatório |
---|---|---|---|
oItem | Objeto do item que será apresentado no json de resposta | Objeto | Sim |
Exemplo de Ponto de Entrada:
User Function PLRSTPR2() Local oItem := paramixb[1] Local cItem := '' //Implementar ajuste desejado cItem := oItem:toJson() Conout('Procedure description: ' + TRB->PROCEDUREDESCRIPTIONJSON) //Capturando descricao do evento no alias TRB Conout('Json do objeto posicionado: ' + cItem) //Imprimindo Json do Evento posicionado Return oItem
07. PARÂMETROS
A partir da versão disponibilizada na ISSUE DSAUREV-12086 (PLSProceduresSvc.tlpp - 11/07/2024 - 09:50:31) foi criado o parâmetro:
Parâmetro | Tipo | Descrição | Conteúdo Padrão |
---|---|---|---|
MV_PLAPIPR | Caracter | Define o modo de pesquisa da API procedures. 1 = BUSCA % 2 = % BUSCA % | 1 |
Indicando 1 no parâmetro, a API vai buscar todos o registros que o início seja idêntico a pesquisa realizada. Exemplos:
Buscando por CONSUL, podemos ter os resultados:
- CONSULTA DE URGÊNCIA
- CONSULTA ELETIVA
- CONSULTA ODONTOLÓGICA
Indicado 2 no parâmetro, a API vai buscar todos o registros que tenham a pesquisa realizada, independente se estiver no meio do registro encontrado. Exemplos:
Buscando por CONSUL, podemos ter os resultados:
- APLICAÇÃO DE HIPOSSENSIBILIZANTE - EM CONSULTÓRIO (AHC) EXCLUSIVE O ALÉRGENO - PLANEJAMENTO TÉCNICO
- ATENDIMENTO AMBULATORIAL OFTALMOLÓGICO DE CRIANÇA PRÉ-VERBAL (<4 ANOS) OU CRIANÇAS COM DÉFICIT INTELECTUAL, DIFICULDADE DE COMUNICAÇÃO OU POUCO COLABORATIVAS REALIZADA EM CONSULTÓRIO
- BIOPSIA PERCUTANEA COM AGULHA GROSSA, EM CONSULTORIO
ATENÇÃO: A ordenação padrão da API sempre vai trazer os registros em ordem alfabética, por isso, atenção ao utilizar o conteúdo 2 no parâmetro pois os resultados podem ser diferente do esperado pelo Operador. No exemplo acima procuramos por CONSUL em vista de utilizar a Consulta Eletiva, mas haviam registros com CONSUL no meio da descrição e foram apresentados antes pela questão de ordenação.