v2
22 de nov. de 2025

Bem vindo

Esta é a documentação da API Rest do sistema Thundera. Com ela você poderá enviar e receber dados de exames e laudos e tratar da forma que desejar em seu sistema.

Authenticação

Para a utilização da API será necessário ter em mãos os seguintes Headers:

NomeValor
base-urlhttps://classic.coreum.health/api/
X-MICROMED-API-KEYUUID do serviço
X-MICROMED-API-SECRETChave de API
RemoteUUIDUUID do ponto remoto
examStatusNomes dos tipos de exames
initialDateData inicial da pesquisa
endDateData final da pesquisa
patientNameNome ou trecho do nome do paciente
centralUUIDUUID da central

Ao lado é possível visualizar os Endpoints da API.

Métodos

POST/exams

Este método lista os exames filtrados.

Request

Headers

NomeValorObrigatório
Content-Typeapplication/jsonSim
Endpointhttps://thundera.com.br/api/examsSim
X-MICROMED-API-KEYUUID do ServiçoSim
X-MICROMED-API-SECRETChave de API do ServiçoSim

Body raw(json)

CampoDescriçãoObrigatório
remoteUUIDUUID do RemotoNão
examTypesEcg Imagem, Mapa Hyperview, ECG WincardioSim
examStatusDISPONIVEL_PARA_LAUDO, EM_ANALISE, LAUDO_DISPONIVELNão
initialDate2024-06-20T12:25:46-03:00Sim
endDate2024-07-01T22:25:46-03:00Sim
patientNameNOME DO PACIENTENão
centralUUIDUUID da CentralNão

Exemplo

curl
curl --location --request POST 'https://thundera.com.br/api/exams ' \
  --header 'X-MICROMED-API-KEY: <uuid do serviço >' \
  --header 'X-MICROMED-API-SECRET: <chave de api do serviço >' \
  --data-raw '{
    "remoteUUID": "dfdbd851-9d6e-4f6a-aa47-cfefd5571ecr7",
    "examTypes": ["ECG Wincardio"],
    "examStatus": ["LAUDO_REMOTO"],
    "initialDate": "2021-08-01T15:25:46-03:00",
    "endDate": "2021-08-10T15:25:46-03:00",
    "patientName": "Paciente 4",
    "centralUUID": "4de569e2-6d05-4d73-a724-0c1bf6666286" }'

Responses Headers

NomeValorObrigatório
Content-Typeapplication/jsonSim

200 Success

Body raw(json)

CampoDescriçãoObrigatório
examUUIDUUID do exameSim
remoteUUIDUUID do ponto remotoSim
examTypeNome do tipo de exameSim
examStatusStatus do exameSim
studyDateTimeData em que o exame foi feitoSim
studyReceivedDateTimeData em que o exame foi recebidoSim
studyFileNameNome do arquivo do exameSim
patientNameNome do paciente do exameSim
reportReleaseDateTimeData em que o laudo foi liberadoSim
reportFileNameNome do arquivo do laudoSim
operatorEmailE-mail do operador.Não
repetitionRepetiçãoNão
reasonMotivo pelo qual foi solicitado repetição do exameSim
patientPacienteSim
nameNome do pacienteSim
genderGênero do pacienteNão
birthDateData de nascimento do pacienteNão
heightAltura do paciente em centímetrosNão
weightPeso do paciente em quilogramasNão
cpfCPF do paciente sem máscara (11 dígitos)Não
rgRG do paciente sem máscara (9 dígitos)Não
Exemplo
[
  {
    "examUUID": "71156ce2-de23-4f1b-bf7e-aa1fdf45213e",
    "examStatus": "EM_ANALISE",
    "ExamType": "ECG",
    "remoteUUID": "dfdbd851-9d6e-4f6b-aa47-cfefd5571ec7",
    "patientName": "Paciente 4",
    "studyDateTime": "2021-05-28T15:48:00.000+00:00",
    "studyReceivedDateTime": "2021-05-31T19:10:14.560+00:00",
    "studyFileName": "MMD#Paciente4##130520211233#MedicoSolicitante#N.WXML",
    "reportFileName": "MMD#Paciente4##130520211233#MedicoSolicitante#N.PDF",
    "reportReleaseDateTime": "",
    "operatorEmail": "asd@email.com",
    "patient": {
      "name": "Jhon Doe",
      "gender": "Masculino",
      "birthDate": "2000-09-09T03:00:00.000+00:00",
      "height": "172",
      "weight": "68",
      "cpf": "18935765074",
      "rg": "487719955"
    }
  }
]

