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

# DiagnosticReport con LOINC y effectiveDateTime

> DiagnosticReport con code LOINC, status final, subject y effectiveDateTime ISO-8601.

## Escenario

Un laboratorio clínico emite resultados que viajan hacia el EHR del prescriptor y, en paralelo, hacia el bus MINSAL. El identificador del examen debe ser **LOINC** (no códigos internos del laboratorio), y la fecha del examen, no de emisión, va en `effectiveDateTime`. Inspect valida que `DiagnosticReport` lleve `status`, `code`, `subject` y `effective[x]`, todo bajo la regla `cl-dr-04`.

## Payload válido

```json Hemograma completo con LOINC theme={null}
{
  "resourceType": "DiagnosticReport",
  "status": "final",
  "category": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/v2-0074",
          "code": "HM",
          "display": "Hematology"
        }
      ]
    }
  ],
  "code": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "58410-2",
        "display": "Complete blood count (hemogram) panel - Blood by Automated count"
      }
    ],
    "text": "Hemograma completo"
  },
  "subject": { "reference": "Patient/example" },
  "effectiveDateTime": "2026-05-10T08:32:00-04:00",
  "issued": "2026-05-10T14:05:00-04:00",
  "performer": [
    {
      "display": "Laboratorio clínico"
    }
  ],
  "result": [
    { "reference": "Observation/hb-example" },
    { "reference": "Observation/leuco-example" },
    { "reference": "Observation/plt-example" }
  ],
  "conclusion": "Sin alteraciones significativas en serie roja, blanca ni plaquetas."
}
```

## Cómo validarlo

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://fhiron.cl/api/validate \
    -H "Content-Type: application/json" \
    -H "X-API-Key: $FHIRON_API_KEY" \
    -d @diagnostic-report.json
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://fhiron.cl/api/validate", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": process.env.FHIRON_API_KEY,
    },
    body: JSON.stringify(report),
  });
  const outcome = await response.json();
  ```

  ```python Python theme={null}
  import os, requests
  response = requests.post(
      "https://fhiron.cl/api/validate",
      headers={
          "Content-Type": "application/json",
          "X-API-Key": os.environ["FHIRON_API_KEY"],
      },
      json=report,
  )
  outcome = response.json()
  ```
</CodeGroup>

## OperationOutcome esperado

Cuando `code.coding[]` incluye al menos un coding con `system: "http://loinc.org"` y `effectiveDateTime` está en formato ISO-8601, `issue[]` viene vacío.

Errores típicos cuando algo falla:

* `cl-dr-04`: falta `effective[x]` (`effectiveDateTime` o `effectivePeriod`). Sin la fecha del examen, el resultado no es trazable clínicamente.
* `cl-dr-*`: falta `status`, `code` o `subject`. Tres cardinalidades `1..1`.
* `cl-json-*`: `effectiveDateTime` con formato no ISO-8601 (ej: `"10/05/2026"`).

## Tips

<Tip>
  **`effectiveDateTime` vs `issued`**:

  * `effectiveDateTime` es **cuándo se tomó la muestra**.
  * `issued` es **cuándo se emitió el informe**.
    Pueden estar separados por horas o días. Para tendencias clínicas siempre se usa `effectiveDateTime`.
</Tip>

<Tip>
  **LOINC más comunes en Chile**:

  * `58410-2`: hemograma completo.
  * `24323-8`: perfil bioquímico.
  * `2160-0`: creatinina sérica.
  * `2345-7`: glucosa.
  * `2089-1`: colesterol LDL.
</Tip>

<Tip>
  Para exámenes que cubren un período (ej: Holter de 24 h, recolección orina 24 h) usar `effectivePeriod` con `start` y `end` en vez de `effectiveDateTime`.
</Tip>

<Tip>
  `result[]` referencia los `Observation` con cada parámetro (hemoglobina, leucocitos, plaquetas, etc.). Inspect valida cada `Observation` referenciado en el `Bundle` por separado.
</Tip>

<Tip>
  **Time zone Chile**: usar offset explícito (`-04:00` abril–septiembre, `-03:00` octubre–marzo con horario de verano) en lugar de UTC, salvo que el sistema receptor exija UTC. La fecha clínica suele leerse en hora local.
</Tip>

<Note>
  Inspect valida este `DiagnosticReport` contra el perfil R4 base más la regla `cl-dr-04`. Si falta `effectiveDateTime` y tampoco hay `effectivePeriod`, devuelve `cl-dr-04` con `quickFix` (`jsonPointer: /effectiveDateTime`).
</Note>
