Árvore de páginas


CONTEÚDO

Visão Geral

  1. Configurações INI
  2. Verbos
  3. Exemplos de chamada da API
  4. Atributos de Resposta
  5. Pontos de Entrada

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: 


A API também tem dois recursos para retornar dentes e faces:

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:

image2020-12-17_15-28-30.png

Logo, a minha URL será: http://localhost:8080/rest/totvsHealthPlans/v1/procedures


03. VERBOS

Seguem os verbos disponíveis na API: 

VerboPathDescrição
GETproceduresBusca por filtro complexo
GETprocedures/{procedureId}Busca por código de procedimento
GETprocedures/{procedureId}/teethRegions/Retorna os dentes de um procedimento de Odonto
GETprocedures/{procedureId}/teethRegions/{teethRegionId}/surfacesRetorna 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:

QueryParamObrigatórioDescrição
actionSimInformar sempre typeAhead
pageSizeSimQuantidade de registros que serão apresentados em uma solicitação (o padrão é 7).
filterSim 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.

procedureIdSimCódigo do procedimento buscado.
tableCodeSim se filter não informado

Código da tabela de terminologia TISS. Utilize:

00 Tabela própria das operadoras
18 Diárias, taxas e gases medicinais
19 Materiais e Órteses, Próteses e Materiais Especiais (OPME)
20 Medicamentos
22 Procedimentos e eventos em saúde
90 Tabela Própria Pacote Odontológico
98 Tabela Própria de Pacotes

customWhereNã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:

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


Exemplo de chamada por tableCode e procedureId:

http://localhost:8080/rest/totvshealthplans/v1/procedures?action=typeAhead&pageSize=7&customWhere=1&tableCode=22&procedureId=10101012

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:

http://localhost:8080/rest/totvshealthplans/v1/procedures/2282000026/teethRegions/12/surfaces?page=1&pageSize=10


05. ATRIBUTOS DE RESPOSTA

Chamadas GET:

AtributoCampo ProtheusTipo
manufacturerBTQ_FABRICCaracter
procedureIdBTU_CODTAB + BTU_CDTERM ou BTQ_CODTAB + BTQ_CDTERMCaracter
procedureCodeBTU_CDTERM ou BTQ_CDTERMCaracter
procedureTypeBR8_TPPROCCaracter
inSerieBJE_TIPO = '2' (o registro BJE é vinculado ao BR8_CLASSELógico
eventTypeBR8_TIPEVECaracter
procedureDescriptionBR8_DESCRICaracter
anvisaIdSempre vazio (mantido para manter a integridade já existente)Caracter
tableCodeBTU_CODTAB ou BTQ_CODTABCaracter
manufacturerReferenceBTQ_REFFABCaracter
procedureDentalBR8_ODONTO = '1'Lógico


Exemplo de resposta com evento encontrado (filtro complexo):

Sucesso 202
{
    "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):

Sucesso 202
{
    "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:

Sucesso 202
{
    "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:

Sucesso 202
{
    "items": [],
    "hasNext": false
}


Busca por dentes:

AtributoCampo ProtheusTipo
procedureCodeBTU_CDTERM ou BTQ_CDTERMCaracter
terminologyCodeB05_CODIGOCaracter
descriptionBTQ_DESTERCaracter
hasSurfacesVerifica se há registros correspondentes no Alias BYLCaracter
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
Sucesso 202
{
    "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:

AtributoCampo ProtheusTipo
procedureCodeBTU_CDTERM ou BTQ_CDTERMCaracter
idR_E_C_N_O_ da BYLNumérico
teethCodeB05_CODIGOCaracter
terminologyCodeBYL_FACECaracter
hasSurfacesVerifica se há registros correspondentes no Alias BYLCaracter
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
descriptionBTQ_DESTERCaracter
Sucesso 202
{
    "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:

ParamixbParâmetrosDescriçãoTipo
paramixb[1]cSqlQuery padrão montada pelo sistemaCaracter 
paramixb[2]cType

Indica se está realizando a busca por filtro complexo ou id.

C - Complexo

S - Busca por id

Caracter 
paramixb[3]cFilterConteúdo do Queryparam filterCaracter 
paramixb[4]cTableCodeConteúdo do Queryparam tableCodeCaracter 
paramixb[5]cProcedIdConteúdo do Queryparam procedureIdCaracter 
paramixb[6]lSrcTabCodeIndica se a busca será realizada por Código Tabela + ProcedimentoLógico
paramixb[7]cCodRdaCódigo do Prestador que está realizando a buscaCaracter


Retorno:

RetornoDescriçãoTipoObrigatório
cSqlQuery que será executadaCaracterSim


Exemplo de Ponto de Entrada:

Ponto de Entada PLRSTPR1
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:

ParamixbParâmetrosDescriçãoTipo
paramixb[1]oItemObjeto json gerado pelo sistema para o evento posicionadoObjeto 


Retorno:

RetornoDescriçãoTipoObrigatório
oItemObjeto do item que será apresentado no json de respostaObjetoSim


Exemplo de Ponto de Entrada:

Ponto de Entada PLRSTPR2
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