La propiedad patientdata permite proporcionar el historial clínico y contexto del paciente a SofIA. Aunque es opcional, es altamente recomendada — permite que SofIA haga referencia al historial del paciente al generar reportes y responder preguntas clínicas.
Estructura de Datos
La prop patientdata acepta un objeto JSON con la siguiente estructura:
| Campo | Tipo | Descripción |
|---|
| fullName | string | Nombre completo del paciente |
| birthDate | string | Fecha de nacimiento (cualquier formato: YYYY-MM-DD, DD/MM/YYYY, etc.) |
| phone | string | Número de teléfono de contacto |
| address | string | Dirección del paciente |
| extraData | object | Objeto clave-valor flexible para cualquier dato clínico adicional |
| signedConsent | { signed: boolean, date?: string } or undefined | Objeto para indicar si el paciente ha firmado el consentimiento para ser grabado. Opcional. Esto requiere que la propiedad showconsentindicator sea true para estar habilitado. |
Los campos fullName, birthDate, phone y address se anonimizan automáticamente en el procesamiento de IA. SofIA reemplaza estos valores con marcadores de posición antes de enviar los datos al motor de IA, y luego los restaura en la salida final. Esto asegura el cumplimiento HIPAA/GDPR.
Todos los datos de pacientes mostrados en los ejemplos a continuación son completamente ficticios. Nunca utilice información real de pacientes en ejemplos de configuración, entornos de prueba o código fuente.
Ejemplos de Uso
Ejemplo Mínimo
El uso más simple con solo la identidad del paciente:
{
"fullName": "María García",
"birthDate": "1985-05-15"
}
Ejemplo Estándar
Un uso típico incluyendo información de contacto e historial médico:
{
"fullName": "María García",
"birthDate": "1985-05-15",
"phone": "612345678",
"address": "Calle Principal 123, Madrid",
"extraData": {
"medical_practice": "Cardiología",
"patient_medical_notes": {
"notes": [
{
"consultation": "Seguimiento cardiológico",
"date": "2024-10-25",
"summary": "Presión arterial estable con medicación actual. ECG normal."
},
{
"consultation": "Revisión general",
"date": "2024-08-12",
"summary": "Examen anual rutinario. Todos los signos vitales dentro del rango normal."
}
]
}
}
}
Ejemplo Completo
Uso completo con múltiples fuentes de datos clínicos:
{
"fullName": "María García",
"birthDate": "1985-05-15",
"phone": "612345678",
"address": "Calle Principal 123, Madrid",
"signedConsent": { "signed": true, "date": "2025-08-01" },
"extraData": {
"medical_practice": "Medicina Interna",
"patient_medical_notes": {
"notes": [
{
"consultation": "Endocrinología",
"date": "2024-11-01",
"url": "https://ehr.ejemplo.com/notas/12345",
"summary": "HbA1c en 7.2%. Ajustada dosis de metformina."
}
]
},
"allergies": ["Penicilina", "Sulfonamidas"],
"active_medications": [
{"name": "Metformina", "dose": "1000mg", "frequency": "dos veces al día"},
{"name": "Lisinopril", "dose": "10mg", "frequency": "una vez al día"}
],
"lab_results": {
"date": "2024-10-28",
"values": {
"glucose_fasting": "142 mg/dL",
"HbA1c": "7.2%",
"creatinine": "0.9 mg/dL"
}
},
"chronic_conditions": ["Diabetes Tipo 2", "Hipertensión"]
}
}
El campo extraData es un Record<string, unknown> flexible que acepta cualquier estructura clave-valor. Aquí es donde se proporciona el contexto clínico que SofIA utilizará durante la consulta.
Campos comunes usados en extraData:
| Campo | Descripción |
|---|
medical_practice | Especialidad del doctor (ej.: “Cardiología”, “Pediatría”). Ayuda a SofIA a adaptar las respuestas al contexto clínico |
patient_medical_notes | Notas de consultas previas. Incluir campos url si se desea que SofIA cite la fuente |
allergies | Alergias conocidas para verificación cruzada de seguridad |
active_medications | Medicamentos actuales para verificación de interacciones |
lab_results | Valores de laboratorio recientes |
chronic_conditions | Condiciones médicas crónicas |
Incluya un campo url en las notas médicas si desea que SofIA cite la fuente de datos al guiar al doctor. SofIA referenciará la URL en sus respuestas para que el doctor pueda verificar el registro original.
Pasar patientdata al Componente
Como Atributo HTML
Dado que patientdata es de tipo JSON, el SDK lo parsea automáticamente:
<sofia-sdk
apikey="sk-your-api-key-here"
baseurl="https://api.example.com/v1"
wssurl="wss://ws.example.com"
userid="dr-martinez-789"
patientid="paciente-123"
patientdata='{
"fullName": "María García",
"birthDate": "1985-05-15",
"extraData": {
"medical_practice": "Cardiología"
}
}'
></sofia-sdk>
Programáticamente (JavaScript)
const sofiaElement = document.querySelector('sofia-sdk');
const patientData = {
fullName: "María García",
birthDate: "1985-05-15",
extraData: {
medical_practice: "Cardiología",
allergies: ["Penicilina"]
}
};
sofiaElement.setAttribute('patientdata', JSON.stringify(patientData));
React
const [patientData, setPatientData] = useState({
fullName: "María García",
birthDate: "1985-05-15",
extraData: { medical_practice: "Cardiología" }
});
return (
<sofia-sdk
apikey="YOUR_API_KEY"
baseurl="https://api.example.com/v1"
wssurl="wss://ws.example.com"
userid="dr-martinez-789"
patientid="paciente-123"
patientdata={JSON.stringify(patientData)}
/>
);
Límites y Validación
| Regla | Detalles |
|---|
| Tamaño máximo | 100 KB |
| Error al exceder | El componente rechaza con error: "patientData supera 100 kB" |
| Formato | Debe ser JSON válido (o un objeto JavaScript cuando se pasa programáticamente) |
| Campos requeridos | Ninguno — todos los campos son opcionales |
Anonimización Automática
SofIA anonimiza automáticamente los siguientes campos personales antes de enviar datos al motor de IA:
fullName
birthDate
phone
address
Estos valores se reemplazan con marcadores de posición neutrales durante el procesamiento de IA y se restauran en la salida final. Esto asegura que la información de identificación personal (PII) nunca llegue directamente al modelo de IA.
Los datos dentro de extraData no se anonimizan automáticamente. Evite colocar PII en bruto (números de seguridad social, documentos de identidad, etc.) en campos de extraData. Use identificadores anonimizados cuando sea posible.
Próximos Pasos
- Integrar con tu framework
- Diseñar esquemas de datos clínicos
- Probar tu integración