204 No Content

Caso não sejam encontrados exames com os filtros fornecidos.

Body raw (json)

Exemplo
[]

400 Bad Request

Caso algum campo obrigatório esteja faltando ou esteja em um formato incorreto.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
  "message": "Excepteur sed eu deserunt"
  }
]

401 Unauthorized

Caso os headers API KEY e/ou API SECRET estejam faltando ou sejam inválidos.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

500 Internal Server Error

Caso ocorra um erro interno no processamento da requisição.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

Vídeo de configuração do método

GET /exams/:examUUID/file

Download do arquivo do exame especificado.

Headers

NomeValorObrigatório
Endpointhttps://thundera.com.br/api/exams/:examUUID/fileSim
X-MICROMED-API-KEYUUID do ServiçoSim
X-MICROMED-API-SECRETChave de API do ServiçoSim

Path variables

NomeDescriçãoObrigatório
examUUIDUUID do exameSim

Exemplo

curl
  curl --location --request GET 'https://thundera.com.br/api/exams/:examUUID/file' \
  --header 'X-MICROMED-API-KEY: <uuid do serviço>' \
  --header 'X-MICROMED-API-SECRET: <chave de api do serviço>'

Responses Headers

NomeValorObrigatório
Content-Typeapplication/octet-streamSim

200 Success

Retorna o arquivo do exame para download.

markdown
  Após realizar a pesquisa com sucesso, o status do exame é atualizado para API BAIXOU O EXAME. Não é possível realizar pesquisa de exames com este status, pois entende-se que a API já baixou este exame. 

204 No Content

Caso não seja encontrado o arquivo do exame com os filtros fornecidos.

Body raw (json)

Exemplo
[]

400 Bad Request

Caso algum campo obrigatório esteja faltando ou esteja em um formato incorreto.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
  "message": "Excepteur sed eu deserunt"
  }
]

401 Unauthorized

Caso os headers API KEY e/ou API SECRET estejam faltando ou sejam inválidos.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

500 Internal Server Error

Caso ocorra um erro interno no processamento da requisição.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

Vídeo de configuração do método

GET/exams/:exameUUID/images/file

Download do arquivo de imagem do exame especificado.
Por ora, o único exame que comporta essa funcionalidade é o ECG Wincardio (tipo de arquivo WXML).

Headers

NomeValorObrigatório
Endpointhttps://thundera.com.br/api/exams/:examUUID/images/fileSim
X-MICROMED-API-KEYUUID do ServiçoSim
X-MICROMED-API-SECRETChave de API do ServiçoSim

Path variables

NomeDescriçãoObrigatório
examUUIDUUID do exameSim

Exemplo

curl
  curl --location --request GET 'https://thundera.com.br/api/exams/:examUUID/images/file ' \
  --header 'X-MICROMED-API-KEY: <uuid do serviço>' \
  --header 'X-MICROMED-API-SECRET: <chave de api do serviço>'

Responses Headers

NomeValorObrigatório
Content-Typeapplication/octet-streamSim

200 Success

Retorna o arquivo do exame para download.

  Após realizar a pesquisa com sucesso, o status do exame é atualizado para API BAIXOU O EXAME. Não é possível realizar pesquisa de exames com este status, pois entende-se que a API já baixou este exame. 

204 No Content

Caso não seja encontrado o arquivo do exame com os filtros fornecidos.

Body raw (json)

Exemplo
[]

400 Bad Request

Caso algum campo obrigatório esteja faltando ou esteja em um formato incorreto.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
  "message": "Excepteur sed eu deserunt"
  }
]

401 Unauthorized

Caso os headers API KEY e/ou API SECRET estejam faltando ou sejam inválidos.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

500 Internal Server Error

Caso ocorra um erro interno no processamento da requisição.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

Vídeo de configuração do método

GET /exams/:examUUID/reports/file

Download do arquivo PDF do laudo especificado.

Headers

