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/
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.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:
{
"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"
}
} |
{
"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"
}
]
} |
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:
{
"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"
} |
{
"authorizationStatus": "3"
} |