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:
| Nome | Valor |
|---|---|
| base-url | https://classic.coreum.health/api/ |
| X-MICROMED-API-KEY | UUID do serviço |
| X-MICROMED-API-SECRET | Chave de API |
| RemoteUUID | UUID do ponto remoto |
| examStatus | Nomes dos tipos de exames |
| initialDate | Data inicial da pesquisa |
| endDate | Data final da pesquisa |
| patientName | Nome ou trecho do nome do paciente |
| centralUUID | UUID da central |
Ao lado é possível visualizar os Endpoints da API.
Métodos
POST/exams
Este método lista os exames filtrados.
Request
Headers
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/json | Sim |
| Endpoint | https://thundera.com.br/api/exams | Sim |
| X-MICROMED-API-KEY | UUID do Serviço | Sim |
| X-MICROMED-API-SECRET | Chave de API do Serviço | Sim |
Body raw(json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| remoteUUID | UUID do Remoto | Não |
| examTypes | Ecg Imagem, Mapa Hyperview, ECG Wincardio | Sim |
| examStatus | DISPONIVEL_PARA_LAUDO, EM_ANALISE, LAUDO_DISPONIVEL | Não |
| initialDate | 2024-06-20T12:25:46-03:00 | Sim |
| endDate | 2024-07-01T22:25:46-03:00 | Sim |
| patientName | NOME DO PACIENTE | Não |
| centralUUID | UUID da Central | Não |
Exemplo
curlcurl --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
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/json | Sim |
200 Success
Body raw(json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| examUUID | UUID do exame | Sim |
| remoteUUID | UUID do ponto remoto | Sim |
| examType | Nome do tipo de exame | Sim |
| examStatus | Status do exame | Sim |
| studyDateTime | Data em que o exame foi feito | Sim |
| studyReceivedDateTime | Data em que o exame foi recebido | Sim |
| studyFileName | Nome do arquivo do exame | Sim |
| patientName | Nome do paciente do exame | Sim |
| reportReleaseDateTime | Data em que o laudo foi liberado | Sim |
| reportFileName | Nome do arquivo do laudo | Sim |
| operatorEmail | E-mail do operador. | Não |
| repetition | Repetição | Não |
| reason | Motivo pelo qual foi solicitado repetição do exame | Sim |
| patient | Paciente | Sim |
| name | Nome do paciente | Sim |
| gender | Gênero do paciente | Não |
| birthDate | Data de nascimento do paciente | Não |
| height | Altura do paciente em centímetros | Não |
| weight | Peso do paciente em quilogramas | Não |
| cpf | CPF do paciente sem máscara (11 dígitos) | Não |
| rg | RG 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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
500 Internal Server Error
Caso ocorra um erro interno no processamento da requisição.
Body raw (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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
| Nome | Valor | Obrigatório |
|---|---|---|
| Endpoint | https://thundera.com.br/api/exams/:examUUID/file | Sim |
| X-MICROMED-API-KEY | UUID do Serviço | Sim |
| X-MICROMED-API-SECRET | Chave de API do Serviço | Sim |
Path variables
| Nome | Descrição | Obrigatório |
|---|---|---|
| examUUID | UUID do exame | Sim |
Exemplo
curlcurl --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
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/octet-stream | Sim |
200 Success
Retorna o arquivo do exame para download.
markdownApó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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
500 Internal Server Error
Caso ocorra um erro interno no processamento da requisição.
Body raw (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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
| Nome | Valor | Obrigatório |
|---|---|---|
| Endpoint | https://thundera.com.br/api/exams/:examUUID/images/file | Sim |
| X-MICROMED-API-KEY | UUID do Serviço | Sim |
| X-MICROMED-API-SECRET | Chave de API do Serviço | Sim |
Path variables
| Nome | Descrição | Obrigatório |
|---|---|---|
| examUUID | UUID do exame | Sim |
Exemplo
curlcurl --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
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/octet-stream | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
500 Internal Server Error
Caso ocorra um erro interno no processamento da requisição.
Body raw (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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
| Nome | Valor | Obrigatório |
|---|---|---|
| Endpoint | https://thundera.com.br/api/exams/:examUUID/reports/file | Sim |
| X-MICROMED-API-KEY | UUID do Serviço | Sim |
| X-MICROMED-API-SECRET | Chave de API do Serviço | Sim |
Path variables
| Nome | Descrição | Obrigatório |
|---|---|---|
| examUUID | UUID do exame | Sim |
Exemplo
curlcurl --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
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/pdf | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
500 Internal Server Error
Caso ocorra um erro interno no processamento da requisição.
Body raw (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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
| Nome | Valor | Obrigatório |
|---|---|---|
| Endpoint | https://thundera.com.br/api/remotes | Sim |
| X-MICROMED-API-KEY | UUID do Serviço | Sim |
| X-MICROMED-API-SECRET | Chave de API do Serviço | Sim |
curlcurl --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
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/json | Sim |
200 Success
Body raw(json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| remotePoints | Vetor contendo a lista dos pontos remotos | Sim |
Conteúdo ojeto remotePoint (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| name | Nome do ponto remoto | Sim |
| uuid | UUID do ponto remoto | Sim |
| centralPoints | Lista que contém informações sobre as centrais cujo ponto remoto está vinculado | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
500 Internal Server Error
Caso ocorra um erro interno no processamento da requisição.
Body raw (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/json | Sim |
| base-url | https://thundera.com.br/api/ | Sim |
| X-MICROMED-API-KEY | 189f62d3-2eb8-469d-9cab-eb0d7dd4c5d4 | Sim |
| X-MICROMED-API-SECRET | OI5WGIfmG6G0xKbrAkMia55SLHcStXv1C7j+vCwJJrk= | Sim |
curlcurl --location --request POST 'https://base-uri/exams' \ --header 'X-MICROMED-API-KEY: <API Key>' \ --header 'X-MICROMED-API-SECRET: <API Secret>'
Responses Headers
| Nome | Valor | Obrigatório |
|---|---|---|
| Content-Type | application/json | Sim |
200 Success
Body raw(json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem que indica o sucesso da requisição | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
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)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
500 Internal Server Error
Caso ocorra um erro interno no processamento da requisição.
Body raw (json)
| Campo | Descrição | Obrigatório |
|---|---|---|
| message | Mensagem com a descrição do erro | Sim |
Exemplo[ { "message": "Excepteur sed eu deserunt" } ]
Apêndice
ExamStatus - Significados
| Status | Significado |
|---|---|
| PRONTO_PARA_ENVIO | Ponto remoto acabou de receber o exame. |
| ENVIANDO | Ponto remoto está enviando o exame para o webservice. |
| ERRO_NO_ENVIO | Ponto remoto não conseguiu fazer o envio para o webservice. |
| ENVIO_CONCLUIDO | Quando o webservice recebeu o exame e salvou no servidor. |
| DISPONIVEL_PARA_LAUDO | Exame já está no servidor e nenhum laudador abriu o exame para laudar ainda. |
| EM_ANALISE | Quando algum laudador abriu o exame pelo menos 1x. |
| LAUDO_DISPONIVEL | Quando o exame já foi laudado. |
| LAUDO_REMOTO | Quando o laudo já está no ponto remoto (fluxo completo). |
| REPETIR_EXAME | Quando é 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_CENTRAL | Status transitório, aplicando quando um exame está em processo de download para o Thundera Central. |
| ERRO_BAIXANDO | Status 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_TRANSMITIDO | Status transitório, ocorre quando é solicitada a repetição do exame e este dado ainda não foi recebido pelo ponto remoto. |
| LAUDO_AGUARDANDO_LIBERACAO | Utilizado 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_DESCRIPTOGRAFIA | Houve erro ao descriptografar os dados do exame no momento de geração do laudo. |
| ERRO_DE_DESCRIPTOGRAFIA_AVISADO | O ponto remoto correspondente foi avisado sobre o erro de descriptografia que ocorreu no exame. |
| EXAME_BAIXADO_API | Status que indica se o exame foi baixado por API |
| LAUDO_BAIXADO_API | Status que indica se o laudo foi baixado por API |
| FINALIZADO_API | Status que indica que o laudo já foi efetuado, e o processo finalizado. |