Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Configurações INI
  3. Verbos
  4. Exemplos de chamada da API
  5. Atributos de Resposta
  6. Pontos de Entrada
  7. 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: 


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


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âmetroTipoDescriçãoConteúdo Padrão
MV_PLAPIPRCaracter

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.