Ingest radiology report text from a FHIR DiagnosticReport resource or a HL7v2 ORU^R01 message OBX segment containing the report body
Apply a NER model or rule-based tool (e.g., cTAKES with a RadLex dictionary) to identify anatomy entities (body parts), observation entities (findings, e.g., nodule, opacity), and modifiers (size, laterality, certainty)
Map extracted entities to RadLex term identifiers (RID codes) to normalize terminology across heterogeneous report styles and institutions
Persist structured results as FHIR Observation resources (one per finding) linked to the parent DiagnosticReport, with Observation.code populated from the SNOMED or RadLex code and Observation.bodySite from anatomy extraction
Validate extracted entities against a held-out annotated test set and track precision, recall, and F1 per entity class to quantify extraction quality
Known gotchas
Negation and uncertainty detection is critical in radiology NLP — phrases like 'no evidence of' or 'cannot exclude' require negation scope resolution that generic NER models often miss without radiology-specific training data
RadLex covers imaging anatomy and observations but does not include clinical diagnoses; combine it with SNOMED CT or ICD-10 lookups for impression-section entities that describe clinical conditions
Free-text report structure varies widely by radiologist and institution; section-detection (findings vs. impression vs. technique) should precede entity extraction to avoid mapping technique descriptions as clinical findings
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp