Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


CONTEÚDO

  1. Visão Geral
  2. Configurações INI
  3. Verbos
  4. Query Params - GET
  5. Atributos de Resposta
  6. Exemplos de JSONs de Resposta
  7. Pontos de Entrada


01. VISÃO GERAL

A API UserUsage tem como objetivo retornar a utilização do plano de saúde de um beneficiário. A API recebe parâmetros como a matrícula, período de e até, e retorna os eventos executados pelo beneficiário no período informado.

Os registros listados são provenientes de uma Query executada na tabela BD6.


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:

...

Logo, a minha URL será: http://spon019400235localhost:8080/rest/totvsHealthPlans/v1/userUsage

03. VERBOS

Seguem os verbos disponíveis na API:

VerboPathDescrição
GET/userUsageExtrato de utilização de beneficiários de saúde

04. QUERY PARAMS - GET

Lista de query params obrigatórios:

...

Exemplo de chamada para utilização de um beneficiário em Dezembro de 2017:

http://spon019400235localhost:8080/rest/totvsHealthPlans/v1/userUsage?subscriberId=00010001000003002&initialPeriod=201712&finalPeriod=201712

Image RemovedImage Added


Lista de query params não obrigatórios:

CampoDescrição
fieldsIndica os campos que serão retornados na consulta.
order

Indica uma lista de atributos para realizar a ordenação dos registros. Indicando o caracter – no início, indica que será realizado uma ordenação decrescente.

Lista de atributos que são passíveis de ordenação: procedureCode, procedureName,
executionDate, subscriberName, healthProviderCode, healthProviderName, quantity,
healthProviderDocument, cid, procedureName, healthProviderName, toothRegion, face.

pageSizeIndica quantos registros serão retornados na requisição. O padrão do
sistema são 20 registros. Caso ainda existam registros para serem exibidos, o atributo hasNext será
retornado com true.
pageIndica a página de ordenação que os registros serão apresentados. Se atentar ao controle booleano hasNext

procedureCode,

executionDate,

healthProviderCode,

healthProviderDocument,

cid,

procedureName,

healthProviderName,

quantity,

toothRegion,

face

Indicando um desses atributos e um valor, a API realizará um filtro adicional com o atributo e valor informado.



05. ATRIBUTOS DE RESPOSTA


AtributoCampoTipoDescrição
procedureCodeBD6_CODPROStringCódigo do procedimento
procedureNameBD6_DESPROStringDescrição do procedimento
executionDateBD6_DATPROStringData do evento no formato yyyy-mm-dd
subscribernameBD6_NOMUSRStringNome do beneficiário
healthProviderCodeBD6_CODRDAStringCódigo da rede de atendimento
healthProviderNameBD6_NOMRDAStringNome da rede de atendimento
serviceTypeBR8_CLASSEStringCódigo da classe de procedimento
serviceTypeDescriptionBJE_DESCRIStringDescrição da classe de procedimento
quantityBD6_QTDPRONumberQuantidade do evento
healthProviderDocumentBD6_CPFRDAStringCPF/CNPJ da rede de atendimento
cidBD6_CIDStringCID principal do atendimento
toothRegionBD6_DENREGStringRegião do dente
faceBD6_FADENTStringFace do dente
paidValueBD6_VLRPAGNumberValor pago
disallowanceValueBD6_VLRGLONumberValor de glosa
coPaymentValueBD6_VLRTPFNumberValor de co-participação
subscriberIdBD6_OPEUSR+BD6_CODEMP+BD6_MATRIC+BD6_TIPREG+BD6_DIGITOStringMatrícula do beneficiário

...

originIif(BD6_TIPGUI = '04', 'REEMBOLSO', 'CONVENIO') as BD6_TIPGUIStringOrigem
procedureTypeBR8_TPPROCStringTipo do Procedimento
genderBA1_SEXOStringSexo; M (Masculino) e F (Femino)
birthDateBA1_DATNASStringData de Nascimento
inclusionDateBA1_DATINCStringData de Inclusão
blockDateBA1_DATBLOStringData de Bloqueio
userTypeBA1_TIPUSUStringTipo do Usuário; T (Titular) e D (Dependente)
countyCodeBA1_CODMUNStringCódigo do Município (Padrão IBGE) 
hospitalizationNumber(CASE BD6_TIPGUI WHEN '03' THEN BD6_OPEINT + BD6_ANOINT + BD6_MESINT + BD6_NUMINT ELSE '' END) AS GUIAINTStringNúmero da Guia de Internação (Caso seja uma Internação)
status(CASE BA1_DATBLO WHEN '' THEN 'A' ELSE 'I' END) AS STATUSStringStatus; A (Ativo) e I (Inativo)


06. EXEMPLOS DE JSONS DE RESPOSTA


Bloco de código
titleSucesso 202
linenumberstrue
{
    "items": [
        {
            "healthProviderDocument": "34391654857",
            "paidValue": 90.64,
            "subscriberId": "00010001000003002",
            "face": "",
            "coPaymentValue": 0,
            "procedureCode": "10101012",
            "executionDate": "2017-12-27",
            "subscribername": "RENATA",
            "healthProviderName": "RDA SILVIA SANT'ANNA",
            "serviceTypeDescription": "CONSULTAS",
            "serviceType": "000001",
            "cid": "A00",
            "procedureName": "CONSULTA EM CONSULTORIO",
            "healthProviderCode": "000007",
            "disallowanceValue": 44.87,
            "quantity": 1,
            "toothRegion": "",
			"origin": "CONVENIO"
        }
    ],
    "hasNext": false
}



Bloco de código
titleErro 400
linenumberstrue
{
    "code": 400,
    "message": "Os parametros abaixo devem ter 6 caracteres: ",
    "detailedMessage": "initialPeriod, finalPeriod",
    "helpUrl": "",
    "details": [
        {
            "code": "",
            "message": "",
            "detailedMessage": "",
            "helpUrl": ""
        }
    ]
}


07. PONTOS DE ENTRADA

Foi desenvolvido o Ponto de Entrada PUTZBEN1, que permite trocar a Query padrão de busca dos registros BD6 por uma customizada:

Ponto de EntradaPUTZBEN1
FontePLUtzUsDao
Parâmetros

paramixb[1] → cQuery (Caracter) - Query padrão da rotina

RetornocQuery (Caracter) → Query padrão manipulada pelo usuário
Bloco de código
titleExemplo PUTZBEN1
linenumberstrue
#INCLUDE "TOTVS.CH"

User Function PUTZBEN1()

	Local cQuery := paramixb[1]

	//Ajuste de query do cliente

Return cQuery




HTML
<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>