Source-backed quick answer
Allergy ICD-10 and CPT pairing checks
Allergy coding should connect rhinitis, asthma, urticaria, anaphylaxis, food allergy, or immunologic diagnosis detail to the CPT service performed, the documentation in the record, and the payer rule used for medical necessity.
CMS ICD-10 resources, CMS PFS, and NCCI references support diagnosis-code validation, CPT status checks, and edit review before claim release.
- Rhinitis and asthma ICD-10 specificity
- Testing and immunotherapy CPT pairing
- Medical necessity documentation
- Payer denial prevention
Official sources
Allergy Diagnosis Coding Principles
Allergy and immunology ICD-10 coding spans multiple organ systems because allergic conditions manifest across the respiratory tract (rhinitis, asthma), skin (urticaria, dermatitis), gastrointestinal system (food allergy), and systemic responses (anaphylaxis). Selecting the most specific diagnosis code for each condition is not optional in allergy. Payers use the diagnosis code to determine medical necessity for testing, immunotherapy, and biologic prescriptions. An unspecified rhinitis code (J30.9) supporting a 60-test allergy panel will trigger medical necessity denials that a specific code (J30.1 allergic rhinitis due to pollen) would not.
Allergic Rhinitis Codes (J30.x)
Allergic rhinitis is the most common allergy diagnosis. The J30 family requires specificity: J30.0 (vasomotor rhinitis, not truly allergic but often coded in allergy offices), J30.1 (allergic rhinitis due to pollen, seasonal), J30.2 (other seasonal allergic rhinitis), J30.5 (allergic rhinitis due to food), J30.81 (allergic rhinitis due to animal dander, hair, and feathers), J30.89 (other allergic rhinitis, perennial due to mold, dust mites), J30.9 (allergic rhinitis, unspecified).
Always code to the highest specificity documented. A patient with year-round symptoms triggered by dust mites and cat dander should be coded J30.89 (perennial allergic rhinitis) and J30.81 (due to animal dander), not J30.9 (unspecified). The specific codes justify the scope of testing (environmental panel including dust mites, animal danders) and immunotherapy targeting those allergens. Unspecified codes weaken the medical necessity argument.
Asthma Codes (J45.x)
Asthma coding in allergy requires both severity and control status. The J45 family includes: J45.20 (mild intermittent, uncomplicated), J45.21 (mild intermittent, with acute exacerbation), J45.30 (mild persistent, uncomplicated), J45.40 (moderate persistent, uncomplicated), J45.41 (moderate persistent, with acute exacerbation), J45.50 (severe persistent, uncomplicated), J45.51 (severe persistent, with acute exacerbation).
The severity classification (mild intermittent, mild persistent, moderate persistent, severe persistent) follows NHLBI guidelines and should be documented based on symptom frequency, nighttime symptoms, and lung function. Asthma severity directly affects biologic eligibility: omalizumab and mepolizumab require moderate persistent or severe persistent asthma (J45.40 or higher) with documented control issues. Coding mild asthma (J45.20 or J45.30) on a biologic PA submission guarantees denial.
Urticaria Codes (L50.x)
Urticaria coding distinguishes between acute and chronic forms: L50.0 (allergic urticaria), L50.1 (idiopathic urticaria), L50.2 (urticaria due to cold and heat), L50.3 (dermatographic urticaria), L50.5 (cholinergic urticaria), L50.6 (contact urticaria), L50.8 (other urticaria), L50.9 (urticaria, unspecified). Chronic spontaneous urticaria (CSU) uses L50.1 or L50.8 depending on the specific presentation.
Chronic urticaria lasting more than 6 weeks is the primary indication for omalizumab (Xolair) in non-asthma patients. The diagnosis code must reflect chronic duration and severity to support the biologic PA. Document the urticaria duration (must exceed 6 weeks), frequency of episodes, antihistamine trial failures (typically requiring failure of at least one second-generation antihistamine at standard and increased doses), and impact on quality of life.
Anaphylaxis Coding (T78.2)
Anaphylaxis uses T78.2XXA (anaphylactic shock, unspecified, initial encounter), T78.2XXD (subsequent encounter), or T78.2XXS (sequela). For anaphylaxis with an identified cause, use the specific code: T78.00XA (anaphylactic reaction due to unspecified food), T78.01XA (anaphylactic reaction due to peanuts), T78.02XA (due to shellfish), T78.03XA (due to other fish), T78.04XA (due to fruits and vegetables), T78.05XA (due to tree nuts and seeds), T78.09XA (due to other food).
Anaphylaxis history justifies epinephrine auto-injector prescriptions, comprehensive food allergy testing panels, and component-resolved diagnostics (CRD). Always code the specific food trigger when identified, as this supports the testing scope and ongoing management plan.
Food Allergy Codes (T78.1)
Food allergy uses T78.1XXA (other adverse food reactions, not elsewhere classified) as a general code, but more specific codes should be used when available. Food allergy also pairs with Z91.01x codes for allergy status: Z91.010 (allergy status to peanuts), Z91.011 (allergy status to milk products), Z91.012 (allergy status to eggs), Z91.013 (allergy status to seafood), Z91.018 (allergy status to other foods). Use the T78 code for the active clinical condition and the Z91 code for the established allergy status that requires ongoing monitoring.
Food allergy testing panels are justified by the clinical history and the specific suspected allergens. A patient with a documented anaphylactic reaction to peanuts (T78.01XA) presenting for comprehensive nut allergy evaluation supports testing for peanuts, tree nuts, and related legumes. The diagnosis code establishes the medical necessity for the testing scope.
Common Coding Errors in Allergy
The most frequent allergy coding errors are: (1) Using J30.9 (unspecified rhinitis) instead of specific allergen-related codes when the allergen is identified, (2) Coding asthma severity lower than documented, which undermines biologic PA submissions, (3) Using T78.2 without the 7th character extension (A, D, or S), which makes the code invalid, (4) Failing to pair food allergy T78 codes with Z91.01x status codes for complete documentation, and (5) Using L50.9 (unspecified urticaria) for chronic urticaria patients who need biologic authorization, when L50.1 or L50.8 with documented chronicity is more appropriate.