The server rejected the norepinephrine — and that was the best thing that happened A critical care physician in Colombia built OMAXI, an LLM pipeline that converts Spanish clinical documents into structured data and physician-signable notes. During a validation experiment against a FHIR R4 server, the server rejected a norepinephrine medication record due to a missing dose or rate, prompting the developer to explicitly declare the absence using the standard data-absent-reason extension rather than fabricating a quantity. The developer emphasizes the importance of avoiding valid resources that lie and shares the full write-up and test case on GitHub. I'm a critical care physician in Colombia. For months I've been building OMAXI, an LLM pipeline that reads Spanish clinical documents — nursing records, resident notes, lab reports — and turns them into structured data plus a note a physician can sign. The rule is narrow: structure what the documents say, never infer what they don't. In critical care, the failure that matters isn't a missed nuance. It's a confident fabrication. Last week I ran an experiment: map the pipeline's output to FHIR R4 and validate it against a real server a Medplum project — actual POSTs, every resource read back to confirm what persisted. Of 38 resources in the first run, the server rejected 2. One of them was norepinephrine — the drug that defines the severity of septic shock. The reason: R4 carries an invariant on MedicationAdministration mad-1 requiring a dose or a rate. The source documented "0.35 mcg/kg/min", which can't become a UCUM quantity without the patient's weight — and the pipeline doesn't extract weight. Text alone isn't enough. The standard said no. There was an easy fix: write dose: 0.35 mcg and pass validation instantly — producing a perfectly valid resource that lies about a vasopressor dose. I did the opposite: declared the absence explicitly with the standard data-absent-reason extension as-text . It satisfies the invariant without asserting any quantity, and preserves the original text and route. The goal isn't to produce valid resources. It's to avoid producing valid resources that lie. That rejection turned out to be the most useful moment of the whole experiment. The rest of the friction log is just as instructive: Both runs used entirely fictitious data — including a fabricated day-2 ICU case septic shock, four documents, Spanish that's now in the repo as a reusable test case for anyone working on Spanish-language clinical NLP. Full write-up — what survives the trip to FHIR, what breaks, and in which layer: https://github.com/JesusPantojaP/fhir-spanish-icu-notes https://github.com/JesusPantojaP/fhir-spanish-icu-notes If you work on FHIR in Latin America, Spanish-language clinical NLP, or LLM extraction pipelines with validation layers, I'd genuinely like to compare notes — especially on terminology assignment with a human in the loop, which I don't think is safely automatable yet.