NomeValorObrigatório
Endpointhttps://thundera.com.br/api/exams/:examUUID/reports/fileSim
X-MICROMED-API-KEYUUID do ServiçoSim
X-MICROMED-API-SECRETChave de API do ServiçoSim

Path variables

NomeDescriçãoObrigatório
examUUIDUUID do exameSim

Exemplo

curl
  curl --location --request GET 'https://thundera.com.br/api/exams/:examUUID/reports/file' \
  --header 'X-MICROMED-API-KEY: <uuid do serviço>' \
  --header 'X-MICROMED-API-SECRET: <chave de api do serviço>'

Responses Headers

NomeValorObrigatório
Content-Typeapplication/pdfSim

200 Success

Retorna o PDF do arquivo do laudo para download.

  Após realizar a pesquisa com sucesso, o status do laudo é atualizado para API BAIXOU O LAUDO. Não é possível realizar pesquisa de laudos com este status, pois entende-se que a API já baixou este laudo. 

204 No Content

Caso não seja encontrado o arquivo do exame com os filtros fornecidos.

Body raw (json)

Exemplo
[]

400 Bad Request

Caso algum campo obrigatório esteja faltando ou esteja em um formato incorreto.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
  "message": "Excepteur sed eu deserunt"
  }
]

401 Unauthorized

Caso os headers API KEY e/ou API SECRET estejam faltando ou sejam inválidos.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

500 Internal Server Error

Caso ocorra um erro interno no processamento da requisição.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

Vídeo de configuração do método

GET/remotes

Devolve ao cliente uma lista com os nomes dos pontos remotos, suas UUIDs e com quais centrais estão vinculadas dentro do serviço.

Request
Headers

NomeValorObrigatório
Endpointhttps://thundera.com.br/api/remotesSim
X-MICROMED-API-KEYUUID do ServiçoSim
X-MICROMED-API-SECRETChave de API do ServiçoSim
curl
  curl --location --request GET 'https://thundera.com.br/api/remotes' \
  --header 'X-MICROMED-API-KEY: <uuid do serviço>' \
  --header 'X-MICROMED-API-SECRET: <chave de api do serviço>'

Responses Headers

NomeValorObrigatório
Content-Typeapplication/jsonSim

200 Success

Body raw(json)

CampoDescriçãoObrigatório
remotePointsVetor contendo a lista dos pontos remotosSim

Conteúdo ojeto remotePoint (json)

CampoDescriçãoObrigatório
nameNome do ponto remotoSim
uuidUUID do ponto remotoSim
centralPointsLista que contém informações sobre as centrais cujo ponto remoto está vinculadoSim

Exemplo

curl
  {
    "remotePoints": [
      {
        "name": "NomeDoPonto",
        "uuid": "dfdbd851-9d6e-4f6b-aa47-cfefd5571ec7",
        "centralPoints": [
          {
            "name": "NomeDaCentral",
            "uuid": "d24e4de9-de9c-4da3-8e62-2f5b2a079eec",
          },
          {
            "name": "NomeDaOutraCentral",
            "uuid": "64518fe4-4e27-42c9-a4a2-5fdbe10650dd",
          }
        ]
      },
      {
        "name": "NomeDoOutroPonto",
        "uuid": "1887d355-4515-4bd4-b388-78d927796b81",
        "centralPoints": [
          {
            "name": "NomeDaOutraCentral",
            "uuid": "64518fe4-4e27-42c9-a4a2-5fdbe10650dd",
          }
        ]
      }
    ]
  }

204 No Content

Caso não seja encontrado o arquivo do exame com os filtros fornecidos.

Body raw (json)

Exemplo
[]

400 Bad Request

Caso algum campo obrigatório esteja faltando ou esteja em um formato incorreto.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
  "message": "Excepteur sed eu deserunt"
  }
]

401 Unauthorized

Caso os headers API KEY e/ou API SECRET estejam faltando ou sejam inválidos.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

500 Internal Server Error

Caso ocorra um erro interno no processamento da requisição.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

Vídeo de configuração do método

PATCH /exams/:examUUID

Endpoint que permite alterar o status do exame identificado pelo UUID.

Request
Headers

