@enfermeria/sdk
v0.1.0
Published
Official JavaScript/TypeScript SDK for the EnfermerIA Public API.
Maintainers
Readme
EnfermerIA JavaScript SDK
SDK oficial JavaScript/TypeScript para consumir la API publica de EnfermerIA sin tener que montar manualmente el flujo de subida, creacion de jobs y polling.
Requisitos
- Node.js
18+ fetchnativo disponible en runtime
Instalacion
Desde npm cuando se publique
npm install @enfermeria/sdkInstalacion local desde ruta del disco
Desde otro proyecto consumidor:
npm install C:\ruta\al\repo\sdk\javascriptO con una ruta relativa:
npm install ../EnfermerIA/sdk/javascriptDesarrollo con npm link
En la carpeta del SDK:
cd sdk/javascript
npm install
npm run build
npm linkEn el proyecto consumidor:
npm link @enfermeria/sdkConfiguracion
import { EnfermerIAClient } from "@enfermeria/sdk";
const client = new EnfermerIAClient({
apiKey: process.env.ENFERMERIA_API_KEY!,
baseUrl: "https://enfermer-ia.com/api",
timeoutMs: 30_000
});baseUrl acepta tanto la raiz del sitio (https://enfermer-ia.com) como la raiz de la API (https://enfermer-ia.com/api). Para local puedes usar http://localhost:3000 o http://localhost:3000/api.
Ejemplos de uso recomendados
A) Ruta local de archivo en Node
const result = await client.analyzeImageAndWait({
file: "./talon.png",
clinicalContext: "Paciente con ulcera en talon"
});B) Buffer
import { readFileSync } from "node:fs";
const result = await client.analyzeImageAndWait({
file: readFileSync("./talon.png"),
filename: "talon.png"
});C) Uso explicito completo
import { readFileSync } from "node:fs";
const result = await client.analyzeImageAndWait({
file: readFileSync("./talon.png"),
filename: "talon.png",
contentType: "image/png",
clinicalContext: "Paciente con ulcera en talon"
});Reglas de inferencia
filename
El SDK intenta inferir filename en este orden:
options.filenamesi viene explícito.- El nombre de la ruta local si
filees unstringen Node. File.namesifileesFile.- Un fallback basado en el MIME, por ejemplo
upload.png. - Si no hay pistas,
upload.bin.
contentType
El SDK intenta inferir contentType en este orden:
options.contentTypesi viene explícito.- La extensión de
filename. - La extensión de la ruta local si
filees unstring. File.typeoBlob.typesi existen.- Fallback interno
application/octet-stream.
Extensiones soportadas por inferencia:
png -> image/pngjpg/jpeg -> image/jpegwebp -> image/webpgif -> image/gifbmp -> image/bmptif/tiff -> image/tiff
Si después de inferir el resultado sigue siendo demasiado ambiguo para la API pública actual, el SDK lanza un error claro pidiendo filename o contentType explícitos.
Metodos principales
getUploadUrl()uploadFileToSignedUrl()createAnalysisJob()getJob()waitForJob()analyzeImage()analyzeImageAndWait()
Exports principales
El entrypoint principal exporta:
EnfermerIAClient- Tipos principales (
AnalyzeFileInput,AnalyzeImageOptions,AnalysisResult,WaitForJobOptions, etc.) - Errores principales (
EnfermerIAError,EnfermerIAApiError,EnfermerIAUploadError,EnfermerIAJobError,EnfermerIATimeoutError)
Import soportado:
import { EnfermerIAClient } from "@enfermeria/sdk";Manejo de errores
import {
EnfermerIAApiError,
EnfermerIAJobError
} from "@enfermeria/sdk";
try {
const result = await client.analyzeImageAndWait({
file: "./talon.png"
});
console.log(result);
} catch (error) {
if (error instanceof EnfermerIAApiError) {
console.error(error.statusCode, error.endpoint, error.apiMessage);
}
if (error instanceof EnfermerIAJobError) {
console.error(error.jobId, error.apiMessage);
}
}Como probarlo contra produccion
const client = new EnfermerIAClient({
apiKey: process.env.ENFERMERIA_API_KEY!,
baseUrl: "https://enfermer-ia.com"
});Como probarlo contra localhost
const client = new EnfermerIAClient({
apiKey: process.env.ENFERMERIA_API_KEY!,
baseUrl: "http://localhost:3000"
});Ejemplos incluidos
examples/node-basic.tsexamples/analyze-and-wait.tsexamples/from-path.tsexamples/from-buffer.ts
Desarrollo del paquete
cd sdk/javascript
npm install
npm run test
npm run buildProbar empaquetado local
npm run pack:dry
npm run pack