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:
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
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 |
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:
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
} |
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 |
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:
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:
Importante: a utilização da busca dos procedimentos no formato % BUSCA % pode acarretar perda de performance pois o banco de dados não utiliza índices neste formato de busca.
A partir da versão disponibilizada na ISSUE DSAUREV-14180 (PLSProceduresSvc.tlpp - 02/05/2025 - 09:22:03) foi criado o parâmetro MV_PLAPPR1:
| Parâmetro | Tipo | Descrição | Conteúdo Padrão |
|---|---|---|---|
| MV_PLAPPR1 | Caracter | Define a query utilizada na busca do procedimentos. 1 = Query original 2 = Nova query otimizada | 1 |
Indicando 1 no parâmetro, a API vai utilizar a query original onde é realizada a busca dos procedimentos focados nas tabelas de terminologia.
Contudo, em alguns casos esta busca podia apresentar baixa performance dependendo da quantidade de registros nas tabelas BR8, BTQ e BTU. Para sanar esse problema, foi criada a opção 2 para ser utilizada no parâmetro MV_PLAPPR1. Esta nova query funciona de maneira dinâmica alternando a tabela base que é utilizada na busca, alternando entre BR8 - Tabela Padrão (quando há algum caracter diferente de 0123456789, o sistema entende que está realizando uma busca de eventos pela descrição) e a tabela BTQ - Detalhe das Terminologias TISS (quando há somente os caracteres 0123456789, o sistema entende que está realizando uma busca de eventos pelo código).
Recomendamos utilizar o conteúdo 2 neste parâmetro. O padrão foi definido como 1 para manter o legado de clientes que já utilizavam a query antiga.