NomeValorObrigatório
Content-Typeapplication/jsonSim
base-urlhttps://thundera.com.br/api/Sim
X-MICROMED-API-KEY189f62d3-2eb8-469d-9cab-eb0d7dd4c5d4Sim
X-MICROMED-API-SECRETOI5WGIfmG6G0xKbrAkMia55SLHcStXv1C7j+vCwJJrk=Sim
curl
  curl --location --request POST 'https://base-uri/exams' \
  --header 'X-MICROMED-API-KEY: <API Key>' \
  --header 'X-MICROMED-API-SECRET: <API Secret>'

Responses Headers

NomeValorObrigatório
Content-Typeapplication/jsonSim

200 Success

Body raw(json)

CampoDescriçãoObrigatório
messageMensagem que indica o sucesso da requisiçãoSim
Exemplo
[
  {
    "message": "Status modificado para 'FINALIZADO_API' com sucesso.",
  }
]

204 No Content

Caso não seja encontrado o arquivo do exame com os filtros fornecidos.

Body raw (json)

Exemplo
[]

400 Bad Request

Caso algum campo obrigatório esteja faltando ou esteja em um formato incorreto.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
  "message": "Excepteur sed eu deserunt"
  }
]

401 Unauthorized

Caso os headers API KEY e/ou API SECRET estejam faltando ou sejam inválidos.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

405 Method not allowed

Caso o status enviado não seja permitido para a alteração.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

500 Internal Server Error

Caso ocorra um erro interno no processamento da requisição.

Body raw (json)

CampoDescriçãoObrigatório
messageMensagem com a descrição do erroSim
Exemplo
[
  {
    "message": "Excepteur sed eu deserunt"
  }
]

Apêndice

ExamStatus - Significados

StatusSignificado
PRONTO_PARA_ENVIOPonto remoto acabou de receber o exame.
ENVIANDOPonto remoto está enviando o exame para o webservice.
ERRO_NO_ENVIOPonto remoto não conseguiu fazer o envio para o webservice.
ENVIO_CONCLUIDOQuando o webservice recebeu o exame e salvou no servidor.
DISPONIVEL_PARA_LAUDOExame já está no servidor e nenhum laudador abriu o exame para laudar ainda.
EM_ANALISEQuando algum laudador abriu o exame pelo menos 1x.
LAUDO_DISPONIVELQuando o exame já foi laudado.
LAUDO_REMOTOQuando o laudo já está no ponto remoto (fluxo completo).
REPETIR_EXAMEQuando é solicitado repetição do exame.
LAUDO_INTEGRACAO(Apenas para serviços com integração habilitada) Quando o laudo foi enviado via integração e não deve ser enviado de volta para o ponto remoto.
LAUDO_ENVIADO_PARA_INTEGRACAO(Apenas para serviços com integração habilitada) Quando o ponto remoto "toma ciência" de que o laudo foi enviado só para integração e não vai retornar ao ponto remoto.
BAIXANDO_PARA_CENTRALStatus transitório, aplicando quando um exame está em processo de download para o Thundera Central.
ERRO_BAIXANDOStatus apresentado quando há algum tipo de erro ao realizar o download do exame.EXAME_DELETADO_CENTRAL Este status não é mais utilizado pois hoje há uma coluna que indica quando um exame foi deletado. O seu último status é mantido, e desta forma temos uma exclusão lógica. Se mantém devido a legado do sistema.
REPETIR_EXAME_TRANSMITIDOStatus transitório, ocorre quando é solicitada a repetição do exame e este dado ainda não foi recebido pelo ponto remoto.
LAUDO_AGUARDANDO_LIBERACAOUtilizado em serviços que contam com um médico revisor. Os laudos somente são enviados após a liberação. Este status ocorre quando o laudo foi emitido mas ainda não foi liberado pelo revisor.
ERRO_DE_DESCRIPTOGRAFIAHouve erro ao descriptografar os dados do exame no momento de geração do laudo.
ERRO_DE_DESCRIPTOGRAFIA_AVISADOO ponto remoto correspondente foi avisado sobre o erro de descriptografia que ocorreu no exame.
EXAME_BAIXADO_APIStatus que indica se o exame foi baixado por API
LAUDO_BAIXADO_APIStatus que indica se o laudo foi baixado por API
FINALIZADO_APIStatus que indica que o laudo já foi efetuado, e o processo finalizado.