Esta documentação visa explanar sobre as API's desenvolvidas para verificar regras específicas (customizadas) da operadora de saúde em determinados pontos da autorização construída no HAT. Isto é, a Operadora de Saúde deverá desenvolver uma API em seu software de gestão que validará regras específicas na verificação de elegibilidade do beneficiário, na validação dos procedimentos e na gravação do atendimento. A padronização de como o HAT enviará as informações para esta API e o que esperará de retorno será documentada neste espaço.
Para configurar os endpoints da customização, é necessário acessar o painel de administração do HAT.
Em seguida, acessar, no menu Configurações, Configurações de Integração.
Serão três EndPoints, e podem ter suas informações editadas.
Abaixo é o corpo da requisição que o HAT enviará para o seu endpoint customizado
Nome | Tipo | Descrição |
beneficiary | Object | Dados do beneficiário |
beneficiary.phoneNumber | String | Telefone do beneficiário |
beneficiary.newbornAttendance | String | S para atendimento RN e N para atendimento normal |
beneficiary.holderCPF | String | CPF do beneficiário ou responsável |
beneficiary.whenToCharge | String | 1 para Coparticipação com pagamento no ato e 0 Sem coparticipação |
beneficiary.birthdate | String | Data de nascimento |
Beneficiary.owner | Object | Dados do titular |
beneficiary.isOwner | Boolean | Se o beneficiário é titular |
beneficiary.CNS | String | Código do Cartão Nacional de saúde |
beneficiary.subscriberId | String | Matrícula |
String | Nome | |
beneficiary.companyName | String | Nome da empresa do plano |
beneficiary.oldSubscriberId | String | Matricula antiga (matant) |
beneficiary.healthInsurance | Object | Dados do plano |
beneficiary.healthInsurance.code | String | Código do plano |
beneficiary.healthInsurance.roomType | String | Tipo de acomodação |
beneficiary.healthInsurance.description | String | Descrição do plano |
beneficiary.cardExpiration | String | Data de expiração da carteirinha |
rejectionCauses | Array of Object | Críticas já validadas pelo HAT |
rejectionCauses[n].code | String | Código da Crítica |
rejectionCauses[n].alert | String | Se é alerta “1” ou não “0” |
rejectionCauses[n].description | String | Descrição da crítica |
Abaixo a resposta que o seu endpoint deve retornar:
O HAT sobrescreverá o resultado da elegibilidade e as críticas.
Nome | Tipo | Descrição |
elegibilityResponse | String | S (autorizado) ou N (não autorizado) – Será substituído na decisão do HAT. Exemplo: o HAT não autorizou mas a customização sim, prevalece a customização. |
rejectionCauses | Array of Object | Críticas no mesmo padrão do envio. Pode-se manter as críticas validadas pelo HAT, substituir as críticas ou apenas adicionar novas. |
Exemplo JSONs montados:
{ "beneficiary": { "phoneNumber":"63989382024", "newbornAttendance":"N", "holderCPF":"72454212501", "whenToCharge":"0", "birthdate":"1983-03-23", "owner": { "phoneNumber":"2129543310", "newbornAttendance":"N", "holderCPF":"81419722190", "whenToCharge":"0", "birthdate":"1985-05-26", "isOwner": true, "CNS":"207239309460006", "subscriberId":"00010002000005001", "name":"Iago Vinicius Oliveira", "companyName":"TOTVS SA", "oldSubscriberId":"148792460664", "healthInsurance": { "code":"0001", "roomType":"01", "description":"Plano Essential Plus", }, "cardExpiration":"2020-10-15", }, "isOwner": false, "CNS":"973117025950000", "subscriberId":"00010002000005015", "name":"Andrea Manuela Beatriz Lima", "companyName":"TOTVS SA", "oldSubscriberId":"248792460664", "healthInsurance": { "code":"0001", "roomType":"01", "description":"Plano Essential Plus", }, "cardExpiration":"2020-10-15" }, "rejectionCauses": [ { "code":"505", "alert":"0", "description":"Familia Bloqueada" } ] } |
{ "elegibilityResponse":"N", "rejectionCauses": [ { "code":"505", "alert":"0", "description":"Familia Bloqueada" } ] } |
O HAT vai enviar para o seu endp um corpo diferente para cada tipo de atendimento pois as informações variam de acordo com a guia. Por exemplo: Data de internação: Informado somente na guia de internação.
O corpo da mensagem que o HAT enviará para sua customização é o mesmo que está descrito abaixo no item 05 (Customização da gravação da autorização), porém tem um objeto a mais no JSON que é referente ao procedimento que está sendo validado no momento, pois a guia pode ter N procedimentos. Desta forma, há o objeto procedures no corpo da requisição com todos os procedimentos do atendimento e há o objeto validatedProcedure (descrito abaixo) com o procedimento que está sendo validado, neste objeto basicamente tem a tabela e código do procedimento, quantidade solicitada e autorizada (pelo HAT) e possíveis críticas que o HAT já validou.
Nome | Tipo | Descrição |
validatedProcedure | Object | Dados do procedimento que está sendo validado |
validatedProcedure[n].auditing | Boolean | Se está em auditoria |
validatedProcedure[n].authorizedQuantity | Number | Quantidade autorizada |
validatedProcedure[n].balance | Number | Saldo |
validatedProcedure[n].executionDate | String | Data de execução |
validatedProcedure[n].inSerie | Boolean | Se o procedimento é seriado |
validatedProcedure[n].procedureCode | String | Código do procedimento |
validatedProcedure[n].procedureDescription | String | Descrição do procedimento |
validatedProcedure[n].procedureType | String | Tipo do procedimento 0 - Procedimento 1 - Material 2 - Medicamento 3 - Taxas 4 - Diarias 5 - OrteseProtese 6 - Pacote 7 - GasesMedicinais 8 - Alugueis 9 - Outros |
validatedProcedure[n].rejectionCauses | Array of object | Críticas do procedimento |
validatedProcedure[n].rejectionCauses[n].code | String | Código da crítica |
validatedProcedure[n].rejectionCauses[n].description | String | Descrição da crítica |
validatedProcedure[n].rejectionCauses[n].alert | String | 0 – Crítica 1 – Alerta |
validatedProcedure[n].requestedQuantity | Number | Quantidade Solicitada |
validatedProcedure[n].status | Number | Status do procedimento 1 – Autorizado 0 – Negado |
validatedProcedure[n].tableCode | String | Código da Tabela |
validatedProcedure[n].toothRegion | String | Dente/Região – Terminologia |
validatedProcedure[n].surfaces | String | Faces – Separadas por “,” Terminologia |
Abaixo a resposta que o seu endpoint deve retornar:
Nome | Tipo | Descrição |
procedureStatus | String | 1 - Autorizado 0 - Negado Será substituído na decisão do HAT. Exemplo: o HAT não autorizou mas a customização sim, prevalece a customização. |
auditing | Boolean | true - Enviar para auditoria false - Não enviar para auditoria |
rejectionCauses | Array of Object | Críticas no mesmo padrão do envio. Pode-se manter as críticas validadas pelo HAT, substituir as críticas ou apenas adicionar novas. |
Exemplo JSONs montados:
{ "locationCode": "001", "attendanceModel": "1", "healthProvider": { "healthProviderId": "000002", "name": "CLINICA TOTVS", "officialRecord": "34585221000190" }, "procedures": [ { "status": 0, "auditing": false, "requestedQuantity": 1, "procedureDescription": "CONSULTA EM DOMICILIO", "tableCode": "22", "authorizedQuantity": 0, "rejectionCauses": [ { "code": "012", "alert": "0", "description": "Solicitante nao autorizado a solicitar este procedimento (Campo Executa/Solicita/Ambos)" } ], "procedureCode": "10101020", "procedureType": "0", "authLevelKey": "2210101020", "justification": "", "balance": 0, "authLevel": "BR8" }, { "status": 1, "auditing": false, "requestedQuantity": 1, "procedureDescription": "Atendimento do intensivista diarista (por dia e por paciente)", "tableCode": "22", "authorizedQuantity": 1, "rejectionCauses": [], "procedureCode": "10104011", "procedureType": "0", "authLevelKey": "2210104011", "justification": "", "balance": 0, "authLevel": "BR8" }, { "status": -1, "rejectionCauses": [], "procedureCode": "10101012", "procedureType": "0", "requestedQuantity": 1, "procedureDescription": "CONSULTA EM CONSULTORIO (NO HORARIO NORMAL OU PREESTABELECIDO)", "tableCode": "22", "authorizedQuantity": 0, } ], "requestDate": "20191014", "ansRegistry": "349682", "rejectionCauses": [], "password": "", "newbornAttendance": false, "beneficiary": { "phoneNumber": "11982311327", "rejectionCauses": [], "holderCPF": "00202327132", "CNS": "917891709560007", "subscriberId": "00010002000005003", "healthInsurance": { "code": "0001", "description": "PRODUTO COBERTURA PADRAO" }, "name": "JOAO VICTOR", "oldSubscriberId": "790709086428000", "cardExpiration": "2020-11-16" }, "attendanceProtocol": "", "attendanceLocation": "002", "authorizationStatus": "-1", "validatedProcedure": { "status": 0, "inSerie": false, "auditing": false, "requestedQuantity": 1, "procedureDescription": "CONSULTA EM CONSULTORIO (NO HORARIO NORMAL OU PREESTABELECIDO)", "tableCode": "22", "authorizedQuantity": 0, "rejectionCauses": [ { "idTiss": "1007", "code": "002", "alert": "0", "description": "Procedimento em carencia para este usuario.. Data fim da carencia: 03/11/2068" } ], "procedureCode": "10101012", "procedureType": "0", "authLevelKey": "000002001010", "justification": "", "authLevelDesc": "Nivel: Especialidade da RDA", "balance": 0, "authLevel": "BAQ" }, "journey": "2", "professional": { "idOnHealthInsurer": "000002", "cbos": { "code": "223204", "description": "Cirurgiao dentista - auditor" }, "professionalCouncil": "CRM", "professionalCouncilNumber": "654987", "name": "DOUTOR JOAO DE SANTANA", "stateAbbreviation": "SP" } } |
O HAT vai enviar para o seu endpoint de customização, um corpo diferente para cada tipo de atendimento pois as informações variam de acordo com a guia. Por exemplo: Data de internação: Informado somente na guia de internação.
Nome | Tipo | Descrição |
accidentIndication | String | Indicação de acidente |
ansRegistry | String | Registro ANS |
attendanceLocation | String | Local de atendimento = BB8_LOCAL |
attendanceModel | String | Caráter de atendimento – Terminologia |
attendanceNote | String | Observação do atendimento |
attendanceProtocol | String | Protocolo de atendimento |
attendanceType | String | Tipo de atendimento – Terminologia |
authorizationDate | String | Data da autorização |
authorizationStatus | String | Status da autorização 1 – Autorizado 2 – Parcialmente autorizado 3 – Negado 6 – Auditoria |
authorizationType | String | 1 – Consulta 2 – Exame 3 – Execução 4 – Internação 9 – Tratamento odontológico 10 – Pronto Socorro 11 – Tratamento Seriado |
authorizedHospital | String | Código do hospital autorizado = BAU_CODIGO |
beneficiary | Object | Dados do beneficiário |
beneficiary.birthdate | String | Data de nascimento |
beneficiary.cardExpiration | String | Data de expiração da carteirinha |
beneficiary.CNS | String | Número do CNS |
beneficiary.phoneNumber | String | Telefone |
beneficiary.holderCPF | String | CPF do beneficiário ou responsável |
beneficiary.healthInsurance | Object | Dados do plano |
beneficiary.healthInsurance.code | String | Código do plano |
beneficiary.healthInsurance.description | String | Descrição do plano |
beneficiary.healthInsurance.roomType | String | Tipo de acomodação |
beneficiary.isOwner | Boolean | Se o beneficiário é o titular |
String | Nome | |
beneficiary.oldSubscriberId | String | Matrícula antiga |
beneficiary.owner | Object | Dados do titular |
beneficiary.owner.birthdate | String | Data de nascimento |
beneficiary.owner.cardExpiration | String | Data de expiração da carteirinha |
beneficiary.owner.CNS | String | Número do CNS |
beneficiary.owner.phoneNumber | String | Telefone |
beneficiary.owner.holderCPF | String | CPF do beneficiário ou responsável |
beneficiary.owner.healthInsurance | Object | Dados do plano |
beneficiary.owner.healthInsurance.code | String | Código do plano |
beneficiary.owner.healthInsurance.description | String | Descrição do plano |
beneficiary.owner.healthInsurance.roomType | String | Tipo de acomodação |
String | Nome | |
beneficiary.owner.oldSubscriberId | String | Matrícula antiga |
beneficiary.owner.subscriberId | String | Matrícula |
beneficiary.owner.companyName | String | Nome da empresa |
beneficiary.subscriberId | String | Matrícula |
beneficiary.companyName | String | Nome da empresa |
beneficiary.whenToCharge | String | Coparticipação no ato 1 = Sim e 0 = Não |
beneficiary.rejectionCauses | Array of Object | Críticas |
beneficiary.rejectionCauses[n].code | String | Código da crítica |
beneficiary.rejectionCauses[n].description | String | Descrição da crítica |
beneficiary.rejectionCauses[n].alert | String | 1 = Alerta 0 = Crítica |
billingType | String | Tipo de faturamento – Terminologia |
clinicalCondition | String | Indicação Clínica |
closingReason | String | Motivo de encerramento – Terminologia |
consultationType | String | Tipo de Consulta – Terminologia |
copaymentValue | Number | Valor de coparticipação |
copaymentError | Number | Erro de coparticipação 1 = Sim 0 = Não |
dailyAuthorizedQuantity | Number | Quantidade de diárias autorizadas |
dailyRequestedQuantity | Number | Quantidade de diárias solicitadas |
dischargedDate | String | Data de alta |
dischargedHour | String | Hora de alta |
endTreatmentDate | String | Data prevista de final do tratamento |
expectedAdmissionDate | String | Data prevista de internação |
expectedDischargedDate | String | Data prevista de alta |
expectedHospitalizationDate | String | Data prevista de internação |
healthProvider | Object | Dados do prestador |
healthProvider.healthProviderId | String | Código do prestador |
String | Nome do prestador | |
healthProvider.officialRecord | String | CPF/CNPJ do prestador |
hospitalizationDate | String | Data de internação |
hospitalizationHour | String | Hora de internação |
primaryICD | String | Código do CID Primário |
journey | String | 1 – Consulta 2 – Exame 3 – Execução 4 – Internação 9 – Tratamento odontológico 10 – Pronto Socorro 11 – Tratamento Seriado |
locationCode | String | Código do local = BB8_CODLOC |
mainAuthorizationCode | String | Número da guia principal |
newbornAttendance | Boolean | Atendimento a RN – true = Sim e false = Não |
password | String | Senha |
passwordExpireDate | String | Data de expiração da senha |
priorAuthorization | Boolean | Se é a guia principal |
procedures | Array of Object | Procedimentos |
procedures[n].auditing | Boolean | Se está em auditoria |
procedures[n].accessWay | String | Via de acesso – Terminologia |
procedures[n].authorizedQuantity | Number | Quantidade autorizada |
procedures[n].balance | Number | Saldo |
procedures[n].endingTime | String | Hora final |
procedures[n].executionDate | String | Data de execução |
procedures[n].increaseDecrease | Number | Percentual de redução/acréscimo |
procedures[n].inSerie | Boolean | Se o procedimento é seriado |
procedures[n].justification | String | Justificativa de reconsulta |
procedures[n].medicalTeam | Array of Object | Participação médica |
procedures[n].medicalTeam[n].participationDegree | String | Grau de participação |
procedures[n].medicalTeam[n].professional | String | Profissional |
procedures[n].medicalTeam[n].professional.cbos | Object | CBOS do profissional |
procedures[n].medicalTeam[n].professional.cbos.code | String | Código do CBOS – Terminologia |
procedures[n].medicalTeam[n].professional.cbos.description | String | Descrição do CBOS |
procedures[n].medicalTeam[n].professional.stateAbbreviation | String | UF do Estado |
procedures[n].medicalTeam[n].professional.idOnHealthInsurer | String | Código do profissional |
procedures[n].medicalTeam[n].professional.name | String | Nome do profissional |
procedures[n].medicalTeam[n].professional.professionalCouncil | String | Conselho do profissional |
procedures[n].medicalTeam[n].professional.professionalCouncilNumber | String | Número do conselho do profissional |
procedures[n].medicalTeam[n].professional.professionalIdentifier | String | CPF/CNPJ do profissional |
procedures[n].medicalTeam[n].sequence | String | Sequencial de referência do procedimento |
procedures[n].procedureCode | String | Código do procedimento |
procedures[n].procedureDescription | String | Descrição do procedimento |
procedures[n].procedureType | String | Tipo do procedimento 0 - Procedimento 1 - Material 2 - Medicamento 3 - Taxas 4 - Diarias 5 - OrteseProtese 6 - Pacote 7 - GasesMedicinais 8 - Alugueis 9 - Outros |
procedures[n].rejectionCauses | Array of object | Críticas do procedimento |
procedures[n].rejectionCauses[n].code | String | Código da crítica |
procedures[n].rejectionCauses[n].description | String | Descrição da crítica |
procedures[n].rejectionCauses[n].alert | String | 0 – Crítica 1 – Alerta |
procedures[n].requestedQuantity | Number | Quantidade Solicitada |
procedures[n].startingTime | String | Hora inicial |
procedures[n].status | Number | Status do procedimento 1 – Autorizado 0 – Negado |
procedures[n].tableCode | String | Código da Tabela |
procedures[n].totalWorth | Number | Valor total |
procedures[n].unitaryWorth | Number | Valor Unitário |
procedures[n].usedTechnique | String | Técnica Utilizada – Terminologia |
procedures[n].usQuantity | Number | Quantidade US |
procedures[n].toothRegion | String | Dente/Região – Terminologia |
procedures[n].surfaces | String | Faces – Separadas por “,” Terminologia |
procedures[n].franchise | String | Franquia |
professional | Object | Profissional Solicitante |
professional.cbos | Object | CBOS do profissional |
professional.cbos.code | String | Código do CBOS – Terminologia |
professional.cbos.description | String | Descrição do CBOS |
professional.stateAbbreviation | String | UF do Estado |
professional.idOnHealthInsurer | String | Código do profissional |
String | Nome do profissional | |
professional.professionalCouncil | String | Conselho do profissional |
professional.professionalCouncilNumber | String | Número do conselho do profissional |
professional.professionalIdentifier | String | CPF/CNPJ do profissional |
requestDate | String | Data da solicitação |
requestHospital | String | Hospital Solicitado |
roomType | String | Tipo de acomodação autorizada |
sourceAuthorization | Object | Dados da guia principal (mesmas propriedades do atendimento da autorização corrente - beneficiario, profissional, prestador, data de autorização, etc.) |
hospType | String | Tipo de internação – Terminologia |
hospRegime | String | Regime de internação – Terminologia |
opmePrev | Boolean | Previsão de OPME |
quimiPrev | Boolean | Previsão de Quimio |
Abaixo a resposta que o seu endpoint deve retornar:
O HAT apenas considerará o status atribuído para gravar o atendimento.
Nome | Tipo | Descrição |
authorizationStatus | String | 1 - Autorizado 2 - Parcialmente Autorizado 3 - Negado 6 - Auditoria Será substituído na decisão do HAT. Exemplo: o HAT não autorizou mas a customização sim, prevalece a customização. |