Medical coding translates free-text clinical documentation into standardized codes drawn from classification systems that contain tens of thousands of entries and are updated annually. It is central to billing, clinical research, and quality reporting, yet remains largely manual, slow, and error-prone. Existing automated approaches learn to predict a fixed set of codes from labeled data, thereby preventing adaptation to new codes or different coding systems without retraining on different data. They also provide no explanation for their predictions, limiting trust in safety-critical settings. We introduce Symphony for Medical Coding, a system that approaches the task the way expert human coders do: by reasoning over the clinical narrative with direct access to the coding guidelines. This design allows Symphony to operate across any coding system and to provide span-level evidence linking each predicted code to the text that supports it. We evaluate on two public benchmarks and three real-world datasets spanning inpatient, outpatient, emergency, and subspecialty settings across the United States and the United Kingdom. Symphony achieves state-of-the-art results across all settings, establishing itself as a flexible, deployment-ready foundation for automated clinical coding.
Figures & tables
Figure 1: Overview of the reasoning workflow learned in Symphony for Medical Coding.
Figure 2: A sample user interface showing the evidence spans provided by Symphony for Medical Coding.
Dataset
Source
# Diagnosis Codes
# Procedure Codes
ACI
Academia
225
-
MDACE
Academia
904
118
Neurology (NEURO)
Private
667
-
Emergency Departement (ED)
Private
11,148
655
Ambulatory (AMB)
Private
17,561
2,640
Table 1: Summary of evaluation datasets. The number of unique diagnosis and procedure codes reflects the target code space per dataset across all splits. Public datasets come from prior academic benchmarks; proprietary datasets are drawn from production clinical workflows.
Figure 3: F1 performance as a function of code space size (log-scaled) from Yuan et al. [2025b] , Zheng et al. [2025] and experiments in this paper. Each point corresponds to a dataset with a distinct number of unique codes. Symphony demonstrates superior performance across label space complexity.
ACI
MDACE
Method
Model
R
P
F1
R
P
F1
Fine-tune
PLM-ICD
0.41
0.43
0.42
0.47
0.49
0.48
PLM-CA
0.42
0.44
0.43
0.45
0.46
0.45
Claude
-
-
0.58
-
-
-
Agent
CoT
0.50
0.35
0.41
0.31
0.30
0.30
CoT-SC
0.59
0.36
0.44
0.43
0.39
0.41
Table 2: Restricted code system evaluation . Symphony in comparison to prior approaches, including fine-tuned models [ Huang et al., 2022 , Edin et al., 2024 , Yuan et al., 2025b ] (with Claude based on the Anthropic Claude model family developed by AWS AI), agent-based methods, and workflow-based systems such as MedDCR [ Zheng et al., 2025 ] (built by Oracle Health & AI on the OpenAI GPT model family) and related approaches [ Kwan, 2024 , Li et al., 2024 ] . We evaluated Symphony five times. The table shows the mean value and the standard deviation across runs. The results for the other models are taken from their respective papers. The best F1-score is shown in bold.
ACI
MDACE
Method
Model
R
P
F1
R
P
F1
No tools
Claude †
51.0 ±4.1
45.3 ±8.8
47.6 ±5.2
-
-
-
ChatGPT
74.2 ±1.8
42.5 ±1.2
54.0 ±1.4
66.0 ±1.9
43.1 ±1.3
52.1 ±1.4
With tools
Claude †
60.3 ±8.47
58.13 ±8.47
59.0 ±6.1
-
-
-
ChatGPT
72.4 ±0.9
36.4 ±0.9
48.4 ±0.9
56.0 ±1.5
45.1 ±1.3
49.9 ±1.3
Gemini
76.5 ±1.1
32.1 ±0.1
45.2 ±0.1
60.0 ±0.6
46.4 ±0.4
52.3 ±0.5
Table 3: Full code system evaluation on public datasets. F1-scores (multiplied by 100) across models: Anthropic Claude (Opus 4.6), OpenAI GPT (5.4), Google Gemini (3.1 Pro), and Corti Symphony. We evaluated each model five times. The table shows the mean value and the standard deviation across runs. The best score for each metric is shown in bold. † Despite multiple attempts over an extended period, we were unable to obtain a HIPAA-compliant deployment from Anthropic, restricting evaluation of Claude to the non-PHI ACI dataset.
AMB
ED
Method
Model
R
P
F1
R
P
F1
No tools
Claude †
-
-
-
-
-
-
ChatGPT
77.0 ±0.4
47.6 ±0.8
58.8 ±0.6
42.3 ±0.7
42.8 ±0.5
42.5 ±0.5
With tools
Claude †
-
-
-
-
-
-
ChatGPT
70.4 ±0.6
50.8 ±0.4
59.0 ±0.4
46.6 ±0.3
34.7 ±0.4
39.8 ±0.3
Gemini
42.6 ±0.2
67.8 ±0.7
52.3 ±0.5
27.1 ±0.3
35.8 ±0.4
39.8 ±0.3
Table 4: Full code system evaluation on Corti’s proprietary datasets. F1-scores (multiplied by 100) across models: Anthropic Claude (Opus 4.6), OpenAI GPT (5.4), Google Gemini (3.1 Pro), and Corti Symphony. We evaluated each model five times. The table shows the mean value and the standard deviation across runs. The best score for each metric is shown in bold. † Despite multiple attempts over an extended period, we were unable to obtain a HIPAA-compliant deployment from Anthropic, restricting evaluation of Claude to the non-PHI ACI dataset.
NEURO
Model
R
P
F1
ChatGPT
21.3 ±0.3
15.8 ±0.2
18.1 ±0.2
Symphony
49.6±0.4
24.6±0.5
32.9±0.5
Table 5: Full code system evaluation for ICD-10 (UK) . F1-scores (multiplied by 100) on OpenAI GPT (5.4) and Corti Symphony. We evaluated each model five times. The table shows the mean value and the standard deviation across runs. The best score for each metric is shown in bold. The table shows the mean value and the standard deviation across runs. The best score for each metric is shown in bold.
ICD-10-PCS
CPT †
MDACE
AMB
ED
Model
R
P
F1
R
P
F1
R
P
F1
ChatGPT
34.8 ±2.4
26.4 ±3.1
30.0 ±2.9
31.1 ±0.6
66.0 ±1.8
42.2 ±0.6
21.0 ±1.1
20.5 ±0.8
20.8 ±0.9
Symphony
37.5±0.8
37.0±0.6
37.3±0.4
51.8 ±0.4
50.8 ±0.4
51.3±0.4
48.8 ±0.6
34.2 ±0.3
40.2±0.4
Table 6: Full procedure coding system evaluation . F1-scores (multiplied by 100) on OpenAI GPT (5.4) and Corti Symphony. We evaluated each model five times. The table shows the mean value and the standard deviation across runs. The best score for each metric is shown in bold. † Symphony for CPT is in beta . The results may not generalize well to some specialties (updates are coming soon).
Metric
Value
Coverage ( ≥1 predicted span)
98.9%
Hit rate (IoU > 0)
73.7%
Hit rate (IoU > 0.5)
42.5%
Character-level F1
0.459
ROUGE-L F1
0.506
Span IoU (avg)
0.471
Table 7: Evidence span explainability on MDACE . Key metrics evaluating alignment between predicted and human-annotated evidence spans.
Accurate medical coding requires consulting authoritative resources such as the ICD tabular list and coding guidelines. Existing LLM-based automated methods largely rely on LLMs' internal knowledge, which is prone to hallucination and cannot keep pace with guideline updates. We introduce RAG-Coding, an agentic, training-free method that augments LLMs with structured external knowledge: the tabular list is encoded as a knowledge graph capturing hierarchical and instructional code relationships, and the guidelines are distilled into concise, code-specific summaries rather than retrieved as raw text. To enable our study, we also introduce MDACE-2025, expert re-annotations of the MDACE dataset under the 2025 ICD-10-CM/PCS guidelines, adding code sequencing and justification comments. On MDACE, RAG-Coding outperforms the best LLM-based baseline by 3--13% in micro-F1 across five LLM backbones, and achieves comparable micro- and macro-F1 to the supervised state-of-the-art, with higher recall (+11%) at the cost of precision (−6%). On MDACE-2025, RAG-Coding outperforms all baselines, demonstrating effective generalisation to updated guidelines. Ablations confirm stepwise gains, highlighting the importance of integrating structured external knowledge for LLM-based medical coding.
Yidong Gan, David D. Nguyen, Yang Lin +4
Oracle Health and AI · The University of Sydney · CSIRO Data61
Improving the accuracy and reliability of medical coding reduces clinician burnout and supports revenue cycle processes, freeing providers to focus more on patient care. However, automating the assignment of ICD-10-CM and CPT codes from clinical documentation remains a challenge due to heterogeneous records, nuanced coding guidelines, and long-tail distributions. Large language models have been proposed to help or automate specific medical coding tasks. However, foundation models are not explicitly trained for medical coding and zero-shot coding has yielded poor results. We investigate whether a modern open-weight foundation model can be adapted for an expert-level medical coding task using privacy-preserving synthetic training data derived from electronic health records. We fine-tune Llama 3-70B on pairs of clinical notes and gold codes generated from EHR-grounded templates and coding policies, then evaluate exact-code prediction for ICD-10-CM and CPT. A zero-shot baseline with the unadapted model achieved an F1 score of 0.18 for exact code match. After fine-tuning on the synthetic corpus, exact-match F1 exceeded 0.70, representing a large absolute gain across both code systems. Notably, performance remained high on complex categories that often require multi-step clinical reasoning and code composition, including Advanced Illness and Frailty classes, and the model retained its performance on medical comprehension tasks. These results indicate that synthetic, policy-aware data can efficiently teach a general-purpose large language model to support precise medical coding without exposing protected health information. The approach offers a practical path for training coding agents safely and iteratively on specific tasks that represent real-world populations.
In automated clinical coding, where the label space spans tens of thousands of diagnosis and procedure codes, models are currently evaluated against a single gold annotation, treating any deviation as error. But we find when two teams code the same 110 ACI-Bench encounters, they agree on only 73% of codes (Jaccard similarity) for the same note; even after an independent clinical audit removes erroneous codes, agreement rises only to 77%. Is that gap error or something systematic? We model the systematic component as coding style ψ, a coder- or site-specific policy over what to code and how much to document, and recast coding as p(code∣note,ψ), estimating ψ with a 10-dimension rubric. If style were noise, conditioning on it would do nothing. Instead, across five datasets a model conditioned with a data-matching style raises ICD F1 by up to 26 points and an extreme mismatched one lowers it by up to 21. Four prompt based coding methods spanning 39-49 F1 converge to 52-56 once style is supplied (All p<0.05). Much of what single-gold evaluation charges to model error is recoverable, unmodeled style.