Skip to content

Commit af45ea2

Browse files
committed
Solid Tumor rules 2026 update (#152)
1 parent c11ff71 commit af45ea2

15 files changed

Lines changed: 288 additions & 340 deletions

‎CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
## Multiple Primary and Histology Coding Rules Version History
22

3+
**Changes in version 1.42**
4+
5+
- Implemented 2026 updates of solid tumor rules. (#152)
6+
37
**Changes in version 1.41**
48

59
- Changed back minimum Java language from Java 11 to Java 8.

‎src/main/java/com/imsweb/mph/MphConstants.java‎

Lines changed: 114 additions & 77 deletions
Large diffs are not rendered by default.

‎src/main/java/com/imsweb/mph/mpgroups/Mp2018BreastGroup.java‎

Lines changed: 26 additions & 60 deletions
Large diffs are not rendered by default.

‎src/main/java/com/imsweb/mph/mpgroups/Mp2018ColonGroup.java‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext conte
7272
rule.getNotes().add("This rule does not apply to a single overlapping malignancy of colon and rectum.");
7373
_rules.add(rule);
7474

75-
// Rule M5 Abstract multiple primaries when separate/non-contiguous tumors are two or more different subtypes/variants in Column 3, Table 1 in the Equivalent Terms and Definitions. Timing is irrelevant.
75+
// Rule M5 Abstract multiple primaries when separate/non-contiguous tumors are two or more different subtypes/variants in Column 2, Table 1 in the Site-group Instructions. Timing is irrelevant.
7676
rule = new MphRule(MphConstants.SOLID_TUMOR_2018_COLON, "M5") {
7777
@Override
7878
public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext context) {
@@ -88,19 +88,19 @@ public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext conte
8888
return result;
8989
}
9090
};
91-
rule.setQuestion("Are separate/non-contiguous tumors two or more different subtypes/variants in Column 3, Table 1 in the Equivalent Terms and Definitions?");
92-
rule.setReason("Separate/non-contiguous tumors that are two or more different subtypes/variants in Column 3, Table 1 in the Equivalent Terms and Definitions are multiple primaries.");
91+
rule.setQuestion("Are separate/non-contiguous tumors two or more different subtypes/variants in Column 2, Table 1 in the Site-group Instructions?");
92+
rule.setReason("Separate/non-contiguous tumors that are two or more different subtypes/variants in Column 2, Table 1 in the Site-group Instructions are multiple primaries.");
9393
rule.getNotes().add("The tumors may be subtypes/variants of the same or different NOS histologies.");
9494
rule.getNotes().add(
9595
" - Same NOS: Medullary carcinoma NOS 8510/3 and tubulopapillary adenocarcinoma 8263/3 are both subtypes of adenocarcinoma NOS 8140/3 but are distinctly different histologies. Abstract multiple primaries.");
9696
rule.getNotes().add(
9797
" - Different NOS: Goblet cell carcinoid 8243/3 is a subtype of mixed adenoneuroendocrine carcinoma 8244/3; somatostatin-producing NET 8156/3 is a subtype of neuroendocrine tumor Grade 1 (G1) 8240/3. They are distinctly different histologies. Abstract multiple primaries.");
9898
_rules.add(rule);
9999

100-
// Rule M6 Abstract multiple primaries when separate/non-contiguous tumors are on different rows in Table 1 in the Equivalent Terms and Definitions. Timing is irrelevant.
100+
// Rule M6 Abstract multiple primaries when separate/non-contiguous tumors are on different rows in Table 1 in the Site-group Instructions. Timing is irrelevant.
101101
rule = new MpRuleDifferentRowInTable(MphConstants.SOLID_TUMOR_2018_COLON, "M6", MphConstants.COLON_2018_TABLE1_ROWS);
102-
rule.setQuestion("Are separate/non-contiguous tumors on different rows in Table 1 in the Equivalent Terms and Definitions?");
103-
rule.setReason("Separate/non-contiguous tumors that are on different rows in Table 1 in the Equivalent Terms and Definitions are multiple primaries.");
102+
rule.setQuestion("Are separate/non-contiguous tumors on different rows in Table 1 in the Site-group Instructions?");
103+
rule.setReason("Separate/non-contiguous tumors that are on different rows in Table 1 in the Site-group Instructions are multiple primaries.");
104104
rule.getNotes().add("Each row in the table is a distinctly different histology.");
105105
_rules.add(rule);
106106

@@ -215,10 +215,10 @@ else if (!i1.getPrimarySite().equals(i2.getPrimarySite()))
215215
"The physician may state this is a recurrence, meaning the patient had a previous colon tumor and now has another colon tumor. Follow the rules; do not attempt to interpret the physician’s statement.");
216216
_rules.add(rule);
217217

