> ## Documentation Index
> Fetch the complete documentation index at: https://omniloy.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Estructura de Datos del Paciente

> Formato JSON para configurar el chat de SofIA con el historial clínico y contexto completo del paciente

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` | Indica si el paciente ha firmado el consentimiento para ser grabado. Opcional. El indicador de consentimiento debe estar habilitado en la configuración de tu cuenta de Omniloy para que se muestre (contacta a [support@omniloy.com](mailto:support@omniloy.com)). |

<Info>
  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.
</Info>

<Warning>
  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.
</Warning>

## Ejemplos de Uso

### Ejemplo Mínimo

El uso más simple con solo la identidad del paciente:

```json theme={null}
{
  "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:

```json theme={null}
{
  "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:

```json theme={null}
{
  "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`

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                                                                                          |

<Tip>
  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.
</Tip>

## Pasar `patientdata` al Componente

### Como Atributo HTML

Dado que `patientdata` es de tipo JSON, el SDK lo parsea automáticamente:

```html theme={null}
<sofia-sdk
  apikey="your-api-key"
  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)

```javascript theme={null}
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

```jsx theme={null}
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"
    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.

<Warning>
  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.
</Warning>

## Próximos Pasos

1. [Integrar con tu framework](/sofia/es/sdk/vanilla)
2. [Diseñar esquemas de datos clínicos](/sofia/es/sdk/templates)
3. [Probar tu integración](/sofia/es/sdk/testing)
