IaBulaDocs API V1English
Navegar na documentação
API Reference

Normalização e resolução de nomes farmacêuticos

.md

Integre POST /v1/resolve e trate resolved e unresolved com segurança, sem presumir uma variante única para qualquer nome.

Nesta página

Resolva uma identidade, quando houver evidência#

POST /v1/resolve recebe query como string obrigatória de 1 a 512 caracteres. O objetivo é identificar uma MedicationVariant canônica, não escolher um medicamento para um paciente. A API preserva a consulta original no campo query.

bash
curl --fail-with-body "$IABULA_API_BASE/v1/resolve" \
  --header "X-API-Key: $IABULA_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"query":"NATULAXE CAPSULA"}'

Exemplo positivo verificado#

NATULAXE CAPSULA foi confirmado como resolved no Hub RapidAPI. Os fatos confirmados são product_name = NATULAXE, entity_type = medication_variant e dosage_form = cápsula. Esta documentação mostra esses fatos sem inventar um UUID ou outros valores de resposta.

Quando status é resolved, resolved contém id, entity_type, product_name, brand_name, dosage_form e active_ingredient_text. brand_name e active_ingredient_text podem ser nulos. O texto de ingrediente não garante vínculo canônico com a tabela de ingredientes.

Abstenção é um resultado válido#

Quando não há evidência suficiente para uma identidade segura, status é unresolved e resolved é null. Ambos os resultados usam HTTP 200. Consultas curtas, ambíguas ou com erros de digitação não têm resolução positiva garantida. Scores, candidatos e motivos internos do gate não são campos públicos.

javascript
const response = await fetch(`${process.env.IABULA_API_BASE}/v1/resolve`, {
  method: "POST",
  headers: {
    "X-API-Key": process.env.IABULA_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ query: "NATULAXE CAPSULA" }),
});
const result = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${result.code}`);
if (result.status === "unresolved") {
  // Ask for more source information or route to manual review.
} else {
  console.log(result.resolved.product_name, result.resolved.dosage_form);
}

Separe ausência de correspondência e falha#

Um HTTP 503 representa indisponibilidade temporária, não unresolved. Não transforme erros de autenticação, quota ou serviço em ausência de identidade. Uma aplicação deve oferecer revisão manual ou pedir informações adicionais quando houver abstenção.

POST /v1/resolve#

Contrato e tipos
Campo JSONTipo e limitesObrigatório
querystring; minLength=1, maxLength=512yes
Contrato e tipos
HTTPContent-TypeSchema
200application/jsonResolveSuccess | ResolveUnresolved
400application/problem+jsonProblem
401application/problem+jsonProblem
403application/problem+jsonProblem
500application/problem+jsonProblem
503application/problem+jsonProblem
429application/problem+jsonProblem
422application/jsonHTTPValidationError

Campos do contrato OpenAPI#

Contrato e tipos
Schema.campoTipo e limitesObrigatório
HTTPValidationError.detailarray<ValidationError>no
Problem.typestringyes
Problem.titlestringyes
Problem.statusintegeryes
Problem.codestringyes
Problem.detailstring | nullno
Problem.request_idstringyes
ResolveRequest.querystring; minLength=1, maxLength=512yes
ResolveSuccess.statusstring: resolvedyes
ResolveSuccess.querystringyes
ResolveSuccess.resolvedResolvedMedicationVariantyes
ResolveUnresolved.statusstring: unresolvedyes
ResolveUnresolved.querystringyes
ResolveUnresolved.resolvednullyes
ResolvedMedicationVariant.idstring (uuid)yes
ResolvedMedicationVariant.entity_typestring: medication_variantyes
ResolvedMedicationVariant.product_namestringyes
ResolvedMedicationVariant.brand_namestring | nullyes
ResolvedMedicationVariant.dosage_formstringyes
ResolvedMedicationVariant.active_ingredient_textstring | nullyes
ValidationError.locarray<string | integer>yes
ValidationError.msgstringyes
ValidationError.typestringyes
ValidationError.inputobjectno
ValidationError.ctxobjectno