218-
// Rule M11 Abstract a single primary when synchronous, separate/non-contiguous tumors are on the same row in Table 1 in the Equivalent Terms and Definitions.
218+
// Rule M11 Abstract a single primary when synchronous, separate/non-contiguous tumors are on the same row in Table 1 in the Site-group Instructions.
219219
rule = new MpRuleSameRowInTable(MphConstants.SOLID_TUMOR_2018_COLON, "M11", MphConstants.COLON_2018_TABLE1_ROWS, true);
220-
rule.setQuestion("Are synchronous, separate/non-contiguous tumors on the same in Table 1 in the Equivalent Terms and Definitions?");
221-
rule.setReason("Synchronous, separate/non-contiguous tumors that are on the same row in Table 1 in the Equivalent Terms and Definitions are a single primary.");
220+
rule.setQuestion("Are synchronous, separate/non-contiguous tumors on the same in Table 1 in the Site-group Instructions?");
221+
rule.setReason("Synchronous, separate/non-contiguous tumors that are on the same row in Table 1 in the Site-group Instructions are a single primary.");
222222
rule.getNotes().add("The same row means the tumors are:");
223223
rule.getNotes().add(" - The same histology (same four-digit ICD-O code) OR");
224224
rule.getNotes().add(" - One is the preferred term (column 1) and the other is a synonym for the preferred term (column 2) OR");
@@ -230,7 +230,7 @@ else if (!i1.getPrimarySite().equals(i2.getPrimarySite()))
230230
// Rule M12 Abstract a single primary (the invasive) when an in situ tumor is diagnosed after an invasive tumor.
231231
rule = new MpRuleInsituAfterInvasive(MphConstants.SOLID_TUMOR_2018_COLON, "M12");
232232
rule.getNotes().add("The rules are hierarchical. Only use this rule when none of the previous rules apply.");
233-
rule.getNotes().add("The tumors may be a NOS and a subtype/variant of that NOS. See Table 1 in the Equivalent Terms and Definitions for listings of NOS and subtype/variants.");
233+
rule.getNotes().add("The tumors may be a NOS and a subtype/variant of that NOS. See Table 1 in the Site-group Instructions for listings of NOS and subtype/variants.");
234234
rule.getNotes().add("The in situ is recorded as a recurrence for those registrars who collect recurrence data.");
235235
_rules.add(rule);
236236

‎src/main/java/com/imsweb/mph/mpgroups/Mp2018HeadAndNeckGroup.java‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ else if (GroupUtility.areOppositeSides(i1.getLaterality(), i2.getLaterality()))
148148
"The physician may state this is a recurrence, meaning the patient had a previous head and neck tumor and now has another head and neck tumor. Follow the rules; do not attempt to interpret the physician’s statement.");
149149
_rules.add(rule);
150150

151-
// Rule M7 Abstract multiple primaries when separate, non-contiguous tumors are two or more different subtypes/variants in Column 3 of the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions. Timing is irrelevant.
151+
// Rule M7 Abstract multiple primaries when separate, non-contiguous tumors are two or more different subtypes/variants in Column 2 of the appropriate site table (Tables 1-9) in the Site-group Instructions. Timing is irrelevant.
152152
rule = new MphRule(MphConstants.SOLID_TUMOR_2018_HEAD_AND_NECK, "M7") {
153153
@Override
154154
public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext context) {
@@ -206,17 +206,17 @@ else if (!map1.equals(map2))
206206
}
207207
};
208208
rule.setQuestion(
209-
"Are separate, non-contiguous tumors different subtypes/variants in Column 3 of the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions?");
209+
"Are separate, non-contiguous tumors different subtypes/variants in Column 2 of the appropriate site table (Tables 1-9) in the Site-group Instructions?");
210210
rule.setReason(
211-
"Separate, non-contiguous tumors are different subtypes/variants in Column 3 of the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions are multiple primaries.");
211+
"Separate, non-contiguous tumors are different subtypes/variants in Column 2 of the appropriate site table (Tables 1-9) in the Site-group Instructions are multiple primaries.");
212212
rule.getNotes().add("The tumors may be subtypes/variants of the same or different NOS histologies.");
213213
rule.getNotes().add(
214214
" - Same NOS: Alveolar rhabdomyosarcoma 8920/3 and embryonal rhabdomyosarcoma 8910/3 are both subtypes of rhabdomyosarcoma 8900/3 but are distinctly different histologies. Abstract multiple primaries.");
215215
rule.getNotes().add(
216216
" - Different NOS: Colloid-type adenocarcinoma 8144 is a subtype of adenocarcinoma NOS 8140; Sarcomatoid carcinoma 8074 is a subtype of squamous cell carcinoma 8070. They are distinctly different histologies. Abstract multiple primaries.");
217217
_rules.add(rule);
218218

