Sumarização de Exame
A API de exames recebe um arquivo PDF ou imagem de um exame (foto), realiza a extração dos dados com IA e retorna para o usuário informações sobre o exame de forma resumida e já totalmente estruturada.
Endpoints
POST
https://apim.doctorassistant.ai/api/sandbox/exams
Descrição:
Recebe um arquivo PDF ou imagem de um exame, realiza a extração dos dados com IA e retorna um sumário estruturado do exame.
Autenticação:
Para utilizar esta API, é necessário fornecer a chave de API no cabeçalho da requisição:
"x-daai-api-key": "SUA_API_KEY"
Request Body:
O endpoint pode receber tanto arquivos PDF (.pdf) como arquivos de imagem, aceitando os formatos .png, .jpeg, .jpg, .heic e .webp.
Exemplo de Requisição HTTP
Curl
curl -X POST "https://apim.doctorassistant.ai/api/sandbox/exams" \
-H "x-daai-api-key: <INSIRA_SUA_API_KEY_AQUI>" \
-H "Content-Type: multipart/form-data" \
-F "file=@path/exames.pdf"
JavaScript
const filePath = req.file.path;
// Prepare form data for the API
const formData = new FormData();
formData.append("file", fs.createReadStream(filePath));
try {
const response = await axios.post(
"https://apim.doctorassistant.ai/api/sandbox/exams",
formData,
{
headers: {
"x-daai-api-key": "<INSIRA_SUA_API_KEY_AQUI>",
"Content-Type": "multipart/form-data",
},
}
);
// Clean up the uploaded file
fs.unlinkSync(filePath);
// Send the API response back to the client
res.json(response.data);
} catch (error) {
fs.unlinkSync(filePath); // Clean up the uploaded file even on error
res.status(500).send({
message: "Error uploading file",
error: error.response ? error.response.data : error.message,
});
}
Python
import requests
url = "https://apim.doctorassistant.ai/api/sandbox/exams"
headers = {
"x-daai-api-key": "<INSIRA_SUA_API_KEY_AQUI>",
}
# Lendo um arquivo local de exame
file_path = "path/exames.pdf"
with open(file_path, "rb") as file:
files = {'file': (file_path, file, 'application/pdf')}
response = requests.post(url, files=files, headers=headers)
if response.status_code == 200:
print("Request successful!")
print("Response JSON:", response.json())
else:
print("Request failed!")
print("Status code:", response.status_code)
print("Response text:", response.text)
Estrutura da Resposta
A saída irá variar a depender do tipo de exame.
Exames de Imagem, Radiológicos, Patológicos, e Outros com Laudos Textuais
{
"exam_type": {
"title": "Tipo do Exame",
"content": "Exame de Imagem"
},
"summary": {
"title": "Resumo do exame",
"content": [
"O assoalho pélvico não apresentou alterações significativas.",
"O íleo distal não apresentou alterações significativas.",
"O apêndice cecal não foi visualizado.",
"A parede abdominal não apresentou alterações significativas.",
"Há um foco discreto de endometriose pélvica profunda no compartimento posterior."
]
}
}
Exames de Análises Clínicas (Exames de Urina, Exames de Sangue, etc.)
{
"exam_type": {
"title": "Tipo do Exame",
"content": "Exame de Análises Clínicas"
},
"tests": {
"title": "Resultados de Exames",
"content": [
{
"test_name": { "title": "Nome do Exame", "content": "Vitamina D" },
"result": { "title": "Resultado", "content": "15" },
"reference_value": { "title": "Valor de Referência", "content": ">20" },
"unit": { "title": "Unidade", "content": "ng/mL" }
}
]
}
}