Histórico da Página
ÍNDICE
- Visão Geral
- Configurando o ambiente de administração
- Customização de Verificação de Elegibilidade
- Customização de Validação do procedimento
- Customização da Gravação da autorização
01. VISÃO GERAL
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 mais informações sobre outras API's acesse o endereço https://api.totvs.com.br/
02. Configurando o ambiente de administraçã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.
- Informe a URL Base no campo endpoint
- Informe o path do endpoint conforme exemplo abaixo
- O tipo deve ser POST
- Informe um tempo de timeout em segundos. Este tempo será usado para informar ao HAT qual o tempo crítico que a customização leva para responder.
- Se possuir healthcheck do endpoint, informe a URL.
03. Customização de Verificação de Elegibilidade
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:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "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" } ] } |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "elegibilityResponse":"N", "rejectionCauses": [ { "code":"505", "alert":"0", "description":"Familia Bloqueada" } ] } |
04. Customização da Validação do procedimento
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.auditing | Boolean | Se está em auditoria |
validatedProcedure.authorizedQuantity | Number | Quantidade autorizada |
validatedProcedure.balance | Number | Saldo |
validatedProcedure.executionDate | String | Data de execução |
validatedProcedure.inSerie | Boolean | Se o procedimento é seriado |
validatedProcedure.procedureCode | String | Código do procedimento |
validatedProcedure.procedureDescription | String | Descrição do procedimento |
validatedProcedure.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.rejectionCauses | Array of object | Críticas do procedimento |
validatedProcedure.rejectionCauses[n].code | String | Código da crítica |
validatedProcedure.rejectionCauses[n].idTiss | String | Código da crítica na TISS |
validatedProcedure.rejectionCauses[n].description | String | Descrição da crítica |
validatedProcedure.rejectionCauses[n].alert | String | 0 – Crítica 1 – Alerta |
validatedProcedure.requestedQuantity | Number | Quantidade Solicitada |
validatedProcedure.status | Number | Status do procedimento 1 – Autorizado 0 – Negado |
validatedProcedure.tableCode | String | Código da Tabela |
validatedProcedure.toothRegion | String | Dente/Região – Terminologia |
validatedProcedure.surfaces | String | Faces – Separadas por “,” Terminologia |
Abaixo a resposta que o seu endpoint deve retornar:
Nome | Tipo | Descrição |
procedureStatus | Number | 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:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "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" } } |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "procedureStatus": "0" "auditing":false, "rejectionCauses": [ { "idTiss": "1007", "code": "002", "alert": "0", "description": "Procedimento em carencia para este usuario.. Data fim da carencia: 03/11/2068" } ] } |
05. Customização da Gravação da autorização
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. |
Exemplo JSONs montados:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "accidentIndication": "1", "ansRegistry": "000000", "attendanceLocation": "001", "attendanceModel": "2", "attendanceNote": "Observação", "attendanceProtocol": "825970032470000", "attendanceType": "1", "authorizationDate": "20191015", "authorizationStatus": "1", "authorizationType": "2", "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" }, "clinicalCondition": "Paciente com dor nas costas.", "consultationType": "1", "healthProvider": { "healthProviderId": "000002", "name": "Clinica de Ortopedia", "officialRecord": "57487153000122" } "journey": "2", "locationCode":"001", "mainAuthorizationCode":"", "newbornAttendance":false, "password":"206705713360003", "passwordExpireDate":"2019-11-15", "priorAuthorization": true, "procedures": [ { "auditing":false, "accessWay":"3", "authorizedQuantity":1, "balance":1, "endingTime":"15:45:07", "executionDate":"2019-10-15", "increaseDecrease":"1.20", "inSerie":false, "medicalTeam":[ { "participationDegree":"12", "professional": { "cbos":{ "code":"225125", "description":"Clínica Médica" } }, "professional": { "stateAbbreviation": "SP", "idOnHealthInsurer": "000003", "name": "Julia Clara Rodrigues", "professionalCouncil": "CRM", "professionalCouncilNumber": "154879", "professionalIdentifier": "17267810624" }, "sequence":"001" } ], "procedureCode":"20103182", "procedureDescription":"Desvios posturais da coluna vertebral", "procedureType":"0", "rejectionCauses": [ "idTiss": "1007", "code": "002", "alert": "0", "description": "Procedimento em carencia para este usuario.. Data fim da carencia: 03/11/2068" ], "requestedQuantity":1, "startingTime":"15:10:12", "status":"0" "tableCode":"22", "usedTechnique":"1" } ], "professional": { "stateAbbreviation": "SP", "idOnHealthInsurer": "000003", "name": "Julia Clara Rodrigues", "professionalCouncil": "CRM", "professionalCouncilNumber": "154879", "professionalIdentifier": "17267810624" }, "requestDate":"2019-10-15" } |
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "authorizationStatus": "3" } |