Skip to main content

Escenario

Una receta de paracetamol 500 mg que sale de un sistema de atención primaria hacia una farmacia ambulatoria necesita dos códigos: TFC (Terminología Farmacéutica Chilena, ISP) para que la farmacia pueda dispensar, y ATC (Anatomical Therapeutic Chemical, WHO) para que el bus MINSAL pueda agregarla en estadísticas. Inspect valida que MedicationRequest lleve status, intent, subject y medication[x]: las cuatro reglas cl-medreq-*.

Payload válido

MedicationRequest con TFC + ATC
{
  "resourceType": "MedicationRequest",
  "status": "active",
  "intent": "order",
  "medicationCodeableConcept": {
    "coding": [
      {
        "system": "https://terminologia.minsal.cl/CodeSystem/TFC",
        "code": "F0001520",
        "display": "Paracetamol 500 mg comprimido"
      },
      {
        "system": "http://www.whocc.no/atc",
        "code": "N02BE01",
        "display": "Paracetamol"
      }
    ],
    "text": "Paracetamol 500 mg comprimido"
  },
  "subject": { "reference": "Patient/example" },
  "authoredOn": "2026-05-12",
  "requester": { "reference": "Practitioner/example" },
  "dosageInstruction": [
    {
      "text": "1 comprimido cada 8 horas por 3 días",
      "timing": {
        "repeat": { "frequency": 3, "period": 1, "periodUnit": "d" }
      },
      "route": {
        "coding": [
          {
            "system": "http://snomed.info/sct",
            "code": "26643006",
            "display": "Vía oral"
          }
        ]
      }
    }
  ],
  "dispenseRequest": {
    "quantity": { "value": 9, "unit": "comprimido" },
    "numberOfRepeatsAllowed": 0
  }
}

Cómo validarlo

curl -X POST https://fhiron.cl/api/validate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $FHIRON_API_KEY" \
  -d @medication-request.json

OperationOutcome esperado

Si la receta lleva los cuatro campos obligatorios y al menos un coding con system canónico, issue[] viene vacío. Errores típicos cuando falta algo:
  • cl-medreq-01: falta status.
  • cl-medreq-02: falta intent (la regla más frecuente al migrar desde HIS legacy que no distinguen order / plan / proposal).
  • cl-medreq-03: falta subject.
  • cl-medreq-04: falta medication[x] (ni medicationReference ni medicationCodeableConcept).

Tips

Doble coding TFC + ATC: la farmacia dispensa con TFC, el bus MINSAL agrega con ATC. Incluir ambos en medicationCodeableConcept.coding[] evita un round-trip de mapeo en el consumidor.
intent=order es para recetas firmadas. Para sugerencias generadas por un asistente clínico usar intent=proposal; para protocolos precargados, intent=plan. La regla cl-medreq-02 no es opinionada sobre cuál usar, solo exige que esté presente.
La cantidad dispensable (dispenseRequest.quantity.value) se calcula desde el tratamiento: 1 comp × 3 veces/día × 3 días = 9 comprimidos. La farmacia no debería tener que recalcular esto.
Vía de administración: SNOMED CT (26643006 = vía oral) es más portable que un código local. Para inyectables, 47625008 (vía intravenosa), 78421000 (vía intramuscular).
Inspect valida este MedicationRequest contra el perfil R4 base y las reglas locales cl-medreq-01..04. Si falta intent, devuelve cl-medreq-02 con quickFix (replacement: "order").