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").