219-
// Rule M8 Abstract multiple primaries when separate, non-contiguous tumors are on different rows in the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions. Timing is irrelevant.
219+
// Rule M8 Abstract multiple primaries when separate, non-contiguous tumors are on different rows in the appropriate site table (Tables 1-9) in the Site-group Instructions. Timing is irrelevant.
220220
rule = new MphRule(MphConstants.SOLID_TUMOR_2018_HEAD_AND_NECK, "M8") {
221221
@Override
222222
public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext context) {
@@ -245,15 +245,15 @@ public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext conte
245245
return result;
246246
}
247247
};
248-
rule.setQuestion("Are separate, non-contiguous tumors on different rows in the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions?");
249-
rule.setReason("Separate, non-contiguous tumors on different rows in the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions are multiple primaries.");
248+
rule.setQuestion("Are separate, non-contiguous tumors on different rows in the appropriate site table (Tables 1-9) in the Site-group Instructions?");
249+
rule.setReason("Separate, non-contiguous tumors on different rows in the appropriate site table (Tables 1-9) in the Site-group Instructions are multiple primaries.");
250250
rule.getNotes().add("Each row in the table is a distinctly different histology.");
251251
_rules.add(rule);
252252

253253
// Rule M9 Abstract a single primary (the invasive) when an in situ tumor is diagnosed after an invasive tumor in the same primary site.
254254
rule = new MpRuleInsituAfterInvasive(MphConstants.SOLID_TUMOR_2018_HEAD_AND_NECK, "M9");
255255
rule.getNotes().add(HIERARCHICAL_RULES);
256-
rule.getNotes().add("The tumors may be a NOS and a subtype/variant of that NOS. See Tables 1-9 in the Equivalent Terms and Definitions for listings of NOS and subtype/variants.");
256+
rule.getNotes().add("The tumors may be a NOS and a subtype/variant of that NOS. See Tables 1-9 in the Site-group Instructions for listings of NOS and subtype/variants.");
257257
rule.getNotes().add("The in situ is recorded as a recurrence for those registrars who collect recurrence data.");
258258
_rules.add(rule);
259259

@@ -277,7 +277,7 @@ public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext conte
277277
"This rule is based on long-term epidemiologic studies of recurrence intervals. The specialty medical experts (SMEs) reviewed and approved these rules. Many of the SMEs were also authors, co-authors, or editors of the AJCC Staging Manual.");
278278
_rules.add(rule);
279279

280-
// Rule M12 Abstract a single primary when separate/non-contiguous tumors in the same primary site are on the same row in the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions. Timing is irrelevant.
280+
// Rule M12 Abstract a single primary when separate/non-contiguous tumors in the same primary site are on the same row in the appropriate site table (Tables 1-9) in the Site-group Instructions. Timing is irrelevant.
281281
rule = new MphRule(MphConstants.SOLID_TUMOR_2018_HEAD_AND_NECK, "M12") {
282282
@Override
283283
public TempRuleResult apply(MphInput i1, MphInput i2, RuleExecutionContext context) {
@@ -309,9 +309,9 @@ else if (row1.contains(row2) || row2.contains(row1))
309309
return result;
310310
}
311311
};
312-
rule.setQuestion("Are separate, non-contiguous tumors in the same primary site and on the same row in the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions?");
312+
rule.setQuestion("Are separate, non-contiguous tumors in the same primary site and on the same row in the appropriate site table (Tables 1-9) in the Site-group Instructions?");
313313
rule.setReason(
314-
"Separate, non-contiguous tumors in the same primary site and on the same row in the appropriate site table (Tables 1-9) in the Equivalent Terms and Definitions are a single primary.");
314+
"Separate, non-contiguous tumors in the same primary site and on the same row in the appropriate site table (Tables 1-9) in the Site-group Instructions are a single primary.");
315315
rule.getNotes().add("The same row means the tumors are:");
316316
rule.getNotes().add(" - The same histology (same four-digit ICD-O code) OR");
317317
rule.getNotes().add(" - One is the preferred term (column 1) and the other is a synonym for the preferred term (column 2) OR");

0 commit comments

Comments
 (0)