Histórico da Página
...
- 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).
...
- 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:
...
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
...
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):
Bloco de código | ||
---|---|---|
| ||
{ "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):
Bloco de código | ||
---|---|---|
| ||
{ "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:
Bloco de código | ||
---|---|---|
| ||
{
"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:
Bloco de código | ||
---|---|---|
| ||
{
"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 |
Bloco de código | ||
---|---|---|
| ||
{
"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 |
Bloco de código | ||
---|---|---|
| ||
{ "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:
Bloco de código | ||
---|---|---|
| ||
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:
Bloco de código | ||
---|---|---|
| ||
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
Card documentos Informacao 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. Titulo ATENÇÃO