All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.imsweb.validation.edits.translated.naaccr.NaaccrTranslatedCompiledRules6.groovy Maven / Gradle / Ivy

package com.imsweb.validation.edits.translated.naaccr

import com.imsweb.validation.functions.MetafileContextFunctions
import com.imsweb.validation.runtime.CompiledRules
import groovy.transform.CompileStatic

@CompileStatic
class NaaccrTranslatedCompiledRules6 implements CompiledRules {

    @Override
    public String getValidatorId() {
        return 'naaccr-translated'
    }

    @Override
    public String getValidatorVersion() {
        return 'NAACCR-011-01'
    }

    @Override
    public Map>> getMethodParameters() {
        return [
            'untrimmedlines' : [Binding.class, Map.class, MetafileContextFunctions.class, List.class],
            'untrimmedlines.untrimmedline' : [Binding.class, Map.class, MetafileContextFunctions.class, List.class, Map.class]
        ]
    }

    @Override
    public boolean containsRuleId(String id) {
        return 'NAACCR-01413' <= id && id <= 'NAACCR-01713'
    }

    // ID: NAACCR-01413; TAG: N0039; NAME: TNM Path Stage Group (COC)
    public boolean naaccr01413(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0-4", "(\\d\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0A,0S,1A,A1,A2,1B,B1,B2,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,88,99,OC", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "1E,1S,2E,2S,3E,3S,4E,4S", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01414; TAG: N0862; NAME: TNM Path Stage Group, TNM Items, ICDO3 (COC)
    public boolean naaccr01414(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "06") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3) || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9596,9650-9667,9670-9729"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "589", "(C\\d\\d\\d)", 2, 3)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                    return functions.GEN_ERROR_MSG(binding, 'If TNM Path Stage Group not = 88, then TNM Path T and M must not = 88')
            }
        }
        else {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88") || functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                    return false
            }
        }
        return true

    }

    // ID: NAACCR-01415; TAG: N0929; NAME: TNM Path Stage Group, TNM Items, ICDO3 (NAACCR)
    public boolean naaccr01415(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "06") || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3) || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9596,9650-9667,9670-9729"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "589", "(C\\d\\d\\d)", 2, 3)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                    return functions.GEN_ERROR_MSG(binding, 'If TNM Path Stage Group not = 88, then TNM Path T and M must not = 88')
            }
        }
        else {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88") || functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                    return false
            }
        }
        return true

    }

    // ID: NAACCR-01416; TAG: N0927; NAME: TNM Path Staged By (COC)
    public boolean naaccr01416(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStagedBy))
            return true
        return functions.GEN_INLIST(untrimmedline.tnmPathStagedBy, "00, 10, 11, 12, 13, 14, 15, 20, 30, 40, 50, 60, 88, 99")

    }

    // ID: NAACCR-01417; TAG: N0146; NAME: TNM Path Staged By (NAACCR)
    public boolean naaccr01417(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStagedBy))
            return true
        return functions.GEN_INLIST(untrimmedline.tnmPathStagedBy, "00, 10, 11, 12, 13, 14, 15, 20, 30, 40, 50, 60, 88, 99")

    }

    // ID: NAACCR-01418; TAG: N0928; NAME: TNM Path Staged By, Date of Diagnosis (COC)
    public boolean naaccr01418(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 2008) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathStagedBy))
                return false
        }
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathStagedBy))
                return false
        }
        return true

    }

    // ID: NAACCR-01420; TAG: N0173; NAME: Telephone (SEER)
    public boolean naaccr01420(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_MATCH(untrimmedline.telephone, "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        return false

    }

    // ID: NAACCR-01421; TAG: N0402; NAME: Text--Dx Proc--Path, Diagnostic Confirm (NAACCR)
    public boolean naaccr01421(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.diagnosticConfirmation, "1,2,3,4")) {
            if (functions.GEN_EMPTY(functions.GEN_SUBSTR(untrimmedline.textDxProcPath, 1, 79)))
                return false
        }
        return true

    }

    // ID: NAACCR-01422; TAG: N0403; NAME: Text--Histology Title (NAACCR)
    public boolean naaccr01422(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.textHistologyTitle))
            return false
        return true

    }

    // ID: NAACCR-01423; TAG: N0404; NAME: Text--Primary Site Title (NAACCR)
    public boolean naaccr01423(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.textPrimarySiteTitle))
            return false
        return true

    }

    // ID: NAACCR-01424; TAG: N0015; NAME: Tumor Marker 1 (SEER TUMMARK1)
    public boolean naaccr01424(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker1))
            return true
        return functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-6,8,9")

    }

    // ID: NAACCR-01425; TAG: N0028; NAME: Tumor Marker 1, Date of Diagnosis (SEER IF65)
    public boolean naaccr01425(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year >= 1996 && dx_year <= 2003) {
            if (functions.GEN_INLIST(untrimmedline.registryId, "0000001561", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
                return true
        }
        if (dx_year < 2000 && functions.GEN_INLIST(untrimmedline.registryId, "0000001544", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year < 2004 && functions.GEN_INLIST(untrimmedline.registryId, "0000001562,0000001563", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)")) {
            return true
        }
        if (dx_year < 1990) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "9") || functions.GEN_EMPTY(untrimmedline.tumorMarker1))
                return true
            else
                return false
        }
        if (dx_year < 1998) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) == true) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-3,8-9"))
                    return false
            }
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker1, "9") && !functions.GEN_EMPTY(untrimmedline.tumorMarker1))
                    return false
            }
        }
        if (dx_year < 2004) {
            if ((functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) == true && !functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-3,8-9")) || (functions.GEN_INLIST(untrimmedline.primarySite, "619", "(C\\d\\d\\d)", 2, 3) == true && !functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-3,8-9")) || (functions.GEN_INLIST(untrimmedline.primarySite, "620-629", "(C\\d\\d\\d)", 2, 3) == true && !functions.GEN_INLIST(untrimmedline.tumorMarker1, "0,2,4-6,8-9")))
                return false
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509, 619, 620-629", "(C\\d\\d\\d)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker1, "9") && !functions.GEN_EMPTY(untrimmedline.tumorMarker1))
                    return false
            }
        }
        if (dx_year > 2003) {
            if (!functions.GEN_EMPTY(untrimmedline.tumorMarker1))
                return false
        }
        return true

    }

    // ID: NAACCR-01426; TAG: N0191; NAME: Tumor Marker 1, Primary Site, Morph ICDO2 (COC)
    public boolean naaccr01426(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 1998)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker1) || functions.GEN_EMPTY(untrimmedline.primarySite) || functions.GEN_EMPTY(untrimmedline.morphTypebehavIcdO2))
            return true
        if ((functions.GEN_INLIST(untrimmedline.primarySite, "500-509,180-189,199,209,220,221,569,619", "(C\\d\\d\\d)", 2, 3)) || functions.GEN_INLIST(untrimmedline.morphTypebehavIcdO2, "95003")) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-3, 8,9"))
                return true
            else
                return false
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "620,621,629", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-6, 8, 9"))
                    return true
                else
                    return false
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "9"))
                    return true
                else
                    return false
            }
        }
        
        return true

    }

    // ID: NAACCR-01427; TAG: N0477; NAME: Tumor Marker 1, Primary Site, Morph ICDO3 (COC)
    public boolean naaccr01427(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 1998)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker1) || functions.GEN_EMPTY(untrimmedline.primarySite) || functions.GEN_EMPTY(untrimmedline.morphTypebehavIcdO3))
            return true
        if ((functions.GEN_INLIST(untrimmedline.primarySite, "500-509,180-189,199,209,220,221,569,619", "(C\\d\\d\\d)", 2, 3)) || functions.GEN_INLIST(untrimmedline.morphTypebehavIcdO3, "95003")) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-3, 8,9"))
                return true
            else
                return false
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "620,621,629", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "0-6, 8, 9"))
                    return true
                else
                    return false
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker1, "9"))
                    return true
                else
                    return false
            }
        }
        
        return true

    }

    // ID: NAACCR-01428; TAG: N0029; NAME: Tumor Marker 1, Type of Report Srce (SEER IF67)
    public boolean naaccr01428(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 2004) {
            if (functions.GEN_INLIST(untrimmedline.registryId, "0000001561,0000001562,0000001563", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
                return true
        }
        if (dx_year < 2000 && functions.GEN_INLIST(untrimmedline.registryId, "0000001544", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year > 2003) {
            return true
        }
        if ((dx_year >= 1990 && functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) || (dx_year >= 1998 && functions.GEN_INLIST(untrimmedline.primarySite, "619-629", "(C\\d\\d\\d)", 2, 3))) {
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6") && !functions.GEN_INLIST(untrimmedline.tumorMarker1, "0"))
                return false
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7") && !functions.GEN_INLIST(untrimmedline.tumorMarker1, "9"))
                return false
        }
        return true

    }

    // ID: NAACCR-01429; TAG: N0016; NAME: Tumor Marker 2 (SEER TUMMARK2)
    public boolean naaccr01429(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker2))
            return true
        return functions.GEN_INLIST(untrimmedline.tumorMarker2, "0-6,8,9")

    }

    // ID: NAACCR-01430; TAG: N0030; NAME: Tumor Marker 2, Date of Diagnosis (SEER IF66)
    public boolean naaccr01430(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 2000 && functions.GEN_INLIST(untrimmedline.registryId, "0000001544"))
            return true
        if (dx_year < 2004) {
            if (functions.GEN_INLIST(untrimmedline.registryId, "0000001561,0000001562,0000001563", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)")) {
                return true
            }
        }
        if (dx_year < 1990) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker2, "9") || functions.GEN_EMPTY(untrimmedline.tumorMarker2))
                return true
            else
                return false
        }
        if (dx_year < 1998) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) == true) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker2, "0-3,8-9"))
                    return false
            }
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker2, "9") && !functions.GEN_EMPTY(untrimmedline.tumorMarker2))
                    return false
            }
        }
        if (dx_year < 2004) {
            if ((functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) == true && !functions.GEN_INLIST(untrimmedline.tumorMarker2, "0-3,8-9")) || (functions.GEN_INLIST(untrimmedline.primarySite, "619", "(C\\d\\d\\d)", 2, 3) == true && !functions.GEN_INLIST(untrimmedline.tumorMarker2, "0-3,8-9")) || (functions.GEN_INLIST(untrimmedline.primarySite, "620-629", "(C\\d\\d\\d)", 2, 3) == true && !functions.GEN_INLIST(untrimmedline.tumorMarker2, "0,2,4-6,8-9")))
                return false
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509, 619, 620-629", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker2, "9") && !functions.GEN_EMPTY(untrimmedline.tumorMarker2))
                    return false
            }
        }
        if (dx_year > 2003) {
            if (!functions.GEN_EMPTY(untrimmedline.tumorMarker2))
                return false
        }
        return true

    }

    // ID: NAACCR-01431; TAG: N0192; NAME: Tumor Marker 2, Primary Site (COC)
    public boolean naaccr01431(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 1998)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker2) || functions.GEN_EMPTY(untrimmedline.primarySite))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "500-509,619", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker2, "0-3,8,9"))
                return true
            else
                return false
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "620,621,629", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker2, "0-6,8,9"))
                    return true
                else
                    return false
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.tumorMarker2, "9"))
                    return true
                else
                    return false
            }
        }
        
        return true

    }

    // ID: NAACCR-01432; TAG: N0031; NAME: Tumor Marker 2, Type of Report Srce (SEER IF68)
    public boolean naaccr01432(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (functions.GEN_INLIST(untrimmedline.registryId, "0000001561,0000001562,0000001563", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year < 2000 && functions.GEN_INLIST(untrimmedline.registryId, "0000001544", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year > 2003) {
            return true
        }
        if ((dx_year >= 1990 && functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) || (dx_year >= 1998 && functions.GEN_INLIST(untrimmedline.primarySite, "619-629", "(C\\d\\d\\d)", 2, 3))) {
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6") && !functions.GEN_INLIST(untrimmedline.tumorMarker2, "0"))
                return false
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7") && !functions.GEN_INLIST(untrimmedline.tumorMarker2, "9"))
                return false
        }
        return true

    }

    // ID: NAACCR-01433; TAG: N0288; NAME: Tumor Marker 3 (SEER TUMMARK3)
    public boolean naaccr01433(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker3))
            return true
        return functions.GEN_INLIST(untrimmedline.tumorMarker3, "0-6,8,9")

    }

    // ID: NAACCR-01434; TAG: N0289; NAME: Tumor Marker 3, Date of Diagnosis (SEER IF73)
    public boolean naaccr01434(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 2000 && functions.GEN_INLIST(untrimmedline.registryId, "0000001544"))
            return true
        if (dx_year < 2004 && functions.GEN_INLIST(untrimmedline.registryId, "0000001561, 0000001562, 0000001563")) {
            return true
        }
        if (dx_year < 1998) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker3, "9") || functions.GEN_EMPTY(untrimmedline.tumorMarker3))
                return true
            else
                return false
        }
        if (dx_year < 2004) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "620-629", "(C\\d\\d\\d)", 2, 3) == true) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker3, "0,2,4-6,8-9"))
                    return false
            }
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "620-629", "(C\\d\\d\\d)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.tumorMarker3, "9") && !functions.GEN_EMPTY(untrimmedline.tumorMarker3))
                    return false
            }
        }
        if (dx_year > 2003) {
            if (!functions.GEN_EMPTY(untrimmedline.tumorMarker3))
                return false
        }
        return true

    }

    // ID: NAACCR-01435; TAG: N0264; NAME: Tumor Marker 3, Primary Site (COC)
    public boolean naaccr01435(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 1998)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorMarker3) || functions.GEN_EMPTY(untrimmedline.primarySite))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "620,621,629", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker3, "0-6,8,9"))
                return true
            else
                return false
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.tumorMarker3, "9"))
                return true
            else
                return false
        }
        
        return true

    }

    // ID: NAACCR-01436; TAG: N0290; NAME: Tumor Marker 3, Type of Report Srce (SEER IF74)
    public boolean naaccr01436(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (functions.GEN_INLIST(untrimmedline.registryId, "0000001561,0000001562,0000001563", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year < 2000 && functions.GEN_INLIST(untrimmedline.registryId, "0000001544", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year > 2003) {
            return true
        }
        if (dx_year >= 1998 && functions.GEN_INLIST(untrimmedline.primarySite, "620-629", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6") && !functions.GEN_INLIST(untrimmedline.tumorMarker3, "0"))
                return false
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7") && !functions.GEN_INLIST(untrimmedline.tumorMarker3, "9"))
                return false
        }
        return true

    }

    // ID: NAACCR-01437; TAG: N0087; NAME: Tumor Record Number (NAACCR)
    public boolean naaccr01437(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        return functions.GEN_INLIST(untrimmedline.tumorRecordNumber, "01-99", "(\\d\\d)")

    }

    // ID: NAACCR-01438; TAG: N0457; NAME: Type of Rep Srce(DC),Seq Num--Cent,ICDO3 (SEER IF04)
    public boolean naaccr01438(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.overRideReportSource, "1")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7") && (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-9589", "(\\d\\d\\d\\d)"))) {
            if (!functions.GEN_INLIST(untrimmedline.sequenceNumberCentral, "00,60"))
                return false
        }
        return true

    }

    // ID: NAACCR-01439; TAG: N0017; NAME: Type of Report Srce (AO), Date of Dx (SEER IF02)
    public boolean naaccr01439(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year, dx_month, dolc_year, dolc_month
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        dx_month = functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        dolc_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfLastContact)
        
        if (dolc_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dolc_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Last Contact: %DC')
        dolc_month = functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfLastContact)
        
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6")) {
            if (dx_year == dolc_year) {
                if (dx_month == dolc_month)
                    return true
                else
                    return false
            }
            else
                return false
        }
        return true

    }

    // ID: NAACCR-01440; TAG: N0089; NAME: Type of Report Srce (DC/AO), SEER Fup (SEER IF10)
    public boolean naaccr01440(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (!functions.GEN_INLIST(untrimmedline.seerTypeOfFollowUp, "1"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.seerTypeOfFollowUp, "1")) {
            if (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
                return false
        }
        return true

    }

    // ID: NAACCR-01441; TAG: N0306; NAME: Type of Report Srce(DC), EOD Coding Sys (SEER IF11)
    public boolean naaccr01441(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (functions.GEN_INLIST(untrimmedline.registryId, "0000001544", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7") && (dx_year < 1983)) {
            if (!functions.GEN_INLIST(untrimmedline.codingSystemForEod, "0"))
                return false
        }
        return true

    }

    // ID: NAACCR-01442; TAG: N0094; NAME: Type of Report Srce(DC/AO), COD (SEER IF09)
    public boolean naaccr01442(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.causeOfDeath, "0000")) {
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.causeOfDeath, "7777")) {
            if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
                return false
        }
        return true

    }

    // ID: NAACCR-01443; TAG: N0018; NAME: Type of Report Srce(DC/AO), Diag Conf (SEER IF05)
    public boolean naaccr01443(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6")) {
            if (!functions.GEN_INLIST(untrimmedline.diagnosticConfirmation, "1,6"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            if (!functions.GEN_INLIST(untrimmedline.diagnosticConfirmation, "9"))
                return false
        }
        return true

    }

    // ID: NAACCR-01444; TAG: N0405; NAME: Type of Report Srce(DC/AO), Vit Stat (COC)
    public boolean naaccr01444(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (!functions.GEN_INLIST(untrimmedline.vitalStatus, "0")) {
                return functions.GEN_ERROR_TEXT(binding, 'If Type of Reporting Source = 6 or 7, Vital Status must = 0 ')
            }
        }
        return true

    }

    // ID: NAACCR-01445; TAG: N0307; NAME: Type of Report Srce(DC/AO), Vital Stat (SEER IF08)
    public boolean naaccr01445(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (!functions.GEN_INLIST(untrimmedline.vitalStatus, "0"))
                return false
        }
        return true

    }

    // ID: NAACCR-01446; TAG: N0315; NAME: Type of Report Srce, Diagnostic Proc (SEER IF20)
    public boolean naaccr01446(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 2000) {
            if (functions.GEN_INLIST(untrimmedline.registryId, "0000001544", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
                return true
        }
        if (dx_year > 1987) {
            if (functions.GEN_EMPTY(untrimmedline.diagnosticProc7387))
                return true
            else
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (functions.GEN_EMPTY(untrimmedline.diagnosticProc7387))
                return true
            else
                return false
        }
        if (dx_year < 1983) {
            if (functions.GEN_VAL(untrimmedline.codingSystemForEod) == 2) {
                if (functions.GEN_EMPTY(untrimmedline.diagnosticProc7387))
                    return false
                else {
                    if (functions.GEN_INLIST(untrimmedline.histologyIcdO2, "9590-9698,9702-9714") && functions.GEN_MATCH(untrimmedline.primarySite, "(C77[0-9])|(C024)|(C09[8-9])|(C111)|(C142)|(C379)|(C422)")) {
                        if (functions.GEN_INLIST(untrimmedline.diagnosticProc7387, "00,10,20,30,31,32,40-45"))
                            return true
                        else
                            return false
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.diagnosticProc7387, "00,10,20,30,40,50,60,70,80,90,91"))
                            return true
                        else
                            return false
                    }
                }
            }
            else {
                if (functions.GEN_EMPTY(untrimmedline.diagnosticProc7387))
                    return true
                else
                    return false
            }
        }
        else {
            if (dx_year > 1982 && dx_year < 1988 && functions.GEN_INLIST(untrimmedline.registryId, "0000001529"))
                return true
        }
        if (dx_year > 1982 && dx_year < 1988) {
            if (functions.GEN_INLIST(untrimmedline.histologyIcdO2, "9590-9595,9650-9667,9670-9698,9702-9714,9740-9741")) {
                if (functions.GEN_INLIST(untrimmedline.diagnosticProc7387, "00,10,20,30-32,40-45"))
                    return true
                else
                    return false
            }
            else {
                if ((functions.GEN_MATCH(untrimmedline.primarySite, "(C44[0-9])") && functions.GEN_INLIST(untrimmedline.histologyIcdO2, "8720-8790")) || functions.GEN_MATCH(untrimmedline.primarySite, "(C16[0-9])|(C18[0-9])|(C199)|(C209)|(C34[0-9])|(C50[0-9])|(C53[0-9])|(C54[0-9])|(C619)|(C67[0-9])")) {
                    if (functions.GEN_INLIST(untrimmedline.diagnosticProc7387, "00,10,20,30,40,50,60,70,80,90,91"))
                        return true
                    else
                        return false
                }
            }
            if (functions.GEN_EMPTY(untrimmedline.diagnosticProc7387))
                return true
            else
                return false
        }
        else {
            if (functions.GEN_EMPTY(untrimmedline.diagnosticProc7387))
                return true
            else
                return false
        }
        return true

    }

    // ID: NAACCR-01447; TAG: N0019; NAME: Type of Reporting Source (SEER RPRTSRC)
    public boolean naaccr01447(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        return functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "1-8")

    }

    // ID: NAACCR-01448; TAG: N0792; NAME: Type of Reporting Source, Date of DX (SEER IF152)
    public boolean naaccr01448(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (functions.GEN_EMPTY(untrimmedline.typeOfReportingSource))
            return true
        if (functions.GEN_INLIST(untrimmedline.registryId, "0000001562", "(\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d)"))
            return true
        if (dx_year > 2005)
            return functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "1-8")
        return functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "1,3-7")

    }

    // ID: NAACCR-01449; TAG: N0842; NAME: Unknown Site, Hist ICDO3, Summ Stg 1977 (NAACCR)
    public boolean naaccr01449(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage1977)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9140,9590-9699,9702-9729,9731-9989"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "C809")) {
            if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "9"))
                return true
            else
                return false
        }
        return true

    }

    // ID: NAACCR-01450; TAG: N0407; NAME: Unknown Site, Laterality (SEER IF138)
    public boolean naaccr01450(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.primarySite, "C809")) {
            if (functions.GEN_INLIST(untrimmedline.laterality, "0"))
                return true
            else
                return false
        }
        return true

    }

    // ID: NAACCR-01451; TAG: N0408; NAME: Unknown Site, Summary Stage 1977, ICDO2 (NAACCR)
    public boolean naaccr01451(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year > 2000)
            return true
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage1977)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.histologyIcdO2, "9140,9590-9698,9702-9717,9720-9989"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "C809")) {
            if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "9"))
                return true
            else
                return false
        }
        return true

    }

    // ID: NAACCR-01452; TAG: N0495; NAME: Verify ICDO2 to ICDO3 Conversion (NAACCR)
    public boolean naaccr01452(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] W_HIST2 = new char[5], W_BEH2 = new char[2], W_MORPH2 = new char[6], W_SITE = new char[5]
        char[] W_MORPH2_SITE = new char[12]
        char[] W_HIST2_SITE = new char[11]
        char[] W_HIST3 = new char[5], W_BEH3 = new char[2], W_MORPH3 = new char[6]
        char[] T_HIST3 = new char[5], T_MORPH3 = new char[6]
        char[] ICDO3_HIST = new char[5], ICDO3_BEH = new char[2]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) {
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        }
        if ((dx_year > 2000) || functions.GEN_EMPTY(untrimmedline.morphTypebehavIcdO2) || functions.GEN_EMPTY(untrimmedline.morphTypebehavIcdO3) || functions.GEN_INLIST(untrimmedline.icdO3ConversionFlag, "3,4"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "50", "(C\\d\\d\\d)", 2, 2)) {
            if (functions.GEN_INLIST(untrimmedline.morphTypebehavIcdO2, "85103")) {
                if (functions.GEN_INLIST(untrimmedline.morphTypebehavIcdO3, "85103, 85133"))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "50", "(C\\d\\d\\d)", 2, 2)) {
            if (functions.GEN_INLIST(untrimmedline.morphTypebehavIcdO2, "85102")) {
                if (functions.GEN_INLIST(untrimmedline.morphTypebehavIcdO3, "85102, 85132")) {
                    return true
                }
            }
        }
        functions.GEN_STRCPY(W_MORPH2, untrimmedline.morphTypebehavIcdO2, 5)
        functions.GEN_STRCPY(W_HIST2, untrimmedline.morphTypebehavIcdO2, 4)
        functions.GEN_STRCPY(W_BEH2, functions.GEN_SUBSTR(untrimmedline.morphTypebehavIcdO2, 5, 1))
        functions.GEN_STRCPY(W_MORPH3, untrimmedline.morphTypebehavIcdO3, 5)
        functions.GEN_STRCPY(W_HIST3, untrimmedline.morphTypebehavIcdO3, 4)
        functions.GEN_STRCPY(W_BEH3, functions.GEN_SUBSTR(untrimmedline.morphTypebehavIcdO3, 5, 1))
        functions.GEN_STRCPY(W_SITE, "   ")
        
        if (functions.GEN_INLIST(W_HIST2, "8510")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "73", "(C\\d\\d\\d)", 2, 2))
                functions.GEN_STRCPY(W_SITE, untrimmedline.primarySite, 3)
        }
        else {
            if (functions.GEN_INLIST(W_MORPH2, "89300")) {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "15-21,26,54,64", "(C\\d\\d\\d)", 2, 2))
                    functions.GEN_STRCPY(W_SITE, untrimmedline.primarySite, 3)
            }
            else {
                if (functions.GEN_INLIST(W_HIST2, "8930,8930")) {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "15-21,26,54", "(C\\d\\d\\d)", 2, 2))
                        functions.GEN_STRCPY(W_SITE, untrimmedline.primarySite, 3)
                }
                else {
                    if (functions.GEN_INLIST(W_HIST2, "9731")) {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "40,41", "(C\\d\\d\\d)", 2, 2))
                            functions.GEN_STRCPY(W_SITE, untrimmedline.primarySite, 3)
                    }
                }
            }
        }
        functions.GEN_STRCPY(W_MORPH2_SITE, W_MORPH2)
        functions.GEN_STRCAT(W_MORPH2_SITE, W_SITE)
        
        if (functions.GEN_LOOKUP(W_MORPH2_SITE, context.NAACCR_CONV2TO3, context.NAACCR_CONV2TO3_MORPH2SITE, ['ICDO3_HIST':ICDO3_HIST, 'ICDO3_BEH':ICDO3_BEH])) {
            functions.GEN_STRCPY(T_MORPH3, ICDO3_HIST)
            functions.GEN_STRCAT(T_MORPH3, ICDO3_BEH) /* check that ICDO3 code matches converted value per table */
            if (functions.GEN_VAL(W_MORPH3) != functions.GEN_VAL(T_MORPH3)) {
                functions.GEN_SET_WARNING(binding, 'Morph--Type&Behav ICD-O-3 not found in conversion table')
                return true
            }
            else
                return true
        }
        if (functions.GEN_VAL(W_BEH2) != functions.GEN_VAL(W_BEH3)) {
            functions.GEN_SET_WARNING(binding, 'Conflict between ICD-O-2 Behavior and ICD-O-3 Behavior')
            return true
        }
        functions.GEN_STRCPY(W_HIST2_SITE, W_HIST2)
        functions.GEN_STRCAT(W_HIST2_SITE, W_SITE) /* if ICDO2 hist/site not found set warning */
        if (!functions.GEN_LOOKUP(W_HIST2_SITE, context.NAACCR_CONV2TO3, context.NAACCR_CONV2TO3_HIST2SITE, ['ICDO3_HIST':ICDO3_HIST, 'ICDO3_BEH':ICDO3_BEH])) {
            functions.GEN_SET_WARNING(binding, 'Morph--Type&Behav ICD-O-2 not found in conversion table')
            return true
        }
        else {
            functions.GEN_STRCPY(T_HIST3, ICDO3_HIST)
            if (functions.GEN_VAL(W_HIST3) != functions.GEN_VAL(T_HIST3)) {
                functions.GEN_SET_WARNING(binding, 'Morph--Type&Behav ICD-O-3 not found in conversion table')
                return true
            }
        }
        return true

    }

    // ID: NAACCR-01453; TAG: N0090; NAME: Vital Status (COC)
    public boolean naaccr01453(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        return functions.GEN_INLIST(untrimmedline.vitalStatus, "0,1")

    }

    // ID: NAACCR-01456; TAG: N0250; NAME: Vital Status, Cause of Death (SEER IF36)
    public boolean naaccr01456(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int cod_num
        
        
        if (functions.GEN_INLIST(untrimmedline.vitalStatus, "1")) {
            if (!functions.GEN_INLIST(untrimmedline.causeOfDeath, "0000"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.vitalStatus, "0")) {
            if (functions.GEN_INLIST(untrimmedline.causeOfDeath, "0000"))
                return false
        }
        return true

    }

    // ID: NAACCR-01457; TAG: N1950; NAME: CS Lymph Nodes Eval, Nodes Ex (CS)
    public boolean naaccr01457(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        char[] CS_code = new char[4]
        int t_schema_number, t_max_schemas, t_result
        
        if (functions.GEN_EMPTY(untrimmedline.csLymphNodesEval) || functions.GEN_EMPTY(untrimmedline.regionalNodesExamined))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (functions.GEN_INLIST(t_schema_name, "Appendix,CarcinoidAppendix,Colon,GISTAppendix,GISTColon") || functions.GEN_INLIST(t_schema_name, "GISTRectum,LymphomaOcularAdnexa,MelanomaSkin,MerkelCellSkin") || functions.GEN_INLIST(t_schema_name, "MerkelCellPenis,MerkelCellVulva,MerkelCellScrotum,NetColon") || functions.GEN_INLIST(t_schema_name, "NETRectum,Rectum,Retinoblastoma"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.csLymphNodesEval, "3,5,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.regionalNodesExamined, "00"))
            return false
        return true

    }

    // ID: NAACCR-01458; TAG: N1938; NAME: Census Tract 2000, State, County, 2000-2009 (NPCR)
    public boolean naaccr01458(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] state_cnty_tract = new char[12]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if ((dx_year < 2000) || (dx_year > 2009))
            return true
        if (functions.GEN_EMPTY(untrimmedline.censusTract2000) || functions.GEN_INLIST(untrimmedline.censusTract2000, "000000,999999") || functions.GEN_EMPTY(untrimmedline.addrAtDxState) || functions.GEN_EMPTY(untrimmedline.countyAtDx) || functions.GEN_INLIST(untrimmedline.countyAtDx, "998,999"))
            return true
        functions.GEN_STRCPY(state_cnty_tract, untrimmedline.addrAtDxState)
        functions.GEN_STRCAT(state_cnty_tract, untrimmedline.countyAtDx)
        functions.GEN_STRCAT(state_cnty_tract, untrimmedline.censusTract2000)
        
        if (!functions.GEN_LOOKUP(state_cnty_tract, context.NAACCR_TRAC2000, context.NAACCR_TRAC2000_STCNTYTRAC, [:]))
            return false
        return true

    }

    // ID: NAACCR-01459; TAG: N1937; NAME: Census Tract 2010, State, County, 2010-2019 (NPCR)
    public boolean naaccr01459(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] state_cnty_tract = new char[12]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if ((dx_year < 2010) || (dx_year > 2019))
            return true
        if (functions.GEN_EMPTY(untrimmedline.censusTract2010) || functions.GEN_INLIST(untrimmedline.censusTract2010, "000000,999999") || functions.GEN_EMPTY(untrimmedline.addrAtDxState) || functions.GEN_EMPTY(untrimmedline.countyAtDx) || functions.GEN_INLIST(untrimmedline.countyAtDx, "998,999"))
            return true
        functions.GEN_STRCPY(state_cnty_tract, untrimmedline.addrAtDxState)
        functions.GEN_STRCAT(state_cnty_tract, untrimmedline.countyAtDx)
        functions.GEN_STRCAT(state_cnty_tract, untrimmedline.censusTract2010)
        
        if (!functions.GEN_LOOKUP(state_cnty_tract, context.NAACCR_TRAC2010, context.NAACCR_TRAC2010_STCNTYTRAC, [:]))
            return false
        return true

    }

    // ID: NAACCR-01460; TAG: N1959; NAME: Grade (CCCR)
    public boolean naaccr01460(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.grade))
            return true
        if (functions.GEN_INLIST(untrimmedline.grade, "1-9"))
            return true
        return false

    }

    // ID: NAACCR-01461; TAG: N1957; NAME: Lymphovascular Invasion, Histology, Behav (COC)
    public boolean naaccr01461(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.lymphVascularInvasion) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9992", "(\\d\\d\\d\\d)")) {
            if (!functions.GEN_INLIST(untrimmedline.lymphVascularInvasion, "8"))
                return false
            else
                return true
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,2")) {
                if (functions.GEN_INLIST(untrimmedline.lymphVascularInvasion, "1"))
                    return functions.GEN_ERROR_MSG(binding, 'If Behavior Code ICD-O-3 = ${untrimmedline.behaviorCodeIcdO3}, Lymphovascular Invasion must not = 1')
                else
                    return true
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.lymphVascularInvasion, "8"))
                    return functions.GEN_ERROR_MSG(binding, 'If Histologic Type ICD-O-3 not = 9590-9992, Lymphovascular Invasion must not = 8')
            }
        }
        return true

    }

    // ID: NAACCR-01462; TAG: N1958; NAME: Lymphovascular Invasion, Histology, Behav (CS)
    public boolean naaccr01462(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.lymphVascularInvasion) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9992", "(\\d\\d\\d\\d)")) {
            if (!functions.GEN_INLIST(untrimmedline.lymphVascularInvasion, "8"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,2")) {
            if (functions.GEN_INLIST(untrimmedline.lymphVascularInvasion, "1"))
                return functions.GEN_ERROR_MSG(binding, 'If Behavior Code ICD-O-3 = ${untrimmedline.behaviorCodeIcdO3}, Lymphovascular Invasion must not = 1')
        }
        return true

    }

    // ID: NAACCR-01463; TAG: N1976; NAME: EDP MDE Link (NPCR)
    public boolean naaccr01463(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.edpMdeLink))
            return true
        return functions.GEN_INLIST(untrimmedline.edpMdeLink, "0,1")

    }

    // ID: NAACCR-01464; TAG: N1975; NAME: EDP MDE Link Date (NPCR)
    public boolean naaccr01464(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.edpMdeLinkDate))
            return true
        if (functions.GEN_VALID_DATE_IOP(binding, untrimmedline.edpMdeLinkDate))
            return true
        else {
            functions.GEN_ERROR_TEXT(binding, 'EDP MDE Link Date: %DC')
            return false
        }
        
        return true

    }

    // ID: NAACCR-01465; TAG: N1977; NAME: EDP MDE Link, Date, Primary Site (NPCR)
    public boolean naaccr01465(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.primarySite, "500-509,530-539,180-209,260", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.edpMdeLink, "1")) {
                if (functions.GEN_EMPTY(untrimmedline.edpMdeLinkDate))
                    return functions.GEN_ERROR_MSG(binding, 'If MDELink = 1, then MDEDate must not be blank')
            }
            if (functions.GEN_INLIST(untrimmedline.edpMdeLink, "0") || functions.GEN_EMPTY(untrimmedline.edpMdeLink)) {
                if (!functions.GEN_EMPTY(untrimmedline.edpMdeLinkDate))
                    return functions.GEN_ERROR_MSG(binding, 'If MDELink = 0 or blank, then MDEDate must be blank')
            }
        }
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509,530-539,180-209,260", "(C\\d\\d\\d)", 2, 3)) {
            if (!functions.GEN_EMPTY(untrimmedline.edpMdeLink))
                return false
            if (!functions.GEN_EMPTY(untrimmedline.edpMdeLinkDate))
                return false
        }
        return true

    }

    // ID: NAACCR-01466; TAG: N1978; NAME: EDP MDE Link, EDP MDE Link Date (NPCR)
    public boolean naaccr01466(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_INLIST(untrimmedline.edpMdeLink, "1")) {
            if (functions.GEN_EMPTY(untrimmedline.edpMdeLinkDate))
                return functions.GEN_ERROR_MSG(binding, 'If MDELink = 1, then MDEDate must not be blank')
        }
        if (functions.GEN_INLIST(untrimmedline.edpMdeLink, "0") || functions.GEN_EMPTY(untrimmedline.edpMdeLink)) {
            if (!functions.GEN_EMPTY(untrimmedline.edpMdeLinkDate))
                return functions.GEN_ERROR_MSG(binding, 'If MDELink = 0 or blank, then MDEDate must be blank')
        }
        
        return true

    }

    // ID: NAACCR-01467; TAG: N2298; NAME: Primary Site, AJCC M - Ed 7, ICDO3 (SEER)
    public boolean naaccr01467(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPMCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpMCode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinM, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinM)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathM, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathM)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "490-499", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8934,8940-9044,9060-9136,9141-9582"))
                            functions.GEN_STRCPY(SiteGrp, "028")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinM)) {
            functions.GEN_STRCPY(t_GrpMCode, SiteGrp)
            if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinM, 1, 1), "c,p"))
                functions.GEN_STRCAT(t_GrpMCode, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
            else
                functions.GEN_STRCAT(t_GrpMCode, untrimmedline.tnmClinM)
            if (!functions.GEN_LOOKUP(t_GrpMCode, context.NAACCR_AJC7MC, context.NAACCR_AJC7MC_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(t_GrpMCode, SiteGrp)
        
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathM, 1, 1), "c,p"))
            functions.GEN_STRCAT(t_GrpMCode, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
        else
            functions.GEN_STRCAT(t_GrpMCode, untrimmedline.tnmPathM)
        if (!functions.GEN_LOOKUP(t_GrpMCode, context.NAACCR_AJC7MP, context.NAACCR_AJC7MP_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01468; TAG: N2420; NAME: Primary Site, AJCC N - Ed 7, ICDO3 (SEER)
    public boolean naaccr01468(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpNcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinN, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinN)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathN, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathN)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN) && functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
            functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
            if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinN, 1, 1), "c,p"))
                functions.GEN_STRCAT(t_GrpNcode, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
            else
                functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmClinN)
            if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_AJC7NCS, context.NAACCR_AJC7NCS_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
        
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathN, 1, 1), "c,p"))
            functions.GEN_STRCAT(t_GrpNcode, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
        else
            functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmPathN)
        if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_AJC7NPS, context.NAACCR_AJC7NPS_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01469; TAG: N2300; NAME: Primary Site, AJCC Stage Group - Ed 7, ICDO3 (SEER)
    public boolean naaccr01469(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
            if (functions.GEN_VAL(untrimmedline.ageAtDiagnosis) > 24)
                return functions.GEN_ERROR_MSG(binding, 'Over-ride applies only to pediatric cases (ages less than 25)')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57C")
            else {
                if (functions.GEN_INLIST(SiteGrp, "04C")) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                        functions.GEN_STRCPY(SiteGrp, "04D")
                    else {
                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                functions.GEN_STRCPY(SiteGrp, "08A")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                    functions.GEN_STRCPY(SiteGrp, "08B")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "08C")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "08D")) {
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                functions.GEN_STRCPY(SiteGrp, "08D")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "011")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                        functions.GEN_STRCPY(SiteGrp, "16A")
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "021")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                functions.GEN_STRCPY(SiteGrp, "020")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                    functions.GEN_STRCPY(SiteGrp, "022")
                                            }
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                functions.GEN_STRCPY(SiteGrp, "51B")
                                                            else
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "420,421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9837"))
                            functions.GEN_STRCPY(SiteGrp, "57A")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "57A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818,9837"))
                functions.GEN_STRCPY(SiteGrp, "57C")
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) {
            functions.GEN_STRCPY(GrpStg, SiteGrp)
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmClinStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_AJC7STGC, context.NAACCR_AJC7STGC_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        functions.GEN_STRCPY(GrpStg, SiteGrp)
        
        functions.GEN_STRCAT(GrpStg, untrimmedline.tnmPathStageGroup)
        
        if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_AJC7STGP, context.NAACCR_AJC7STGP_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01470; TAG: N2301; NAME: Primary Site, AJCC T - Ed 7, ICDO3 (SEER)
    public boolean naaccr01470(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpTcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinT, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinT)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathT, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathT)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "046")) {
                                            if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                functions.GEN_STRCPY(SiteGrp, "46A")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "46B")
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                functions.GEN_STRCPY(SiteGrp, "51B")
                                                            else
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
            functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
        
            if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinT, 1, 1), "c,p"))
                functions.GEN_STRCAT(t_GrpTcode, functions.GEN_SUBSTR(untrimmedline.tnmClinT, 2, 3))
            else
                functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmClinT)
            if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_AJC7TC, context.NAACCR_AJC7TC_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
        
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathT, 1, 1), "c,p"))
            functions.GEN_STRCAT(t_GrpTcode, functions.GEN_SUBSTR(untrimmedline.tnmPathT, 2, 3))
        else
            functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmPathT)
        if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_AJC7TP, context.NAACCR_AJC7TP_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01471; TAG: N2021; NAME: Primary Site, Heme Morph, DateDX, NoOverride (SEER)
    public boolean naaccr01471(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3) || functions.GEN_EMPTY(untrimmedline.behaviorCodeIcdO3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9993"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) {
            return true
        }
        if (dx_year < 2010) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9823") && functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "420,421,424", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed prior to 2010, 9823 is valid only for C420, C421, C424')
            }
        }
        if (dx_year >= 2010) {
        
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9732,9741,9742,9800,9801,9806-9809,9819-9820,9826,9831-9834,9840") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9860,9861,9863,9865-9867,9869-9879,9891,9895-9898,9910-9912,9920,9931,9940") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9945,9946,9948,9950,9961-9968,9975,9980,9982,9983,9985,9986,9989,9991-9993")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "421", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must = C421')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590,9591,9596,9597,9650-9653,9655,9659,9663,9671,9673,9678,9680,9687,9688,9690") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9691,9695,9698,9700-9702,9705,9708,9709,9712,9714,9717-9719,9724-9727") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9735,9737,9738,9740,9751,9755-9759,9762,9811-9818,9823,9827,9837,9971")) {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420,423,424", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, if Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3}, Primary Site must not = C420, C423, C424')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9679")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "379,381-383", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must = C379, C381-C383')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9689")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "422", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must = C422')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9699")) {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420,422,423,424", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must not = C420, C422, C423, C424')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9716")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "422", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must = C422')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9731")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "400-419", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must = C400-C419')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9734")) {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "400-419,420,423,424", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010 or later, if Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3}, Primary Site must not=C400-C419, C420, C423, C424')
            }
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9930")) {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420,421,423,424", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010 or later, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must not = C420, C421, C423, C424')
            }
        }
        if (dx_year > 2009 && dx_year < 2018) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9761")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "420", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010-2017, if Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site must = C420')
            }
            if (functions.GEN_INLIST(untrimmedline.primarySite, "420", "(C\\d\\d\\d)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9761"))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010-2017, if Primary Site=${untrimmedline.primarySite}, Histologic Type ICD-O-3 must = 9761')
            }
        }
        if (dx_year > 2017) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9761")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "421", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2018 and later, 9761 coded to C421, no histology coded to C420')
            }
            if (functions.GEN_INLIST(untrimmedline.primarySite, "420", "(C\\d\\d\\d)", 2, 3))
                return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2018 and later, 9761 coded to C421, no histology coded to C420')
        }
        return true

    }

    // ID: NAACCR-01472; TAG: N2022; NAME: Primary Site, Heme Morph, DateDX, Override (SEER)
    public boolean naaccr01472(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3) || functions.GEN_EMPTY(untrimmedline.behaviorCodeIcdO3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9993"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteType, "1"))
            return true
        if (dx_year < 2010)
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9650,9651,9652,9653,9655,9659,9663,9688")) {
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "770-779", "(C\\d\\d\\d)", 2, 3))
                return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3},Primary Site not=C770-C779; review required')
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9597,9700,9701,9709,9718,9725")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010 or later, Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3},Primary Site not skin lymphoma; review required')
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9708,9726")) {
                    if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,490-499,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3))
                        return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010+, Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3},Primary Site not skin or soft tissue lymphoma; review required')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9719")) {
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "050-059,110-119,300-301,310-319", "(C\\d\\d\\d)", 2, 3))
                return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site = ${untrimmedline.primarySite}: review required')
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9751")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "340-349,400-419,421,440-449,490-499,770-779", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site = ${untrimmedline.primarySite}: review required')
            }
        }
        
        return true

    }

    // ID: NAACCR-01473; TAG: N1996; NAME: RX Date Mst Defn Srg, Date Flag, DX Date (NPCR)
    public boolean naaccr01473(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2014) {
            if (functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurg) && functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurgFlag))
                return false
        }
        
        return true

    }

    // ID: NAACCR-01474; TAG: N2025; NAME: RX Date Radiation, Date Flag (NAACCR)
    public boolean naaccr01474(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.rxDateRadiation) && functions.GEN_EMPTY(untrimmedline.rxDateRadiationFlag))
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxDateRadiation)) {
            if (!functions.GEN_INLIST(untrimmedline.rxDateRadiationFlag, "10-12,15"))
                return functions.GEN_ERROR_MSG(binding, 'If RX Date Radiation is blank, RX Date Radiation Flag must be 10, 11, 12, or 15')
        }
        else {
            if (!functions.GEN_EMPTY(untrimmedline.rxDateRadiationFlag))
                return functions.GEN_ERROR_MSG(binding, 'If RX Date Radiation is present, corresponding date flag must be blank')
        }
        return true

    }

    // ID: NAACCR-01475; TAG: N2026; NAME: RX Date Surgery, Date Flag (NAACCR)
    public boolean naaccr01475(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.rxDateSurgery) && functions.GEN_EMPTY(untrimmedline.rxDateSurgeryFlag))
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxDateSurgery)) {
            if (!functions.GEN_INLIST(untrimmedline.rxDateSurgeryFlag, "10,11,12"))
                return functions.GEN_ERROR_MSG(binding, 'If RX Date Surgery is blank, corresponding RX Date Surgery Flag must = 10, 11, or 12')
        }
        else {
            if (!functions.GEN_EMPTY(untrimmedline.rxDateSurgeryFlag))
                return functions.GEN_ERROR_MSG(binding, 'Either date or corresponding date flag must be blank if other is present')
        }
        return true

    }

    // ID: NAACCR-01476; TAG: N1994; NAME: Surv--Cases Dx After Study Cutoff (SEER)
    public boolean naaccr01476(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dtcmp
        int dx_year, dx_month, dx_day, surv_year, surv_month, surv_day
        
        if (functions.GEN_EMPTY(untrimmedline.survDateDxRecode) || functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive))
            return true
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDateDxRecode) || !functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDatePresumedAlive))
            return true
        dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.survDateDxRecode, untrimmedline.survDatePresumedAlive, ((Integer)context.NAACCR_GEN_DT_EXACT))
        
        if (dtcmp == ((Integer)context.NAACCR_GEN_DT_UNKNOWN))
            return true
        if (dtcmp > 0) {
            if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "9999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'If Surv-Date DX Recode > Surv-Date Presumed Alive, Surv-Mos Active Followup must = 9999')
            if (!functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "9"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'If Surv-Date DX Recode > Surv-Date Presumed Alive, Surv-Flag Active Followup must = 9')
            if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "9999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'If Surv-Date DX Recode > Surv-Date Presumed Alive, Surv-Mos Presumed Alive must = 9999')
            if (!functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "9"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'If Surv-Date DX Recode > Surv-Date Presumed Alive, Surv-Flag Presumed Alive must = 9')
        }
        return true

    }

    // ID: NAACCR-01477; TAG: N1979; NAME: Surv-Date Active Followup (SEER)
    public boolean naaccr01477(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int followup_year
        followup_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.survDateActiveFollowup)
        
        if (functions.GEN_EMPTY(untrimmedline.survDateActiveFollowup))
            return true
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDateActiveFollowup))
            return false
        if (functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.survDateActiveFollowup) == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY))
            return false
        if (followup_year < 1930)
            return false
        
        return true

    }

    // ID: NAACCR-01478; TAG: N1991; NAME: Surv-Date Active Followup, Date Last Cont (SEER)
    public boolean naaccr01478(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dtcmp
        int dx_year, dx_month, dx_day, surv_year, surv_month, surv_day
        
        if (functions.GEN_EMPTY(untrimmedline.dateOfDiagnosis) || !functions.GEN_VALID_DATE_IOP(binding, untrimmedline.dateOfDiagnosis))
            return true
        if (functions.GEN_EMPTY(untrimmedline.survDateActiveFollowup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.dateOfLastContact))
            return functions.GEN_ERROR_MSG(binding, 'If Date of Last Contact = blank, Surv-Date Active Followup must be blank')
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDateActiveFollowup))
            return functions.GEN_ERROR_MSG(binding, 'If Date of Last Contact not = blank, Surv-Date Active Followup must be date (month and year) and >= Date of Diagnosis')
        dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.dateOfDiagnosis, untrimmedline.survDateActiveFollowup, ((Integer)context.NAACCR_GEN_DT_EXACT))
        
        if (dtcmp <= 0)
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        dx_month = functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfDiagnosis)
        dx_day = functions.GEN_DATE_DAY_IOP(binding, untrimmedline.dateOfDiagnosis)
        surv_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.survDateActiveFollowup)
        surv_month = functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.survDateActiveFollowup)
        surv_day = functions.GEN_DATE_DAY_IOP(binding, untrimmedline.survDateActiveFollowup)
        
        if (dx_month == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY) || surv_month == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY)) {
            if (dx_year <= surv_year)
                return true
            else
                return false
        }
        else {
            if (dx_day == ((Integer)context.NAACCR_GEN_DT_DAY_EMPTY) || surv_day == ((Integer)context.NAACCR_GEN_DT_DAY_EMPTY)) {
                if (dx_year < surv_year)
                    return true
                else {
                    if (dx_year == surv_year && dx_month <= surv_month)
                        return true
                    else
                        return false
                }
            }
            else
                return false
        }
        return false

    }

    // ID: NAACCR-01479; TAG: N1993; NAME: Surv-Date Active Followup, Mos, Flag (SEER)
    public boolean naaccr01479(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survDateActiveFollowup)) {
            if (!functions.GEN_EMPTY(untrimmedline.survMosActiveFollowup) || !functions.GEN_EMPTY(untrimmedline.survFlagActiveFollowup))
                return functions.GEN_ERROR_MSG(binding, 'If Surv-Date Active Followup = blank, Surv-Mos Active Followup and Surv-Flag Active Followup must be blank')
        }
        else {
            if (functions.GEN_EMPTY(untrimmedline.survMosActiveFollowup)) {
                if (!functions.GEN_EMPTY(untrimmedline.survDateActiveFollowup) || !functions.GEN_EMPTY(untrimmedline.survFlagActiveFollowup))
                    return functions.GEN_ERROR_MSG(binding, 'If Surv-Mos Active Followup = blank, Surv-Date Active Followup and Surv-Flag Active Followup must be blank')
            }
            else {
                if (functions.GEN_EMPTY(untrimmedline.survFlagActiveFollowup)) {
                    if (!functions.GEN_EMPTY(untrimmedline.survMosActiveFollowup) || !functions.GEN_EMPTY(untrimmedline.survDateActiveFollowup))
                        return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = blank, Surv-Date Active Followup and Surv-Mos Active Followup must be blank')
                }
            }
        }
        
        return true

    }

    // ID: NAACCR-01480; TAG: N1981; NAME: Surv-Date DX Recode (SEER)
    public boolean naaccr01480(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int recode_year
        
        recode_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.survDateDxRecode)
        
        if (functions.GEN_EMPTY(untrimmedline.survDateDxRecode))
            return true
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDateDxRecode))
            return false
        if (functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.survDateDxRecode) == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY))
            return false
        if (recode_year < 1930)
            return false
        
        return true

    }

    // ID: NAACCR-01481; TAG: N1995; NAME: Surv-Date DX Recode, Date of Diagnosis (SEER)
    public boolean naaccr01481(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survDateDxRecode))
            return true
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDateDxRecode))
            return false
        if (functions.GEN_EMPTY(untrimmedline.dateOfDiagnosis))
            return true
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.dateOfDiagnosis))
            return true
        if (functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.survDateDxRecode) != functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis))
            return functions.GEN_ERROR_MSG(binding, 'Year of Surv-Date DX Recode must = year of Date of Diagnosis')
        if (functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfDiagnosis) > 0 && functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfDiagnosis) < 13) {
            if (functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.survDateDxRecode) != functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfDiagnosis))
                return functions.GEN_ERROR_MSG(binding, 'If month of Date of Diagnosis = 01-12, month of Surv-Date DX Recode must = month of Date of Diagnosis')
        }
        if (functions.GEN_DATE_DAY_IOP(binding, untrimmedline.dateOfDiagnosis) > 0 && functions.GEN_DATE_DAY_IOP(binding, untrimmedline.dateOfDiagnosis) < 32) {
            if (functions.GEN_DATE_DAY_IOP(binding, untrimmedline.survDateDxRecode) != functions.GEN_DATE_DAY_IOP(binding, untrimmedline.dateOfDiagnosis))
                return functions.GEN_ERROR_MSG(binding, 'If day of Date of Diagnosis = 01-31, day of Surv-Date DX Recode must = day of Date of Diagnosis')
        }
        
        return true

    }

    // ID: NAACCR-01482; TAG: N1980; NAME: Surv-Date Presumed Alive (SEER)
    public boolean naaccr01482(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int alive_year
        alive_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.survDatePresumedAlive)
        
        if (functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive))
            return true
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDatePresumedAlive))
            return false
        if (functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.survDatePresumedAlive) == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY))
            return false
        if (alive_year < 1930)
            return false
        
        return true

    }

    // ID: NAACCR-01483; TAG: N1990; NAME: Surv-Date Presumed Alive, Date Last Cont, DX (SEER)
    public boolean naaccr01483(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dtcmp
        int dx_year, dx_month, dx_day, surv_year, surv_month, surv_day
        
        if (functions.GEN_EMPTY(untrimmedline.dateOfDiagnosis) || !functions.GEN_VALID_DATE_IOP(binding, untrimmedline.dateOfDiagnosis))
            return true
        if (functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive))
            return true
        if (functions.GEN_EMPTY(untrimmedline.dateOfLastContact)) {
            if (functions.GEN_INLIST(untrimmedline.vitalStatus, "0")) {
                if (!functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive))
                    return functions.GEN_ERROR_MSG(binding, 'If Date of Last Contact = blank and Vital Status = 0 or 4, Surv-Date Presumed Alive must be blank')
                else
                    return true
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.dateOfLastContact))
            functions.GEN_ERROR_MSG(binding, 'If Date of Last Contact not = blank, Surv-Date Presumed Alive must be date (month and year) and >= Date of Diagnosis')
        else {
            if (functions.GEN_EMPTY(untrimmedline.dateOfLastContact) && functions.GEN_INLIST(untrimmedline.vitalStatus, "1"))
                functions.GEN_ERROR_MSG(binding, 'If Date of Last Contact = blank and Vital Status = 1, Surv-Date Presumed Alive must >= Date of Diagnosis')
            else
                return true
        }
        if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.survDatePresumedAlive))
            return functions.GEN_ERROR_MSG(binding, 'If Date of Last Contact not = blank, Surv-Date Presumed Alive must be date (month and year) and >= Date of Diagnosis')
        dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.dateOfDiagnosis, untrimmedline.survDatePresumedAlive, ((Integer)context.NAACCR_GEN_DT_EXACT))
        
        if (dtcmp <= 0)
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        dx_month = functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.dateOfDiagnosis)
        dx_day = functions.GEN_DATE_DAY_IOP(binding, untrimmedline.dateOfDiagnosis)
        surv_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.survDatePresumedAlive)
        surv_month = functions.GEN_DATE_MONTH_IOP(binding, untrimmedline.survDatePresumedAlive)
        surv_day = functions.GEN_DATE_DAY_IOP(binding, untrimmedline.survDatePresumedAlive)
        
        if (dx_month == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY) || surv_month == ((Integer)context.NAACCR_GEN_DT_MONTH_EMPTY)) {
            if (dx_year <= surv_year)
                return true
            else
                return false
        }
        else {
            if (dx_day == ((Integer)context.NAACCR_GEN_DT_DAY_EMPTY) || surv_day == ((Integer)context.NAACCR_GEN_DT_DAY_EMPTY)) {
                if (dx_year < surv_year)
                    return true
                else {
                    if (dx_year == surv_year && dx_month <= surv_month)
                        return true
                    else
                        return false
                }
            }
            else
                return false
        }
        return false

    }

    // ID: NAACCR-01484; TAG: N1992; NAME: Surv-Date Presumed Alive, Mos, Flag (SEER)
    public boolean naaccr01484(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive)) {
            if (!functions.GEN_EMPTY(untrimmedline.survMosPresumedAlive) || !functions.GEN_EMPTY(untrimmedline.survFlagPresumedAlive))
                return functions.GEN_ERROR_MSG(binding, 'If Surv-Date Presumed Alive = blank, Surv-Mos Presumed Alive and Surv-Flag Presumed Alive must be blank')
        }
        else {
            if (functions.GEN_EMPTY(untrimmedline.survMosPresumedAlive)) {
                if (!functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive) || !functions.GEN_EMPTY(untrimmedline.survFlagPresumedAlive))
                    return functions.GEN_ERROR_MSG(binding, 'If Surv-Mos Presumed Alive = blank, Surv-Date Presumed Alive and Surv-Flag Presumed Alive must be blank')
            }
            else {
                if (functions.GEN_EMPTY(untrimmedline.survFlagPresumedAlive)) {
                    if (!functions.GEN_EMPTY(untrimmedline.survMosPresumedAlive) || !functions.GEN_EMPTY(untrimmedline.survDatePresumedAlive))
                        return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = blank, Surv-Date Presumed Alive and Surv-Mos Presumed Alive must be blank')
                }
            }
        }
        
        return true

    }

    // ID: NAACCR-01485; TAG: N1982; NAME: Surv-Flag Active Followup (SEER)
    public boolean naaccr01485(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survFlagActiveFollowup))
            return true
        if (!functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "0-3,8,9"))
            return false
        return true

    }

    // ID: NAACCR-01486; TAG: N1987; NAME: Surv-Flag Active Followup, Mos Act Followup (SEER)
    public boolean naaccr01486(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survFlagActiveFollowup)) {
            if (!functions.GEN_EMPTY(untrimmedline.survMosActiveFollowup))
                return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = blank, Surv-Mos Active Followup must = blank')
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "0")) {
                if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "0000", "(\\d\\d\\d\\d)"))
                    return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = 0, Surv-Mos Active Followup must = 0000')
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "1")) {
                    if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "0000-9998", "(\\d\\d\\d\\d)"))
                        return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = 1, Surv-Mos Active Followup must = 0000-9998')
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "2")) {
                        if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "0000-0012", "(\\d\\d\\d\\d)"))
                            return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = 2, Surv-Mos Active Followup must = 0000-0012')
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "3")) {
                            if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "0000-9998", "(\\d\\d\\d\\d)"))
                                return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = 3, Surv-Mos Active Followup must = 0000-9998')
                        }
                        else {
                            if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "8")) {
                                if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "9999", "(\\d\\d\\d\\d)"))
                                    return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = 8, Surv-Mos Active Followup must = 9999')
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "9")) {
                                    if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "9999", "(\\d\\d\\d\\d)"))
                                        return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Active Followup = 9, Surv-Mos Active Followup must = 9999')
                                }
                            }
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01487; TAG: N1989; NAME: Surv-Flag Active Followup,Type Report Src (SEER)
    public boolean naaccr01487(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survFlagActiveFollowup) || functions.GEN_EMPTY(untrimmedline.typeOfReportingSource))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (!functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "8,9"))
                return false
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.survFlagActiveFollowup, "8"))
                return functions.GEN_ERROR_MSG(binding, 'If Type of Reporting Source not = 6 or 7, Surv-Flag Active Followup must not = 8')
        }
        return true

    }

    // ID: NAACCR-01488; TAG: N1983; NAME: Surv-Flag Presumed Alive (SEER)
    public boolean naaccr01488(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survFlagPresumedAlive))
            return true
        if (!functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "0-3,8,9"))
            return false
        return true

    }

    // ID: NAACCR-01489; TAG: N1986; NAME: Surv-Flag Presumed Alive, Mos Presumed Alive (SEER)
    public boolean naaccr01489(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survFlagPresumedAlive)) {
            if (!functions.GEN_EMPTY(untrimmedline.survMosPresumedAlive))
                return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = blank, Surv-Mos Presumed Alive must = blank')
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "0")) {
                if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "0000", "(\\d\\d\\d\\d)"))
                    return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = 0, Surv-Mos Presumed Alive must = 0000')
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "1")) {
                    if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "0000-9998", "(\\d\\d\\d\\d)"))
                        return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = 1, Surv-Mos Presumed Alive must = 0000-9998')
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "2")) {
                        if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "0000-0012", "(\\d\\d\\d\\d)"))
                            return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = 2, Surv-Mos Presumed Alive must = 0000-0012')
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "3")) {
                            if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "0000-9998", "(\\d\\d\\d\\d)"))
                                return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = 3, Surv-Mos Presumed Alive must = 0000-9998')
                        }
                        else {
                            if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "8")) {
                                if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "9999", "(\\d\\d\\d\\d)"))
                                    return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = 8, Surv-Mos Presumed Alive must = 9999')
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "9")) {
                                    if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "9999", "(\\d\\d\\d\\d)"))
                                        return functions.GEN_ERROR_MSG(binding, 'If Surv-Flag Presumed Alive = 9, Surv-Mos Presumed Alive must = 9999')
                                }
                            }
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01490; TAG: N1988; NAME: Surv-Flag Presumed Alive, Type Report Src (SEER)
    public boolean naaccr01490(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survFlagPresumedAlive) || functions.GEN_EMPTY(untrimmedline.typeOfReportingSource))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (!functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "8,9"))
                return false
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.survFlagPresumedAlive, "8"))
                return functions.GEN_ERROR_MSG(binding, 'If Type of Reporting Source not = 6 or 7, Surv-Flag Presumed Alive must not = 8')
        }
        return true

    }

    // ID: NAACCR-01491; TAG: N1985; NAME: Surv-Mos Active Followup (SEER)
    public boolean naaccr01491(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survMosActiveFollowup))
            return true
        if (!functions.GEN_INLIST(untrimmedline.survMosActiveFollowup, "0000-9999", "(\\d\\d\\d\\d)"))
            return false
        return true

    }

    // ID: NAACCR-01492; TAG: N1984; NAME: Surv-Mos Presumed Alive (SEER)
    public boolean naaccr01492(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.survMosPresumedAlive))
            return true
        if (!functions.GEN_INLIST(untrimmedline.survMosPresumedAlive, "0000-9999", "(\\d\\d\\d\\d)"))
            return false
        return true

    }

    // ID: NAACCR-01493; TAG: N2015; NAME: TNM Clin Descriptor, Date of Diagnosis (SEER)
    public boolean naaccr01493(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if ((dx_year > 2015 && dx_year < 2018) && (functions.GEN_EMPTY(untrimmedline.tnmClinDescriptor)))
            return false
        return true

    }

    // ID: NAACCR-01494; TAG: N2018; NAME: TNM Clin Staged By, Date of Diagnosis (SEER)
    public boolean naaccr01494(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015 || dx_year > 2017)
            return true
        if ((functions.GEN_EMPTY(untrimmedline.tnmClinStagedBy)) && dx_year == 2015)
            return true
        return functions.GEN_INLIST(untrimmedline.tnmClinStagedBy, "00, 10, 11, 12, 13, 14, 15, 20, 30, 40, 50, 60, 88, 99")

    }

    // ID: NAACCR-01495; TAG: N2013; NAME: TNM Edition Number, Date of Diagnosis (SEER)
    public boolean naaccr01495(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        int err_flag
        err_flag = 0
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015)
            return true
        if (dx_year == 2015) {
            if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmEditionNumber)) {
                    functions.GEN_SAVE_TEXT(binding, 'If dx_year is 2015, then TNM Edition must be 07, 88 or blank')
                    err_flag = 1
                }
            }
        }
        if (dx_year == 2016 || dx_year == 2017) {
            if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7, 88")) {
                functions.GEN_SAVE_TEXT(binding, 'If dx_year is 2016 or 2017, then TNM Edition must be 07,U7,or 88')
                err_flag = 1
            }
        }
        if (dx_year > 2017 && dx_year < 2021) {
            if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "08, 88")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmEditionNumber)) {
                    functions.GEN_SAVE_TEXT(binding, 'If dx_year is > 2017, then TNM Edition must be 08, 88, or blank')
                    err_flag = 1
                }
            }
        }
        if (dx_year > 2020) {
            if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "08,09, 88")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmEditionNumber)) {
                    functions.GEN_SAVE_TEXT(binding, 'If dx_year is > 2020, then TNM Edition must be 08, 09, 88, or blank')
                    err_flag = 1
                }
            }
        }
        if (err_flag == 1)
            return false
        else
            return true
        
        return true

    }

    // ID: NAACCR-01496; TAG: N2347; NAME: TNM Edition Number, TNM Fields (NPCR)
    public boolean naaccr01496(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year == 2015) {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathT) || !functions.GEN_EMPTY(untrimmedline.tnmPathM) || !functions.GEN_EMPTY(untrimmedline.tnmPathM) || !functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup) || !functions.GEN_EMPTY(untrimmedline.tnmPathDescriptor) || !functions.GEN_EMPTY(untrimmedline.tnmClinT) || !functions.GEN_EMPTY(untrimmedline.tnmClinM) || !functions.GEN_EMPTY(untrimmedline.tnmClinN) || !functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) || !functions.GEN_EMPTY(untrimmedline.tnmClinDescriptor)) {
                if (functions.GEN_EMPTY(untrimmedline.tnmEditionNumber))
                    return false
            }
        }
        return true

    }

    // ID: NAACCR-01498; TAG: N2016; NAME: TNM Path Descriptor, Date of Diagnosis (SEER)
    public boolean naaccr01498(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if ((dx_year < 2016) && (functions.GEN_EMPTY(untrimmedline.tnmPathDescriptor)))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathDescriptor))
                return false
        }
        
        return true

    }

    // ID: NAACCR-01499; TAG: N2017; NAME: TNM Path Staged By, Date of Diagnosis (SEER)
    public boolean naaccr01499(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015 || dx_year > 2017)
            return true
        if ((functions.GEN_EMPTY(untrimmedline.tnmPathStagedBy)) && dx_year == 2015)
            return true
        return functions.GEN_INLIST(untrimmedline.tnmPathStagedBy, "00, 10, 11, 12, 13, 14, 15, 20, 30, 40, 50, 60, 88, 99")

    }

    // ID: NAACCR-01500; TAG: N2028; NAME: CS SSF 8, SSF 10, Grade, Prostate (SEER)
    public boolean naaccr01500(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2014) || (dx_year > 2017))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8) || functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988") || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C619") || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-9136, 9141-9582, 9700-9701"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "002-006")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "002-006,998,999")) {
                if (!functions.GEN_INLIST(untrimmedline.grade, "1"))
                    return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 1')
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "007")) {
                    if (!functions.GEN_INLIST(untrimmedline.grade, "2"))
                        return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 2')
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "008-010")) {
                        if (!functions.GEN_INLIST(untrimmedline.grade, "3"))
                            return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 3')
                    }
                }
            }
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "007")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "002-007,998,999")) {
                    if (!functions.GEN_INLIST(untrimmedline.grade, "2"))
                        return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 2')
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "008-010")) {
                        if (!functions.GEN_INLIST(untrimmedline.grade, "3"))
                            return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 3')
                    }
                }
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "008-010")) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "002-010,998,999")) {
                        if (!functions.GEN_INLIST(untrimmedline.grade, "3"))
                            return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 3')
                    }
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "998,999")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "002-006")) {
                            if (!functions.GEN_INLIST(untrimmedline.grade, "1"))
                                return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 1')
                        }
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "007")) {
                                if (!functions.GEN_INLIST(untrimmedline.grade, "2"))
                                    return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 2')
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "008-010")) {
                                    if (!functions.GEN_INLIST(untrimmedline.grade, "3"))
                                        return functions.GEN_ERROR_MSG(binding, 'Prostate schema: If CS Site-Specific Factor 8 = ${untrimmedline.csSiteSpecificFactor8} and CS Site-Specific Factor10 = ${untrimmedline.csSiteSpecificFactor10}, Grade must = 3')
                                }
                            }
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01501; TAG: N2029; NAME: Primary Site, Heme Morph, DateDX, Override (COC)
    public boolean naaccr01501(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3) || functions.GEN_EMPTY(untrimmedline.behaviorCodeIcdO3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9993"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideCocSiteType, "1"))
            return true
        if (dx_year < 2010)
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9650,9651,9652,9653,9655,9659,9663,9688")) {
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "770-779", "(C\\d\\d\\d)", 2, 3))
                return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3},Primary Site not=C770-C779; review required')
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9597,9700,9701,9709,9718,9725")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010 or later, Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3},Primary Site not skin lymphoma; review required')
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9708,9726")) {
                    if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,490-499,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3))
                        return functions.GEN_ERROR_MSG(binding, 'Hemato diag 2010+, Histologic Type ICD-O-3=${untrimmedline.histologicTypeIcdO3},Primary Site not skin or soft tissue lymphoma; review required')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9719")) {
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "050-059,110-119,300-301,310-319", "(C\\d\\d\\d)", 2, 3))
                return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site = ${untrimmedline.primarySite}: review required')
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9751")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "340-349,400-419,421,440-449,490-499,770-779", "(C\\d\\d\\d)", 2, 3))
                    return functions.GEN_ERROR_MSG(binding, 'Hemato case diagnosed 2010 or later, Histologic Type ICD-O-3 = ${untrimmedline.histologicTypeIcdO3}, Primary Site = ${untrimmedline.primarySite}: review required')
            }
        }
        
        return true

    }

    // ID: NAACCR-01502; TAG: N2030; NAME: RX Date Mst Defn Srg, Date Last Contact (NPCR)
    public boolean naaccr01502(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dtcmp
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.dateOfLastContact) || functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurg))
            return true
        dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateMostDefinSurg, untrimmedline.dateOfLastContact, ((Integer)context.NAACCR_GEN_DT_MIN))
        
        if (dtcmp == ((Integer)context.NAACCR_GEN_DT_ERROR)) {
            if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.rxDateMostDefinSurg)) {
                functions.GEN_ERROR_TEXT(binding, 'RX Date Most Defin Surg is invalid: %DC')
                return false
            }
            else {
                if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.dateOfLastContact)) {
                    functions.GEN_ERROR_TEXT(binding, 'Date of Last Contact is invalid: %DC')
                    return false
                }
            }
        }
        else {
            if (dtcmp <= 0)
                return true
            else
                return false
        }
        
        return true

    }

    // ID: NAACCR-01503; TAG: N2031; NAME: RX Date Mst Defn Srg, RX Date Surgery (NPCR)
    public boolean naaccr01503(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dtcmp
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxDateSurgery) || functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurg))
            return true
        dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateMostDefinSurg, untrimmedline.rxDateSurgery, ((Integer)context.NAACCR_GEN_DT_MIN))
        
        if (dtcmp == ((Integer)context.NAACCR_GEN_DT_ERROR)) {
            if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.rxDateMostDefinSurg)) {
                functions.GEN_ERROR_TEXT(binding, 'RX Date Most Defin Surg is invalid: %DC')
                return false
            }
            else {
                if (!functions.GEN_VALID_DATE_IOP(binding, untrimmedline.rxDateSurgery)) {
                    functions.GEN_ERROR_TEXT(binding, 'RX Date Surgery is invalid: %DC')
                    return false
                }
            }
        }
        else {
            if (dtcmp >= 0)
                return true
            else
                return false
        }
        
        return true

    }

    // ID: NAACCR-01504; TAG: N2032; NAME: RX Date Mst Defn Srg, Surg Prim Site (NPCR)
    public boolean naaccr01504(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxSummSurgPrimSite))
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurg) && functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurgFlag))
            return true
        if (functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "00,98")) {
            if (functions.GEN_INLIST(untrimmedline.rxDateMostDefinSurgFlag, "11"))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'If RX Summ--Surg Prim Site = ${untrimmedline.rxSummSurgPrimSite}, RX Date Mst Defn Srg Flag must = 11')
        }
        if (functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "99")) {
        
            if (dx_year < 2012) {
                if (functions.GEN_INLIST(untrimmedline.rxDateMostDefinSurgFlag, "10, 12"))
                    return true
                else
                    return functions.GEN_ERROR_MSG(binding, 'If RX Summ--Surg Prim Site = ${untrimmedline.rxSummSurgPrimSite}, if year of Date of Diagnosis < 2012, RX Date Mst Defn Srg Flag must = 10 or 12')
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.rxDateMostDefinSurgFlag, "10"))
                    return true
                else
                    return functions.GEN_ERROR_MSG(binding, 'If RX Summ--Surg Prim Site = ${untrimmedline.rxSummSurgPrimSite}, if year of Date of Diagnosis > 2011, RX Date Mst Defn Srg Flag must = 10')
            }
        }
        if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "00,98,99")) {
            if (!functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurg))
                return true
            else {
                if (dx_year < 2012) {
                    if (functions.GEN_INLIST(untrimmedline.rxDateMostDefinSurgFlag, "10, 12"))
                        return true
                    else
                        return functions.GEN_ERROR_MSG(binding, 'If RX Summ--Surg Prim Site = ${untrimmedline.rxSummSurgPrimSite} and RX Date Mst Defn Srg is blank, if year of Date of Diagnosis < 2012, RX Date Mst Defn Srg Flag must = 10 or 12')
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.rxDateMostDefinSurgFlag, "12"))
                        return true
                    else
                        return functions.GEN_ERROR_MSG(binding, 'If RX Summ--Surg Prim Site = ${untrimmedline.rxSummSurgPrimSite} and RX Date Mst Defn Srg is blank, if year of Date of Diagnosis > 2011, RX Date Mst Defn Srg Flag must = 12')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01505; TAG: N2038; NAME: Sex, Name--First, Date of Birth (NAACCR)
    public boolean naaccr01505(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] FIRST_NAME = new char[41], SEX = new char[2], DECADE = new char[4], DEC_NAME = new char[100], DECSEXNAME = new char[100]
        
        char[] w_decade_name = new char[44]
        char[] w_decade_name_sex = new char[45]
        char[] w_decade_sex_name = new char[50]
        
        int w_birth_year
        
        int length
        
        if ((functions.GEN_EMPTY(untrimmedline.dateOfBirth)) || (functions.GEN_EMPTY(untrimmedline.nameFirst)) || (functions.GEN_EMPTY(untrimmedline.sex))) {
            return true
        }
        if (!functions.GEN_INLIST(untrimmedline.sex, "1,2")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "510-639", "(C\\d\\d\\d)", 2, 3)) {
            return true
        }
        w_birth_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfBirth)
        if ((w_birth_year < 1890) || (w_birth_year > 2009)) {
            return true
        }
        if ((!functions.GEN_INLIST(untrimmedline.birthplaceCountry, "USA")) && (functions.GEN_INLIST(functions.GEN_UPPER(untrimmedline.nameFirst), "ANDREA, ANGEL, CARMEN, JEAN, MICHELE, MARIAN, VIVIAN"))) {
            return true
        }
        if (functions.GEN_AT(untrimmedline.overRideNameSex, "1") != 0) {
            return true
        }
        functions.GEN_STRCPY(w_decade_name, functions.GEN_SUBSTR(untrimmedline.dateOfBirth, 1, 3))
        
        functions.GEN_STRCAT(w_decade_name, functions.GEN_UPPER(untrimmedline.nameFirst))
        
        if (!(functions.GEN_ILOOKUP(w_decade_name, context.NAACCR_NAMESEX, context.NAACCR_NAMESEX_DEC_NAME, ['DECADE':DECADE, 'SEX':SEX, 'DECSEXNAME':DECSEXNAME, 'DEC_NAME':DEC_NAME]))) {
            return true
        }
        functions.GEN_STRCPY(w_decade_sex_name, functions.GEN_SUBSTR(untrimmedline.dateOfBirth, 1, 3))
        
        functions.GEN_STRCAT(w_decade_sex_name, untrimmedline.sex)
        
        functions.GEN_STRCAT(w_decade_sex_name, functions.GEN_UPPER(untrimmedline.nameFirst))
        
        if (!functions.GEN_ILOOKUP(w_decade_sex_name, context.NAACCR_NAMESEX, context.NAACCR_NAMESEX_DECSEXNAME, ['DECADE':DECADE, 'SEX':SEX, 'DECSEXNAME':DECSEXNAME, 'DEC_NAME':DEC_NAME]))
            return false
        return true

    }

    // ID: NAACCR-01506; TAG: N2409; NAME: CS Extension Required 2016plus (NAACCR)
    public boolean naaccr01506(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        int err_flag
        err_flag = 0
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.csExtension)) {
            functions.GEN_ERROR_TEXT(binding, 'CS Extension cannot be blank')
            return false
        }
        return true

    }

    // ID: NAACCR-01507; TAG: N2376; NAME: CS Items - CoC Required - Non-SSF 2016 (CS)
    public boolean naaccr01507(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        int err_flag
        err_flag = 0
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year < 2016)
            return true
        if (dx_year > 2017)
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.csTumorSize)) {
            if (!functions.GEN_INLIST(untrimmedline.csTumorSize, "988,999")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Tumor Size must be blank, 988, or 999')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csExtension)) {
            if (!functions.GEN_INLIST(untrimmedline.csExtension, "988,999")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Extension must be blank, 988, or 999')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csLymphNodes)) {
            if (!functions.GEN_INLIST(untrimmedline.csLymphNodes, "988,999")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Lymph Nodes must be blank, 988, or 999')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDx)) {
            if (!functions.GEN_INLIST(untrimmedline.csMetsAtDx, "98,99")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Mets at DX must be blank, 98, or 99')
                err_flag = 1
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.regionalNodesExamined)) {
            functions.GEN_SAVE_TEXT(binding, 'If DX > 2003, Regional Nodes Examined cannot be blank')
            err_flag = 1
        }
        if (functions.GEN_EMPTY(untrimmedline.regionalNodesPositive)) {
            functions.GEN_SAVE_TEXT(binding, 'If DX > 2003, Regional Nodes Positive cannot be blank')
            err_flag = 1
        }
        if (!functions.GEN_EMPTY(untrimmedline.csTumorSizeExtEval)) {
            if (!functions.GEN_INLIST(untrimmedline.csTumorSizeExtEval, "9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Tumor Size/Ext Eval must be blank or 9')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csLymphNodesEval)) {
            if (!functions.GEN_INLIST(untrimmedline.csLymphNodesEval, "9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Lymph Nodes Eval must be blank or 9')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csMetsEval)) {
            if (!functions.GEN_INLIST(untrimmedline.csMetsEval, "9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Mets Eval must be blank or 9')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxBone)) {
            if (!functions.GEN_INLIST(untrimmedline.csMetsAtDxBone, "8,9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Mets at DX-Bone must be blank, 8, or 9')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxBrain)) {
            if (!functions.GEN_INLIST(untrimmedline.csMetsAtDxBrain, "8,9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Mets at DX-Brain must be blank, 8, or 9')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxLiver)) {
            if (!functions.GEN_INLIST(untrimmedline.csMetsAtDxLiver, "8,9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Mets at DX-Liver must be blank, 8, or 9')
                err_flag = 1
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxLung)) {
            if (!functions.GEN_INLIST(untrimmedline.csMetsAtDxLung, "8,9")) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2015, CS Mets at DX-Lung must be blank, 8 or 9')
                err_flag = 1
            }
        }
        if (functions.GEN_INLIST(t_schema_name, "Penis,Testis")) {
            if (functions.GEN_EMPTY(untrimmedline.lymphVascularInvasion)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX > 2009, Lymphovascular Invasion cannot be blank for this schema')
                err_flag = 1
            }
        }
        if (err_flag == 1) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return false
        }
        
        return true

    }

    // ID: NAACCR-01508; TAG: N2063; NAME: CS Items - NPCR Required - SSF 1 (CS) - 2015
    public boolean naaccr01508(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF1_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if (dx_year < 2016 && dx_year > 2003 && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 1 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF1_NPCR':SSF1_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
        
            if (!functions.GEN_INLIST(SSF1_NPCR, "R")) {
                return true
            }
            if ((dx_year > 2010)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor 1 must not be 988 for this schema')
                }
            }
            if (functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
            if ((dx_year == 2010)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor 1 must not be 988 for this schema')
                }
            }
            if (functions.GEN_INLIST(t_schema_name, "Breast,Lung")) {
                return true
            }
            if ((dx_year > 2003)) {
                if (functions.GEN_INLIST(t_schema_name, "Pleura")) {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
                        return true
                    else {
                        functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                        functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                        functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                        return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 1 must not be 988')
                    }
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast,Brain,CNSOther,IntracranialGland")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor 1 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01509; TAG: N2064; NAME: CS Items - NPCR Required - SSF 1 (CS) - 2016+
    public boolean naaccr01509(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF1_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (dx_year > 2015) {
            if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1))) && (functions.GEN_INLIST(t_schema_name, "Prostate,Placenta,MycosisFungoides,Breast,Brain,CNSOther,IntracranialGland")))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor 1 cannot be 988 or blank')
        }
        if (dx_year > 2015) {
            if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1)) && (functions.GEN_INLIST(t_schema_name, "Prostate,Placenta,MycosisFungoides,Breast,Brain,CNSOther,IntracranialGland")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
                return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        }
        if (dx_year > 2015) {
            if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1)) && (functions.GEN_INLIST(t_schema_name, "Prostate,Placenta,MycosisFungoides,Breast,Brain,CNSOther,IntracranialGland")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
                return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        }
        
        return true

    }

    // ID: NAACCR-01510; TAG: N2065; NAME: CS Items - NPCR Required - SSF 10 (CS) - 2015
    public boolean naaccr01510(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF10_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor10 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF10_NPCR':SSF10_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF10_NPCR, "N,R"))
                return true
            if (((dx_year < 2016) && (dx_year > 2013)) || (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) >= 20550))
                return true
            if ((dx_year > 2009 && dx_year < 2016)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor10 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor10 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
            if (((dx_year < 2016) && (dx_year > 2013)) || (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) >= 20550)) {
                if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10)) {
                    return true
                }
            }
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor10 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01512; TAG: N2067; NAME: CS Items - NPCR Required - SSF 11 (CS) - 2015
    public boolean naaccr01512(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF11_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor11)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor11 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF11_NPCR':SSF11_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF11_NPCR, "R"))
                return true
            if ((dx_year < 2016) && (dx_year > 2009)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor11 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor11 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor11))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor11 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01513; TAG: N2068; NAME: CS Items - NPCR Required - SSF 11 (CS) - 2016+
    public boolean naaccr01513(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF11_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor11))) && (functions.GEN_INLIST(t_schema_name, "Appendix,Breast,GISTAppendix,GISTColon,GISTRectum")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor11 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor11)) && (functions.GEN_INLIST(t_schema_name, "Appendix,Breast,GISTAppendix,GISTColon,GISTRectum")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor11)) && (functions.GEN_INLIST(t_schema_name, "Appendix,Breast,GISTAppendix,GISTColon,GISTRectum")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01515; TAG: N2071; NAME: CS Items - NPCR Required - SSF 13 (CS) - 2015
    public boolean naaccr01515(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF13_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor13)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor13 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF13_NPCR':SSF13_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF13_NPCR, "R"))
                return true
            if ((dx_year < 2016) && (dx_year > 2009)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor13, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor13 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor13, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor13 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor13, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor13))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor13 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01516; TAG: N2070; NAME: CS Items - NPCR Required - SSF 13 (CS) - 2016+
    public boolean naaccr01516(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF13_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor13, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor13))) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor13 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor13)) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor13)) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01517; TAG: N2073; NAME: CS Items - NPCR Required - SSF 14 (CS) - 2015
    public boolean naaccr01517(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF14_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor14)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor14 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF14_NPCR':SSF14_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF14_NPCR, "R"))
                return true
            if ((dx_year < 2016) && (dx_year > 2009)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor14, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor14 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor14, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor14 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor14, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor14))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor14 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01518; TAG: N2072; NAME: CS Items - NPCR Required - SSF 14 (CS) - 2016+
    public boolean naaccr01518(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF14_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor14, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor14))) && (functions.GEN_INLIST(t_schema_name, "Breast")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor14 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor14)) && (functions.GEN_INLIST(t_schema_name, "Breast")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor14)) && (functions.GEN_INLIST(t_schema_name, "Breast")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01519; TAG: N2075; NAME: CS Items - NPCR Required - SSF 15 (CS) - 2015
    public boolean naaccr01519(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF15_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor15)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor15 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF15_NPCR':SSF15_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF15_NPCR, "R"))
                return true
            if ((dx_year < 2016) && (dx_year > 2010)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor15, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor15 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor15, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor15 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor15, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor15))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor15 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01520; TAG: N2074; NAME: CS Items - NPCR Required - SSF 15 (CS) - 2016+
    public boolean naaccr01520(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF15_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor15, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor15))) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor15 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor15)) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor15)) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01521; TAG: N2077; NAME: CS Items - NPCR Required - SSF 16 (CS) - 2015
    public boolean naaccr01521(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF16_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor16)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor16 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF16_NPCR':SSF16_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF16_NPCR, "R"))
                return true
            if ((dx_year < 2016) && (dx_year > 2010)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor16, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor16 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor16, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor16 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor16, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor16))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor16 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01522; TAG: N2076; NAME: CS Items - NPCR Required - SSF 16 (CS) - 2016+
    public boolean naaccr01522(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF16_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor16, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor16))) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor16 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor16)) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor16)) && (functions.GEN_INLIST(t_schema_name, "Breast,Testis")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01526; TAG: N2081; NAME: CS Items - NPCR Required - SSF 2 (CS) - 2015
    public boolean naaccr01526(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF2_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if (dx_year < 2016 && dx_year > 2003 && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 2 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF2_NPCR':SSF2_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
        
            if (!functions.GEN_INLIST(SSF2_NPCR, "R")) {
                return true
            }
            if ((dx_year > 2009 && dx_year < 2016)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor 2 must not be 988 for this schema')
                }
            }
            if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
                if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                    if (functions.GEN_INLIST(t_schema_name, "CorpusAdenosarcoma,CorpusCarcinoma,CorpusSarcoma")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988"))
                            return true
                        else {
                            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                            return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor 2 must be 988 for this schema')
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor 2 must not be blank or 988')
                }
            }
        }
        
        return true

    }

    // ID: NAACCR-01527; TAG: N2082; NAME: CS Items - NPCR Required - SSF 2 (CS) - 2016+
    public boolean naaccr01527(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF1_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (dx_year > 2015) {
            if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2))) && (functions.GEN_INLIST(t_schema_name, "Breast")))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor 2 cannot be 988 or blank')
        }
        if (dx_year > 2015) {
            if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2)) && (functions.GEN_INLIST(t_schema_name, "Breast")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
                return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        }
        if (dx_year > 2015) {
            if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2)) && (functions.GEN_INLIST(t_schema_name, "Breast")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
                return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        }
        
        return true

    }

    // ID: NAACCR-01536; TAG: N2091; NAME: CS Items - NPCR Required - SSF 5 (CS) - 2015
    public boolean naaccr01536(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2004)
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0) {
            functions.GEN_ERROR_TEXT(binding, 'Invalid site or histology')
            return false
        }
        else {
            if (t_schema_number > t_max_schemas) {
                functions.GEN_ERROR_TEXT(binding, 'Schema discriminator missing or invalid')
                return false
            }
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5)) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 5 must not be blank')
        }
        return true

    }

    // ID: NAACCR-01537; TAG: N2092; NAME: CS Items - NPCR Required - SSF 5 (CS) - 2016+
    public boolean naaccr01537(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        else {
            if (t_schema_number > t_max_schemas) {
                return true
            }
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5))) && (functions.GEN_INLIST(t_schema_name, "GISTPeritoneum")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor 5 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5)) && (functions.GEN_INLIST(t_schema_name, "GISTPeritoneum")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5)) && (functions.GEN_INLIST(t_schema_name, "GISTPeritoneum")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        return true

    }

    // ID: NAACCR-01538; TAG: N2093; NAME: CS Items - NPCR Required - SSF 6 (CS) - 2015
    public boolean naaccr01538(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2004)
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0) {
            functions.GEN_ERROR_TEXT(binding, 'Invalid site or histology')
            return false
        }
        else {
            if (t_schema_number > t_max_schemas) {
                functions.GEN_ERROR_TEXT(binding, 'Schema discriminator missing or invalid')
                return false
            }
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6)) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 6 must not be blank')
        }
        return true

    }

    // ID: NAACCR-01539; TAG: N2094; NAME: CS Items - NPCR Required - SSF 6 (CS) - 2016+
    public boolean naaccr01539(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2004)
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (functions.GEN_INLIST(t_schema_name, "GISTEsophagus,GISTSmallIntestine,GISTStomach")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6)))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor 6 cannot be 988 or blank')
        }
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6)) && (functions.GEN_INLIST(t_schema_name, "GISTEsophagus,GISTSmallIntestine,GISTStomach")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6)) && (functions.GEN_INLIST(t_schema_name, "GISTEsophagus,GISTSmallIntestine,GISTStomach")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01540; TAG: N2096; NAME: CS Items - NPCR Required - SSF 8 (CS) - 2015
    public boolean naaccr01540(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF8_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 8 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF8_NPCR':SSF8_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF8_NPCR, "R"))
                return true
            if ((dx_year > 2009) && (dx_year < 2016)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor 8 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor 8 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor 8 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01541; TAG: N2097; NAME: CS Items - NPCR Required - SSF 8 (CS) - 2016+
    public boolean naaccr01541(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF1_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8))) && (functions.GEN_INLIST(t_schema_name, "Breast,Prostate")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor 8 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8)) && (functions.GEN_INLIST(t_schema_name, "Breast,Prostate")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8)) && (functions.GEN_INLIST(t_schema_name, "Breast,Prostate")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01542; TAG: N2098; NAME: CS Items - NPCR Required - SSF 9 (CS) - 2015
    public boolean naaccr01542(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF9_NPCR = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland")) {
                return true
            }
        }
        if ((dx_year < 2016) && (dx_year > 2003) && functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9)) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return functions.GEN_ERROR_MSG(binding, 'For DX Year > 2003, CS Site-Specific Factor 9 must not be blank')
            }
        }
        if (!functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF9_NPCR':SSF9_NPCR])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            functions.GEN_ERROR_TEXT(binding, 'Schema missing in SSF table')
            return false
        }
        if (functions.GEN_EMPTY(untrimmedline.overRideCs20)) {
            if (!functions.GEN_INLIST(SSF9_NPCR, "R"))
                return true
            if ((dx_year < 2016) && (dx_year > 2009)) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor 9 must not be 988 for this schema')
                }
            }
        }
        if ((dx_year > 2003) && (dx_year < 2010) && (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) < 20000)) {
            if (functions.GEN_VAL(untrimmedline.csVersionInputCurrent) == 20510) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "988"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For DX Year < 2010, CS Version Input Original of ${untrimmedline.csVersionInputOriginal} and CS Version Input Current of ${untrimmedline.csVersionInputCurrent}, CS Site-Specific Factor 9 must be 988 for this schema')
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.overRideCs20, "1") && (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "3-7"))) {
        
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "988") && !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'If Over-ride CS 20 = \'1\' and Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, then CS Site-Specific Factor 9 must not be blank or 988')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01543; TAG: N2099; NAME: CS Items - NPCR Required - SSF 9 (CS) - 2016+
    public boolean naaccr01543(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[100], SSF9_NPCR = new char[100]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        if (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal) || functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "988") || (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9))) && (functions.GEN_INLIST(t_schema_name, "Breast")))
            return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis is 2016 or later, CS Site-Specific Factor 9 cannot be 988 or blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9)) && (functions.GEN_INLIST(t_schema_name, "Breast")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputOriginal)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Original cannot be left blank')
        if ((!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9)) && (functions.GEN_INLIST(t_schema_name, "Breast")) && (functions.GEN_EMPTY(untrimmedline.csVersionInputCurrent)))
            return functions.GEN_ERROR_MSG(binding, 'CS Version Input Current cannot be left blank')
        
        return true

    }

    // ID: NAACCR-01544; TAG: N2294; NAME: CS Items - SEER Required - SSF 25 (CS)
    public boolean naaccr01544(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] schema = new char[34], SSF25_SEER = new char[2]
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2004)
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0) {
            return true
        }
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if ((t_schema_number < 0) && (dx_year < 2016)) {
            functions.GEN_ERROR_TEXT(binding, 'Invalid site or histology')
            return false
        }
        else {
            if ((t_schema_number > t_max_schemas) && (dx_year < 2016)) {
                functions.GEN_ERROR_TEXT(binding, 'Schema discriminator missing or invalid')
                return false
            }
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_LOOKUP((t_schema_name), context.NAACCR_CS_SSF, context.NAACCR_CS_SSF_SCHEMA, ['SCHEMA':schema, 'SSF25_SEER':SSF25_SEER])) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((dx_year > 2003 && dx_year < 2018)) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor25))
                return false
        }
        if (((dx_year > 2015) || (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) >= 20550)) && (!functions.GEN_EMPTY(untrimmedline.csExtension))) {
            if ((functions.GEN_INLIST(untrimmedline.primarySite, "C481,C482,C488"))) {
                if ((functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576,8590-8671,8930-8934,8940,9110"))) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "988"))
                        return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor25 must not be blank or 988 for this schema')
                }
            }
            if (functions.GEN_INLIST(SSF25_SEER, "R")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "988")) {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor25 must not be blank or 988 for this schema')
                }
                else
                    return true
            }
        }
        if ((dx_year > 2015) && (functions.GEN_EMPTY(untrimmedline.csExtension))) {
            if ((functions.GEN_INLIST(untrimmedline.primarySite, "C481,C482,C488"))) {
                if ((functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576,8590-8671,8930-8934,8940,9110"))) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "988"))
                        return true
                }
            }
            if (functions.GEN_INLIST(SSF25_SEER, "R")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "988")) {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Date of Diagnosis of ${untrimmedline.dateOfDiagnosis.formatDate()}, CS Site-Specific Factor25 must not be blank or 988 for this schema')
                }
                else
                    return true
            }
        }
        return true

    }

    // ID: NAACCR-01545; TAG: N2414; NAME: CS Items, Type Reporting Source-DCO (SEER)
    public boolean naaccr01545(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year, err_flag
        
        err_flag = 0
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2004 || dx_year > 2017)
            return true
        if ((dx_year == 2016 || dx_year == 2017) && (functions.GEN_EMPTY(untrimmedline.csExtension)))
            return true
        if (!functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "2"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.csTumorSize) && !functions.GEN_INLIST(untrimmedline.csTumorSize, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Tumor Size (${untrimmedline.csTumorSize}) must = 988 or 999')
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_EMPTY(untrimmedline.csExtension) && !functions.GEN_INLIST(untrimmedline.csExtension, "050,999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Extension (${untrimmedline.csExtension}) must = 050 or 999')
            else
                functions.GEN_NOOP()
        }
        else {
            if (functions.GEN_INLIST(t_schema_name, "HemeRetic")) {
                if (!functions.GEN_EMPTY(untrimmedline.csExtension) && !functions.GEN_INLIST(untrimmedline.csExtension, "800,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Extension (${untrimmedline.csExtension}) must = 800 or 999')
                else
                    functions.GEN_NOOP()
            }
            else {
                if (functions.GEN_INLIST(t_schema_name, "MyelomaPlasmaCellDisorder")) {
                    if (!functions.GEN_EMPTY(untrimmedline.csExtension) && !functions.GEN_INLIST(untrimmedline.csExtension, "800,810,820,999"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Extension (${untrimmedline.csExtension}) must = 800, 810, 820, or 999')
                    else
                        functions.GEN_NOOP()
                }
                else {
                    if (functions.GEN_INLIST(t_schema_name, "LymphomaOcularAdnexa")) {
                        if (!functions.GEN_EMPTY(untrimmedline.csExtension) && !functions.GEN_INLIST(untrimmedline.csExtension, "989,999"))
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Extension (${untrimmedline.csExtension}) must = 989 or 999')
                        else
                            functions.GEN_NOOP()
                    }
                    else {
                        if (!functions.GEN_EMPTY(untrimmedline.csExtension) && !functions.GEN_INLIST(untrimmedline.csExtension, "988,999"))
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Extension (${untrimmedline.csExtension}) must = 988 or 999')
                    }
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csTumorSizeExtEval) && !functions.GEN_INLIST(untrimmedline.csTumorSizeExtEval, "9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Tumor Size/Ext Eval (${untrimmedline.csTumorSizeExtEval}) must = 9')
        if (!functions.GEN_EMPTY(untrimmedline.csLymphNodes)) {
            if (functions.GEN_INLIST(t_schema_name, "MyelomaPlasmaCellDisorder")) {
                if (!functions.GEN_INLIST(untrimmedline.csLymphNodes, "987,988,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Lymph Nodes (${untrimmedline.csLymphNodes}) must = 987, 988, or 999')
                else
                    functions.GEN_NOOP()
            }
            else {
                if (!functions.GEN_INLIST(untrimmedline.csLymphNodes, "988,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Lymph Nodes (${untrimmedline.csLymphNodes}) must = 988 or 999')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csLymphNodesEval) && !functions.GEN_INLIST(untrimmedline.csLymphNodesEval, "9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Lymph Nodes Eval (${untrimmedline.csLymphNodesEval}) must = 9')
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDx) && !functions.GEN_INLIST(untrimmedline.csMetsAtDx, "98,99"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Mets at DX (${untrimmedline.csMetsAtDx}) must = 98 or 99')
        if (!functions.GEN_EMPTY(untrimmedline.csMetsEval) && !functions.GEN_INLIST(untrimmedline.csMetsEval, "9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Mets Eval (${untrimmedline.csMetsEval}) must = 9')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1)) {
            if (functions.GEN_INLIST(t_schema_name, "Retinoblastoma")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "960"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1}) must = 960')
            }
            else {
                if (functions.GEN_INLIST(t_schema_name, "Bladder,KidneyRenalPelvis,Urethra")) {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "987,988,999"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1}) must = 987, 988 or 999')
                }
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988,999"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1}) must = 988 or 999')
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2)) {
            if (functions.GEN_INLIST(t_schema_name, "MyelomaPlasmaCellDisorder,SkinEyelid")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "987,988,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 2 (${untrimmedline.csSiteSpecificFactor2}) must = 987, 988, or 999')
                else
                    functions.GEN_NOOP()
            }
            else {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 2 (${untrimmedline.csSiteSpecificFactor2}) must = 988 or 999')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3)) {
            if (functions.GEN_INLIST(t_schema_name, "Breast")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988,099"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}) must = 988 or 099')
            }
            else {
                if (functions.GEN_INLIST(t_schema_name, "Prostate")) {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "960"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}) must = 960')
                }
                else {
                    if (functions.GEN_INLIST(t_schema_name, "MyelomaPlasmaCellDisorder")) {
                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "987,988,999"))
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}) must = 987, 988, or 999')
                    }
                    else {
                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988,999"))
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}) must = 988 or 999')
                    }
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor4)) {
            if (functions.GEN_INLIST(t_schema_name, "Prostate")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "550,988,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 4 (${untrimmedline.csSiteSpecificFactor4}) must = 550, 988, or 999')
            }
            else {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "987,988,999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 4 (${untrimmedline.csSiteSpecificFactor4}) must = 987, 988, or 999')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "987,988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 5 (${untrimmedline.csSiteSpecificFactor5}) must = 987, 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "987,988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 6 (${untrimmedline.csSiteSpecificFactor6}) must = 987, 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor7) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor7, "987,988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 7 (${untrimmedline.csSiteSpecificFactor7}) must = 987, 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor8) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 8 (${untrimmedline.csSiteSpecificFactor8}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor 9 (${untrimmedline.csSiteSpecificFactor9}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor10 (${untrimmedline.csSiteSpecificFactor10}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor11) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor11 (${untrimmedline.csSiteSpecificFactor11}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor12) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor12, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor12 (${untrimmedline.csSiteSpecificFactor12}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor13) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor13, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor13 (${untrimmedline.csSiteSpecificFactor13}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor14) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor14, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor14 (${untrimmedline.csSiteSpecificFactor14}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor15) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor15, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor15 (${untrimmedline.csSiteSpecificFactor15}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor16) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor16, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor16 (${untrimmedline.csSiteSpecificFactor16}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor17) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor17, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor17 (${untrimmedline.csSiteSpecificFactor17}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor18) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor18, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor18 (${untrimmedline.csSiteSpecificFactor18}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor19) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor19, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor19 (${untrimmedline.csSiteSpecificFactor19}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor20) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor20, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor20 (${untrimmedline.csSiteSpecificFactor20}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor21) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor21, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor21 (${untrimmedline.csSiteSpecificFactor21}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor22) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor22, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor22 (${untrimmedline.csSiteSpecificFactor22}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor23) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor23, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor23 (${untrimmedline.csSiteSpecificFactor23}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor24) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor24, "988,999"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Site-Specific Factor24 (${untrimmedline.csSiteSpecificFactor24}) must = 988 or 999')
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxBone) && !functions.GEN_INLIST(untrimmedline.csMetsAtDxBone, "8,9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Mets at Dx-Bone (${untrimmedline.csMetsAtDxBone}) must = 8, 9, or blank')
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxBrain) && !functions.GEN_INLIST(untrimmedline.csMetsAtDxBrain, "8,9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Mets at Dx-Brain (${untrimmedline.csMetsAtDxBrain}) must = 8, 9, or blank')
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxLiver) && !functions.GEN_INLIST(untrimmedline.csMetsAtDxLiver, "8,9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Mets at Dx-Liver (${untrimmedline.csMetsAtDxLiver}) must = 8, 9, or blank')
        if (!functions.GEN_EMPTY(untrimmedline.csMetsAtDxLung) && !functions.GEN_INLIST(untrimmedline.csMetsAtDxLung, "8,9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: CS Mets at Dx-Lung (${untrimmedline.csMetsAtDxLung}) must = 8, 9, or blank')
        if (!functions.GEN_EMPTY(untrimmedline.lymphVascularInvasion) && !functions.GEN_INLIST(untrimmedline.lymphVascularInvasion, "8,9"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'DCO: Lymphovascular Invasion (${untrimmedline.lymphVascularInvasion}) must = 8, 9, or blank')
        
        return true

    }

    // ID: NAACCR-01546; TAG: N2374; NAME: CS SSF 1, RX Summ--Surg, Retinoblastoma (SEER)
    public boolean naaccr01546(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        char[] CS_code = new char[4]
        int t_schema_number, t_max_schemas, t_result
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if ((dx_year == 2016 || dx_year == 2017) && (functions.GEN_EMPTY(untrimmedline.csExtension)))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (!functions.GEN_INLIST(t_schema_name, "Retinoblastoma"))
            return true
        if (functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "40,41")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "970")) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return false
            }
            else
                return true
        }
        return true

    }

    // ID: NAACCR-01547; TAG: N2373; NAME: CS SSF 25, PeritoneumFemaleGen (SEER)
    public boolean naaccr01547(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2004 || dx_year > 2017)
            return true
        if ((dx_year == 2016 || dx_year == 2017) && (functions.GEN_EMPTY(untrimmedline.csExtension)))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor25))
            return true
        if (functions.GEN_INLIST(untrimmedline.sex, "2,6") && functions.GEN_INLIST(untrimmedline.primarySite, "481,482,488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8590-8671, 8930-8934,8940-9110")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002,100"))
                return false
        }
        return true

    }

    // ID: NAACCR-01548; TAG: N2375; NAME: CS SSF 3, RX Summ--Surg, Prostate (SEER)
    public boolean naaccr01548(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        char[] t_schema_str = new char[4]
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if ((dx_year == 2016 || dx_year == 2017) && (functions.GEN_EMPTY(untrimmedline.csExtension)))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (!functions.GEN_INLIST(t_schema_name, "Prostate"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3)) {
        
            if (functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "50,70")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "960,970,980,985"))
                    return true
                else {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return false
                }
            }
            else
                return true
        }
        return true

    }

    // ID: NAACCR-01549; TAG: N2389; NAME: CS SSF 9, Surgery, HeadNeck Schemas (CS)
    public boolean naaccr01549(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        char[] t_schema_str = new char[4]
        
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor9) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "988") || functions.GEN_INLIST(untrimmedline.csTumorSizeExtEval, "2,8,9") || functions.GEN_EMPTY(untrimmedline.csTumorSizeExtEval) || functions.GEN_EMPTY(untrimmedline.rxSummScopeRegLnSur))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (!functions.GEN_ILOOKUP((t_schema_name), context.NAACCR_SCHEM_HN, context.NAACCR_SCHEM_HN_SCHEMA, [:]))
            return true
        if (functions.GEN_INLIST(untrimmedline.csTumorSizeExtEval, "2,8,9"))
            return true
        if (functions.GEN_INLIST(untrimmedline.rxSummScopeRegLnSur, "0")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "998,999")) {
                functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                return false
            }
        }
        if (functions.GEN_VAL(untrimmedline.csVersionInputOriginal) >= 20500) {
            if (functions.GEN_INLIST(untrimmedline.rxSummScopeRegLnSur, "1")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor9, "998,999")) {
                    functions.GEN_STRCPY(t_schema_msg, "Schema: ")
                    functions.GEN_STRCAT(t_schema_msg, t_schema_name)
                    functions.GEN_SAVE_TEXT(binding, t_schema_msg)
                    return functions.GEN_ERROR_MSG(binding, 'Head and Neck: If CS Version Input Original = 020500 or higher and RX Summ--Scope Reg LN Sur = 1, CS Site-Specific Factor 9 must = 998 or 999')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01550; TAG: N2410; NAME: CS Site-Specific Factor 1, Schema (SEER)
    public boolean naaccr01550(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        char[] CS_code = new char[4]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1) || functions.GEN_EMPTY(untrimmedline.primarySite) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((dx_year == 2016 || dx_year == 2017) && (functions.GEN_EMPTY(untrimmedline.csExtension)) && (functions.GEN_INLIST(t_schema_name, "Retinoblastoma,Esophagus,EsophagusGEJunction,NETStomach,Stomach"))) {
            return true
        }
        functions.GEN_STRCPY(CS_code, untrimmedline.csSiteSpecificFactor1)
        t_result = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_code_is_valid", t_schema_number, 10, 1, CS_code)
        
        if (t_result <= 0) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return false
        }
        
        return true

    }

    // ID: NAACCR-01551; TAG: N2411; NAME: CS Site-Specific Factor 2, Schema (SEER)
    public boolean naaccr01551(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        char[] CS_code = new char[4]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2) || functions.GEN_EMPTY(untrimmedline.primarySite) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((dx_year > 2015) && (functions.GEN_EMPTY(untrimmedline.csExtension)) && (functions.GEN_INLIST(t_schema_name, "Appendix,CarcinoidAppendix,Colon,NETColon,NETRectum,Rectum,SmallIntestine"))) {
            return true
        }
        functions.GEN_STRCPY(CS_code, untrimmedline.csSiteSpecificFactor2)
        
        t_result = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_code_is_valid", t_schema_number, 11, 1, CS_code)
        
        if (t_result <= 0) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return false
        }
        
        return true

    }

    // ID: NAACCR-01552; TAG: N2412; NAME: CS Site-Specific Factor 3, Schema (SEER)
    public boolean naaccr01552(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        char[] CS_code = new char[4]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) || functions.GEN_EMPTY(untrimmedline.primarySite) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((dx_year > 2015) && (functions.GEN_EMPTY(untrimmedline.csExtension)) && ((functions.GEN_INLIST(t_schema_name, "LacrimalGland,MelanomaSkin,MerkelCellPenis,MerkelCellScrotum,")) || (functions.GEN_INLIST(t_schema_name, "MerkelCellSkin,MerkelCellVulva,Prostate,SkinEyelid")))) {
            return true
        }
        functions.GEN_STRCPY(CS_code, untrimmedline.csSiteSpecificFactor3)
        
        t_result = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_code_is_valid", t_schema_number, 12, 1, CS_code)
        
        if (t_result <= 0) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return false
        }
        
        return true

    }

    // ID: NAACCR-01553; TAG: N2413; NAME: CS Site-Specific Factor10, Schema (SEER)
    public boolean naaccr01553(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        char[] CS_code = new char[4]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10) || functions.GEN_EMPTY(untrimmedline.primarySite) || functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if ((dx_year > 2015) && (functions.GEN_EMPTY(untrimmedline.csExtension)) && (functions.GEN_INLIST(t_schema_name, "BileDuctsIntrahepatic"))) {
            return true
        }
        functions.GEN_STRCPY(CS_code, untrimmedline.csSiteSpecificFactor10)
        
        t_result = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_code_is_valid", t_schema_number, 19, 1, CS_code)
        
        if (t_result <= 0) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return false
        }
        
        return true

    }

    // ID: NAACCR-01554; TAG: N1676; NAME: Census Ind Code 2010 CDC (NPCR)
    public boolean naaccr01554(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.censusIndCode2010))
            return true
        if (!functions.GEN_INLIST(untrimmedline.censusIndCode2010, "0000-9999", "(\\d\\d\\d\\d)"))
            return false
        if (!functions.GEN_LOOKUP(untrimmedline.censusIndCode2010, context.NAACCR_IND_2010, context.NAACCR_IND_2010_CODE, [:]))
            return false
        
        return true

    }

    // ID: NAACCR-01555; TAG: N1677; NAME: Census Occ Code 2010 CDC (NPCR)
    public boolean naaccr01555(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.censusOccCode2010))
            return true
        if (!functions.GEN_INLIST(untrimmedline.censusOccCode2010, "0000-9999", "(\\d\\d\\d\\d)"))
            return false
        if (!functions.GEN_LOOKUP(untrimmedline.censusOccCode2010, context.NAACCR_OCC_2010, context.NAACCR_OCC_2010_CODE, [:]))
            return false
        
        return true

    }

    // ID: NAACCR-01557; TAG: N2060; NAME: County at DX Geocode2000 (NAACCR)
    public boolean naaccr01557(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.countyAtDxGeocode2000))
            return true
        return functions.GEN_INLIST(untrimmedline.countyAtDxGeocode2000, "001-997, 998, 999", "(\\d\\d\\d)")

    }

    // ID: NAACCR-01558; TAG: N2061; NAME: County at DX Geocode2010 (NAACCR)
    public boolean naaccr01558(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.countyAtDxGeocode2010))
            return true
        return functions.GEN_INLIST(untrimmedline.countyAtDxGeocode2010, "001-997, 998, 999", "(\\d\\d\\d)")

    }

    // ID: NAACCR-01559; TAG: N2062; NAME: County at DX Geocode2020 (NAACCR)
    public boolean naaccr01559(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.countyAtDxGeocode2020))
            return true
        return functions.GEN_INLIST(untrimmedline.countyAtDxGeocode2020, "001-970, 998, 999", "(\\d\\d\\d)")

    }

    // ID: NAACCR-01560; TAG: N2117; NAME: Derived SEER Clin Stg Grp (SEER)
    public boolean naaccr01560(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerClinStgGrp))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerClinStgGrp, "0-4", "(\\d\\s\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerClinStgGrp, "0A,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,88,99,OC", "([A-Za-z0-9][A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerClinStgGrp, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01561; TAG: N2118; NAME: Derived SEER Cmb M Src (SEER)
    public boolean naaccr01561(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCmbMSrc))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCmbMSrc, "1,2,3,9"))
            return true
        return false

    }

    // ID: NAACCR-01562; TAG: N2119; NAME: Derived SEER Cmb N Src (SEER)
    public boolean naaccr01562(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCmbNSrc))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCmbNSrc, "1,2,3,9"))
            return true
        return false

    }

    // ID: NAACCR-01563; TAG: N2120; NAME: Derived SEER Cmb Stg Grp (SEER)
    public boolean naaccr01563(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCmbStgGrp))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCmbStgGrp, "0-4", "(\\d\\s\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCmbStgGrp, "0A,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,88,99,OC", "([A-Za-z0-9][A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCmbStgGrp, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01564; TAG: N2121; NAME: Derived SEER Cmb T Src (SEER)
    public boolean naaccr01564(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCmbTSrc))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCmbTSrc, "1,2,3,9"))
            return true
        return false

    }

    // ID: NAACCR-01565; TAG: N2122; NAME: Derived SEER Combined M (SEER)
    public boolean naaccr01565(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedM)) {
            return true
        }
        if (!functions.GEN_JUSTIFIED(untrimmedline.derivedSeerCombinedM, ((Integer)context.NAACCR_GEN_LEFT)))
            return false
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedM, "88,c0,c0I+,c1,c1A,c1B,c1C,c1D,c1E,p1,p1A,p1B,p1C,p1D,p1E"))
            return true
        return false

    }

    // ID: NAACCR-01566; TAG: N2123; NAME: Derived SEER Combined N (SEER)
    public boolean naaccr01566(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedN)) {
            return true
        }
        if (!functions.GEN_JUSTIFIED(untrimmedline.derivedSeerCombinedN, ((Integer)context.NAACCR_GEN_LEFT))) {
            return false
        }
        if (functions.GEN_MATCH(untrimmedline.derivedSeerCombinedN, "(((c)|(p))0((I)|(M))((\\+)|(\\-))\\s)") || functions.GEN_MATCH(untrimmedline.derivedSeerCombinedN, "(((c)|(p))1MI\\s)")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedN, "cX,c0,c1MI,c0A,c0B,c1,c1A,c1B,c1C,c2,c2A") || functions.GEN_INLIST(untrimmedline.derivedSeerCombinedN, "c2B,c2C,c3,c3A,c3B,c3C,c4,pX,p0,p1MI,p0A") || functions.GEN_INLIST(untrimmedline.derivedSeerCombinedN, "p0B,p1,p1A,p1B,p1C,p2,p2A,p2B,p2C,p3,p3A,p3B,p3C,p4,88"))
            return true
        return false

    }

    // ID: NAACCR-01567; TAG: N2124; NAME: Derived SEER Combined T (SEER)
    public boolean naaccr01567(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedT))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "88"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "X,0-4", "(c[A-Za-z0-9]\\s\\s\\s)", 2, 4))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E", "(c[A-Za-z0-9][A-Za-z0-9]\\s\\s)", 2, 4))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "1A1,1A2,1B1,1B2,1MI,2A1,2A2", "(c[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)", 2, 4))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "X,A,0-4", "(p[A-Za-z0-9]\\s\\s\\s)", 2, 4))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "IS,1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E", "(p[A-Za-z0-9][A-Za-z0-9]\\s\\s)", 2, 4))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerCombinedT, "1A1,1A2,1B1,1B2,1MI,2A1,2A2, ISU, ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)", 2, 4))
            return true
        return false

    }

    // ID: NAACCR-01568; TAG: N2125; NAME: Derived SEER Path Stg Grp (SEER)
    public boolean naaccr01568(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.derivedSeerPathStgGrp))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerPathStgGrp, "0-4", "(\\d\\s\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerPathStgGrp, "0A,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,88,99,OC", "([A-Za-z0-9][A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.derivedSeerPathStgGrp, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01569; TAG: N2367; NAME: Lymphovascular Invasion, Date of Dx (SEER)
    public boolean naaccr01569(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2010))
            return true
        if (dx_year >= 2010 && dx_year <= 2017) {
            if ((functions.GEN_INLIST(untrimmedline.primarySite, "C600,C601,C602,C608,C609")) && (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8246,8248-8576,8940-8950,8980-8982"))) {
                if (functions.GEN_AT(untrimmedline.lymphVascularInvasion, "019", 1) == 0)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Lymphovascular Invasion: ${untrimmedline.lymphVascularInvasion} not valid for Primary Site: ${untrimmedline.primarySite}, Date of Diagnosis: ${untrimmedline.dateOfDiagnosis.formatDate()}')
            }
            else {
                if ((functions.GEN_INLIST(untrimmedline.primarySite, "C620,C621,C629")) && (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576,8590-8670,8940-8950,8980-8981,9060-9090,9100-9105"))) {
                    if (functions.GEN_AT(untrimmedline.lymphVascularInvasion, "019", 1) == 0)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Lymphovascular Invasion: ${untrimmedline.lymphVascularInvasion} not valid for Primary Site: ${untrimmedline.primarySite}, Date of Diagnosis: ${untrimmedline.dateOfDiagnosis.formatDate()}')
                }
                else {
                    if (!functions.GEN_EMPTY(untrimmedline.lymphVascularInvasion)) {
                        if (functions.GEN_AT(untrimmedline.lymphVascularInvasion, "0189", 1) == 0)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'Lymphovascular Invasion: ${untrimmedline.lymphVascularInvasion} not valid for Primary Site: ${untrimmedline.primarySite}, Date of Diagnosis: ${untrimmedline.dateOfDiagnosis.formatDate()}')
                    }
                }
            }
        }
        if (dx_year >= 2018) {
            if (functions.GEN_AT(untrimmedline.schemaId, "0057000590", 5) != 0) {
                if (functions.GEN_AT(untrimmedline.lymphVascularInvasion, "012349", 1) == 0)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Lymphovascular Invasion:${untrimmedline.lymphVascularInvasion} not valid for Schema ID: ${untrimmedline.schemaId}')
            }
            else {
                if (functions.GEN_AT(untrimmedline.lymphVascularInvasion, "0123489", 1) == 0)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Lymphovascular Invasion:${untrimmedline.lymphVascularInvasion} not valid for Schema ID: ${untrimmedline.schemaId}')
            }
        }
        return true

    }

    // ID: NAACCR-01570; TAG: N2427; NAME: Mets at DX-BBDLLO, HemeRetic (SEER)
    public boolean naaccr01570(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxBone) && functions.GEN_EMPTY(untrimmedline.metsAtDxBrain) && functions.GEN_EMPTY(untrimmedline.metsAtDxDistantLn) && functions.GEN_EMPTY(untrimmedline.metsAtDxLiver) && functions.GEN_EMPTY(untrimmedline.metsAtDxLung) && functions.GEN_EMPTY(untrimmedline.metsAtDxOther))
            return true
        char[] SiteGrp = new char[7]
        
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9740-9809,  9840-9992"))
            functions.GEN_STRCPY(SiteGrp, "Heme1")
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9820, 9826,9831-9834") && functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3))
            functions.GEN_STRCPY(SiteGrp, "Heme2")
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9823,9827") && functions.GEN_INLIST(untrimmedline.primarySite, "420,421,424", "(C\\d\\d\\d)", 2, 3))
            functions.GEN_STRCPY(SiteGrp, "Heme3")
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818,9837") && functions.GEN_INLIST(untrimmedline.primarySite, "420,421,424", "(C\\d\\d\\d)", 2, 3))
            functions.GEN_STRCPY(SiteGrp, "Heme4")
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9731,9732,9734") && functions.GEN_INLIST(untrimmedline.primarySite, "000-440, 442-689, 691-694,698-809", "(C\\d\\d\\d)", 2, 3))
            functions.GEN_STRCPY(SiteGrp, "Plasma")
        if (functions.GEN_INLIST(SiteGrp, "Heme4")) {
        
            if (functions.GEN_INLIST(untrimmedline.metsAtDxBone, "0,1,8,9") && functions.GEN_INLIST(untrimmedline.metsAtDxBrain, "0,1,8,9") && functions.GEN_INLIST(untrimmedline.metsAtDxDistantLn, "0,1,8,9") && functions.GEN_INLIST(untrimmedline.metsAtDxLiver, "0,1,8,9") && functions.GEN_INLIST(untrimmedline.metsAtDxLung, "0,1,8,9") && functions.GEN_INLIST(untrimmedline.metsAtDxOther, "0,1,2,8,9"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "Heme1,Heme2,Heme3,Plasma")) {
        
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxBone, "8"))
                return false
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxBrain, "8"))
                return false
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxDistantLn, "8"))
                return false
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxLiver, "8"))
                return false
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxLung, "8"))
                return false
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxOther, "8"))
                return false
        }
        else {
        
            if (functions.GEN_INLIST(untrimmedline.metsAtDxBone, "8"))
                return false
            if (functions.GEN_INLIST(untrimmedline.metsAtDxBrain, "8"))
                return false
            if (functions.GEN_INLIST(untrimmedline.metsAtDxDistantLn, "8"))
                return false
            if (functions.GEN_INLIST(untrimmedline.metsAtDxLiver, "8"))
                return false
            if (functions.GEN_INLIST(untrimmedline.metsAtDxLung, "8"))
                return false
            if (functions.GEN_INLIST(untrimmedline.metsAtDxOther, "8"))
                return false
        }
        
        return true

    }

    // ID: NAACCR-01571; TAG: N2126; NAME: Mets at DX-Bone (SEER)
    public boolean naaccr01571(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxBone))
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxBone, "0189", 1) == 0)
            return false
        
        return true

    }

    // ID: NAACCR-01572; TAG: N2051; NAME: Mets at DX-Bone, Date of Diagnosis (SEER)
    public boolean naaccr01572(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2015) {
            if (functions.GEN_EMPTY(untrimmedline.metsAtDxBone))
                return false
        }
        if (dx_year < 2016) {
            if (!(functions.GEN_EMPTY(untrimmedline.metsAtDxBone)))
                return false
        }
        return true

    }

    // ID: NAACCR-01573; TAG: N2186; NAME: Mets at DX-Bone, TNM Clin M, Path M (SEER)
    public boolean naaccr01573(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_STRCMP(untrimmedline.typeOfReportingSource, "7") == 0)
            return true
        if (functions.GEN_AT(untrimmedline.behaviorCodeIcdO3, "01", 1) != 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxBone))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_STRCMP(untrimmedline.tnmClinM, "88", 2) == 0 && functions.GEN_STRCMP(untrimmedline.tnmPathM, "88", 2) == 0)
            return true
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxBone, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmPathM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Bone=${untrimmedline.metsAtDxBone} and TNM Path M =${untrimmedline.tnmPathM}, TNM Clin M must not = ${untrimmedline.tnmClinM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxBone, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmClinM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Bone = ${untrimmedline.metsAtDxBone} and TNM Clin M = ${untrimmedline.tnmClinM}, TNM Path M must not = ${untrimmedline.tnmPathM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxBone, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0)
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Bone = ${untrimmedline.metsAtDxBone}, both TNM Clin M and TNM Path M must not = no metastasis')
        }
        return true

    }

    // ID: NAACCR-01574; TAG: N2128; NAME: Mets at DX-Brain (SEER)
    public boolean naaccr01574(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxBrain))
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxBrain, "0189", 1) == 0)
            return false
        
        return true

    }

    // ID: NAACCR-01575; TAG: N2129; NAME: Mets at DX-Brain, Date of Diagnosis (SEER)
    public boolean naaccr01575(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2015) {
            if (functions.GEN_EMPTY(untrimmedline.metsAtDxBrain))
                return false
        }
        if (dx_year < 2016) {
            if (!(functions.GEN_EMPTY(untrimmedline.metsAtDxBrain)))
                return false
        }
        return true

    }

    // ID: NAACCR-01576; TAG: N2187; NAME: Mets at DX-Brain, TNM Clin M, Path M (SEER)
    public boolean naaccr01576(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_STRCMP(untrimmedline.typeOfReportingSource, "7") == 0)
            return true
        if (functions.GEN_AT(untrimmedline.behaviorCodeIcdO3, "01", 1) != 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxBrain))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_STRCMP(untrimmedline.tnmClinM, "88", 2) == 0 && functions.GEN_STRCMP(untrimmedline.tnmPathM, "88", 2) == 0)
            return true
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxBrain, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmPathM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Brain=${untrimmedline.metsAtDxBrain} and TNM Path M =${untrimmedline.tnmPathM}, TNM Clin M must not = ${untrimmedline.tnmClinM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxBrain, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmClinM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Brain = ${untrimmedline.metsAtDxBrain} and TNM Clin M = ${untrimmedline.tnmClinM}, TNM Path M must not = ${untrimmedline.tnmPathM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxBrain, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0)
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Brain = ${untrimmedline.metsAtDxBrain}, both TNM Clin M and TNM Path M must not = no metastasis')
        }
        return true

    }

    // ID: NAACCR-01577; TAG: N2130; NAME: Mets at DX-Distant LN (SEER)
    public boolean naaccr01577(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxDistantLn))
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxDistantLn, "0189", 1) == 0)
            return false
        
        return true

    }

    // ID: NAACCR-01578; TAG: N2131; NAME: Mets at DX-Distant LN, Date of Diagnosis (SEER)
    public boolean naaccr01578(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2015) {
            if (functions.GEN_EMPTY(untrimmedline.metsAtDxDistantLn))
                return false
        }
        if (dx_year < 2016) {
            if (!(functions.GEN_EMPTY(untrimmedline.metsAtDxDistantLn)))
                return false
        }
        return true

    }

    // ID: NAACCR-01579; TAG: N2188; NAME: Mets at DX-Distant LN, TNM Clin M, Path M (SEER)
    public boolean naaccr01579(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_STRCMP(untrimmedline.typeOfReportingSource, "7") == 0)
            return true
        if (functions.GEN_AT(untrimmedline.behaviorCodeIcdO3, "01", 1) != 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxDistantLn))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_STRCMP(untrimmedline.tnmClinM, "88", 2) == 0 && functions.GEN_STRCMP(untrimmedline.tnmPathM, "88", 2) == 0)
            return true
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxDistantLn, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmPathM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at Dx-Distant LN=${untrimmedline.metsAtDxDistantLn} and TNM Path M =${untrimmedline.tnmPathM}, TNM Clin M must not = ${untrimmedline.tnmClinM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxDistantLn, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmClinM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at Dx-Distant LN = ${untrimmedline.metsAtDxDistantLn} and TNM Clin M = ${untrimmedline.tnmClinM}, TNM Path M must not = ${untrimmedline.tnmPathM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxDistantLn, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0)
                return functions.GEN_ERROR_MSG(binding, 'if Mets at Dx-Distant LN = ${untrimmedline.metsAtDxDistantLn}, both TNM Clin M and TNM Path M must not = no metastasis')
        }
        return true

    }

    // ID: NAACCR-01580; TAG: N2132; NAME: Mets at DX-Liver (SEER)
    public boolean naaccr01580(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxLiver))
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxLiver, "0189", 1) == 0)
            return false
        
        return true

    }

    // ID: NAACCR-01581; TAG: N2133; NAME: Mets at DX-Liver, Date of Diagnosis (SEER)
    public boolean naaccr01581(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2015) {
            if (functions.GEN_EMPTY(untrimmedline.metsAtDxLiver))
                return false
        }
        if (dx_year < 2016) {
            if (!(functions.GEN_EMPTY(untrimmedline.metsAtDxLiver)))
                return false
        }
        return true

    }

    // ID: NAACCR-01582; TAG: N2189; NAME: Mets at DX-Liver, TNM Clin M, Path M (SEER)
    public boolean naaccr01582(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_STRCMP(untrimmedline.typeOfReportingSource, "7") == 0)
            return true
        if (functions.GEN_AT(untrimmedline.behaviorCodeIcdO3, "01", 1) != 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxLiver))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_STRCMP(untrimmedline.tnmClinM, "88", 2) == 0 && functions.GEN_STRCMP(untrimmedline.tnmPathM, "88", 2) == 0)
            return true
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxLiver, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmPathM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Liver=${untrimmedline.metsAtDxLiver} and TNM Path M =${untrimmedline.tnmPathM}, TNM Clin M must not = ${untrimmedline.tnmClinM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxLiver, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmClinM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Liver = ${untrimmedline.metsAtDxLiver} and TNM Clin M = ${untrimmedline.tnmClinM}, TNM Path M must not = ${untrimmedline.tnmPathM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxLiver, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0)
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Liver = ${untrimmedline.metsAtDxLiver}, both TNM Clin M and TNM Path M must not = no metastasis')
        }
        return true

    }

    // ID: NAACCR-01583; TAG: N2134; NAME: Mets at DX-Lung (SEER)
    public boolean naaccr01583(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxLung))
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxLung, "0189", 1) == 0)
            return false
        
        return true

    }

    // ID: NAACCR-01584; TAG: N2135; NAME: Mets at DX-Lung, Date of Diagnosis (SEER)
    public boolean naaccr01584(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2015) {
            if (functions.GEN_EMPTY(untrimmedline.metsAtDxLung))
                return false
        }
        if (dx_year < 2016) {
            if (!(functions.GEN_EMPTY(untrimmedline.metsAtDxLung)))
                return false
        }
        return true

    }

    // ID: NAACCR-01585; TAG: N2190; NAME: Mets at DX-Lung, TNM Clin M, Path M (SEER)
    public boolean naaccr01585(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_STRCMP(untrimmedline.typeOfReportingSource, "7") == 0)
            return true
        if (functions.GEN_AT(untrimmedline.behaviorCodeIcdO3, "01", 1) != 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxLung))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_STRCMP(untrimmedline.tnmClinM, "88", 2) == 0 && functions.GEN_STRCMP(untrimmedline.tnmPathM, "88", 2) == 0)
            return true
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxLung, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmPathM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Lung=${untrimmedline.metsAtDxLung} and TNM Path M =${untrimmedline.tnmPathM}, TNM Clin M must not = ${untrimmedline.tnmClinM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxLung, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmClinM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Lung = ${untrimmedline.metsAtDxLung} and TNM Clin M = ${untrimmedline.tnmClinM}, TNM Path M must not = ${untrimmedline.tnmPathM}')
        }
        if (functions.GEN_STRCMP(untrimmedline.metsAtDxLung, "1") == 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0)
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Lung = ${untrimmedline.metsAtDxLung}, both TNM Clin M and TNM Path M must not = no metastasis')
        }
        return true

    }

    // ID: NAACCR-01587; TAG: N2136; NAME: Mets at DX-Other (SEER)
    public boolean naaccr01587(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxOther))
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxOther, "01289", 1) == 0)
            return false
        
        return true

    }

    // ID: NAACCR-01588; TAG: N2137; NAME: Mets at DX-Other, Date of Diagnosis (SEER)
    public boolean naaccr01588(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2015) {
            if (functions.GEN_EMPTY(untrimmedline.metsAtDxOther))
                return false
        }
        if (dx_year < 2016) {
            if (!(functions.GEN_EMPTY(untrimmedline.metsAtDxOther)))
                return false
        }
        return true

    }

    // ID: NAACCR-01590; TAG: N2191; NAME: Mets at DX-Other, TNM Clin M, Path M (SEER)
    public boolean naaccr01590(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR) || dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_STRCMP(untrimmedline.typeOfReportingSource, "7") == 0)
            return true
        if (functions.GEN_AT(untrimmedline.behaviorCodeIcdO3, "01", 1) != 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxOther))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_STRCMP(untrimmedline.tnmClinM, "88", 2) == 0 && functions.GEN_STRCMP(untrimmedline.tnmPathM, "88", 2) == 0)
            return true
        if (functions.GEN_AT(untrimmedline.metsAtDxOther, "12", 1) != 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmPathM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Other=${untrimmedline.metsAtDxOther} and TNM Path M =${untrimmedline.tnmPathM}, TNM Clin M must not = ${untrimmedline.tnmClinM}')
        }
        if (functions.GEN_AT(untrimmedline.metsAtDxOther, "12", 1) != 0) {
            if (functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0 && functions.GEN_EMPTY(untrimmedline.tnmClinM))
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Other = ${untrimmedline.metsAtDxOther} and TNM Clin M = ${untrimmedline.tnmClinM}, TNM Path M must not = ${untrimmedline.tnmPathM}')
        }
        if (functions.GEN_AT(untrimmedline.metsAtDxOther, "12", 1) != 0) {
            if (functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+") != 0 && functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+") != 0)
                return functions.GEN_ERROR_MSG(binding, 'if Mets at DX-Other = ${untrimmedline.metsAtDxOther}, both TNM Clin M and TNM Path M must not = no metastasis')
        }
        return true

    }

    // ID: NAACCR-01591; TAG: N2138; NAME: NPCR Derived C Stg Grp, Date of Diagnosis (NPCR)
    public boolean naaccr01591(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7,6"))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.npcrDerivedClinStgGrp))
                return false
        }
        return true

    }

    // ID: NAACCR-01592; TAG: N2139; NAME: NPCR Derived Clin Stg Grp (NPCR)
    public boolean naaccr01592(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.npcrDerivedClinStgGrp))
            return true
        if (functions.GEN_INLIST(untrimmedline.npcrDerivedClinStgGrp, "0-4", "(\\d\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.npcrDerivedClinStgGrp, "0A,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,OC,88,99", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.npcrDerivedClinStgGrp, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01593; TAG: N2140; NAME: NPCR Derived P Stg Grp, Date of Diagnosis (NPCR)
    public boolean naaccr01593(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7,6"))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.npcrDerivedPathStgGrp))
                return false
        }
        return true

    }

    // ID: NAACCR-01594; TAG: N2141; NAME: NPCR Derived Path Stg Grp (NPCR)
    public boolean naaccr01594(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.npcrDerivedPathStgGrp))
            return true
        if (functions.GEN_INLIST(untrimmedline.npcrDerivedPathStgGrp, "0-4", "(\\d\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.npcrDerivedPathStgGrp, "0A,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,OC,88,99", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.npcrDerivedPathStgGrp, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01595; TAG: N2332; NAME: Primary Site, AJCC Stage Group - Ed 7 (COC)
    public boolean naaccr01595(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year < 2010 || dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
            if (functions.GEN_VAL(untrimmedline.ageAtDiagnosis) > 24)
                return functions.GEN_ERROR_MSG(binding, 'Over-ride applies only to pediatric cases (ages less than 25)')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3") || (functions.GEN_INLIST(untrimmedline.grade, "9") && !functions.GEN_INLIST(untrimmedline.gradePathValue, "4"))) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4") || (functions.GEN_INLIST(untrimmedline.grade, "9") && functions.GEN_INLIST(untrimmedline.gradePathValue, "4")))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3") || (functions.GEN_INLIST(untrimmedline.grade, "9") && !functions.GEN_INLIST(untrimmedline.gradePathValue, "4")))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4") || (functions.GEN_INLIST(untrimmedline.grade, "9") && functions.GEN_INLIST(untrimmedline.gradePathValue, "4")))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4") || (functions.GEN_INLIST(untrimmedline.grade, "9") && functions.GEN_INLIST(untrimmedline.gradePathValue, "4")))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "420,421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9837"))
                            functions.GEN_STRCPY(SiteGrp, "57A")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "57A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818,9837"))
                functions.GEN_STRCPY(SiteGrp, "57C")
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        functions.GEN_STRCPY(GrpStg, SiteGrp)
        
        functions.GEN_STRCAT(GrpStg, untrimmedline.tnmClinStageGroup)
        
        if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_AJC7STGC, context.NAACCR_AJC7STGC_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group is invalid for site/hist combination')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        functions.GEN_STRCPY(GrpStg, SiteGrp)
        
        functions.GEN_STRCAT(GrpStg, untrimmedline.tnmPathStageGroup)
        
        if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_AJC7STGP, context.NAACCR_AJC7STGP_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01596; TAG: N2333; NAME: Primary Site, AJCC Stage Group - Ed 7 (NPCR)
    public boolean naaccr01596(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2014 || dx_year > 2015)
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
            if (functions.GEN_VAL(untrimmedline.ageAtDiagnosis) > 24)
                return functions.GEN_ERROR_MSG(binding, 'Over-ride applies only to pediatric cases (ages less than 25)')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "420,421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9837"))
                            functions.GEN_STRCPY(SiteGrp, "57A")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "57A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818,9837"))
                functions.GEN_STRCPY(SiteGrp, "57C")
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) {
            functions.GEN_STRCPY(GrpStg, SiteGrp)
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmClinStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_AJC7STGC, context.NAACCR_AJC7STGC_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        functions.GEN_STRCPY(GrpStg, SiteGrp)
        
        functions.GEN_STRCAT(GrpStg, untrimmedline.tnmPathStageGroup)
        
        if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_AJC7STGP, context.NAACCR_AJC7STGP_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01597; TAG: N2208; NAME: Primary Site, AJCC Stage Group 2016 - Ed 7 (COC)
    public boolean naaccr01597(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
            if (functions.GEN_VAL(untrimmedline.ageAtDiagnosis) > 24)
                return functions.GEN_ERROR_MSG(binding, 'Over-ride applies only to pediatric cases (ages less than 25)')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "05B") && functions.GEN_INLIST(untrimmedline.primarySite, "328,329", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) {
            functions.GEN_STRCPY(GrpStg, SiteGrp)
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmClinStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_CC7C2016, context.NAACCR_CC7C2016_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group is invalid for site/hist combination')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)) {
        
            functions.GEN_STRCPY(GrpStg, SiteGrp)
        
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmPathStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_CC7P2016, context.NAACCR_CC7P2016_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group is invalid for site/hist combination')
            }
        }
        return true

    }

    // ID: NAACCR-01598; TAG: N2336; NAME: Primary Site, M 2016 - Ed 7 (COC)
    public boolean naaccr01598(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPMCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpMCode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinM)) && (functions.GEN_INLIST(untrimmedline.tnmPathM, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathM)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727, 9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "490-499", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8934,8940-9044,9060-9136,9141-9582"))
                            functions.GEN_STRCPY(SiteGrp, "028")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "05B") && functions.GEN_INLIST(untrimmedline.primarySite, "328,329", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinM)) {
            functions.GEN_STRCPY(t_GrpMCode, SiteGrp)
            functions.GEN_STRCAT(t_GrpMCode, untrimmedline.tnmClinM)
        
            if (!functions.GEN_LOOKUP(t_GrpMCode, context.NAACCR_NP7M2016, context.NAACCR_NP7M2016_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(t_GrpMCode, SiteGrp)
        
        functions.GEN_STRCAT(t_GrpMCode, untrimmedline.tnmPathM)
        
        if (!functions.GEN_LOOKUP(t_GrpMCode, context.NAACCR_NP7M2016, context.NAACCR_NP7M2016_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01599; TAG: N2337; NAME: Primary Site, M 2016 - Ed 7 (SEER)
    public boolean naaccr01599(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPMCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpMCode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinM, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinM)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathM, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathM)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "490-499", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8934,8940-9044,9060-9136,9141-9582"))
                            functions.GEN_STRCPY(SiteGrp, "028")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinM)) {
            functions.GEN_STRCPY(t_GrpMCode, SiteGrp)
            functions.GEN_STRCAT(t_GrpMCode, untrimmedline.tnmClinM)
        
            if (!functions.GEN_LOOKUP(t_GrpMCode, context.NAACCR_SR7M2016, context.NAACCR_SR7M2016_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(t_GrpMCode, SiteGrp)
        
        functions.GEN_STRCAT(t_GrpMCode, untrimmedline.tnmPathM)
        
        if (!functions.GEN_LOOKUP(t_GrpMCode, context.NAACCR_SR7M2016, context.NAACCR_SR7M2016_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01600; TAG: N2206; NAME: Primary Site, N 2016 - Ed 7 (COC)
    public boolean naaccr01600(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpNcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN) && functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinN)) && (functions.GEN_INLIST(untrimmedline.tnmPathN, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathN)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "05B") && functions.GEN_INLIST(untrimmedline.primarySite, "328,329", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
            functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmClinN)
        
            if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_NP7NCL16, context.NAACCR_NP7NCL16_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
        
        functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmPathN)
        
        if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_NP7NPA16, context.NAACCR_NP7NPA16_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01601; TAG: N2207; NAME: Primary Site, N 2016 - Ed 7 (SEER)
    public boolean naaccr01601(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpNcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinN, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinN)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathN, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathN)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN) && functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
            functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmClinN)
        
            if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_SR7NCL16, context.NAACCR_SR7NCL16_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
        
        functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmPathN)
        
        if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_SR7NPA16, context.NAACCR_SR7NPA16_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01602; TAG: N2302; NAME: Primary Site, Stage Group 2016 - Ed 7 (NPCR)
    public boolean naaccr01602(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && !functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return functions.GEN_ERROR_MSG(binding, 'If Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, if TNM Clin Stage Group or TNM Path Stage Group is coded 88, both should be coded 88')
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") && !functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88"))
                return functions.GEN_ERROR_MSG(binding, 'If Type of Reporting Source = ${untrimmedline.typeOfReportingSource}, if TNM Clin Stage Group or TNM Path Stage Group is coded 88, both should be coded 88')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
            if (functions.GEN_VAL(untrimmedline.ageAtDiagnosis) > 24)
                return functions.GEN_ERROR_MSG(binding, 'Over-ride applies only to pediatric cases (ages less than 25)')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "05B") && functions.GEN_INLIST(untrimmedline.primarySite, "328,329", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && !functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            functions.GEN_STRCPY(GrpStg, SiteGrp)
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmClinStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_CC7C2016, context.NAACCR_CC7C2016_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group is invalid for site/hist combination')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup) && !functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
        
            functions.GEN_STRCPY(GrpStg, SiteGrp)
        
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmPathStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_CC7P2016, context.NAACCR_CC7P2016_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group is invalid for site/hist combination')
            }
        }
        return true

    }

    // ID: NAACCR-01603; TAG: N2209; NAME: Primary Site, Stage Group 2016 - Ed 7 (SEER)
    public boolean naaccr01603(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
            if (functions.GEN_VAL(untrimmedline.ageAtDiagnosis) > 24)
                return functions.GEN_ERROR_MSG(binding, 'Over-ride applies only to pediatric cases (ages less than 25)')
        }
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) {
            functions.GEN_STRCPY(GrpStg, SiteGrp)
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmClinStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_SR7C2016, context.NAACCR_SR7C2016_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group is invalid for site/hist combination')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)) {
        
            functions.GEN_STRCPY(GrpStg, SiteGrp)
        
            functions.GEN_STRCAT(GrpStg, untrimmedline.tnmPathStageGroup)
        
            if (!functions.GEN_LOOKUP(GrpStg, context.NAACCR_SR7P2016, context.NAACCR_SR7P2016_GRPSTAGE, ['GRPSTAGE':GRPSTAGE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group is invalid for site/hist combination')
            }
        }
        return true

    }

    // ID: NAACCR-01604; TAG: N2211; NAME: Primary Site, T 2016 - Ed 7 (COC)
    public boolean naaccr01604(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpTcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinT)) && (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathT)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "046")) {
                                                    if (functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "46A")
                                                    else
                                                        functions.GEN_STRCPY(SiteGrp, "46B")
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                                else {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51B")
                                                                    else
                                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "05B") && functions.GEN_INLIST(untrimmedline.primarySite, "328,329", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
            functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmClinT)
        
            if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_NP7TCL16, context.NAACCR_NP7TCL16_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
        
        functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmPathT)
        
        if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_NP7TPA16, context.NAACCR_NP7TPA16_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01605; TAG: N2212; NAME: Primary Site, T 2016 - Ed 7 (SEER)
    public boolean naaccr01605(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpTcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinT)) && (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathT)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "046")) {
                                                    if (functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "46A")
                                                    else
                                                        functions.GEN_STRCPY(SiteGrp, "46B")
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                                else {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51B")
                                                                    else
                                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
            functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmClinT)
        
            if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_SR7TCL16, context.NAACCR_SR7TCL16_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
        
        functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmPathT)
        
        if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_SR7TPA16, context.NAACCR_SR7TPA16_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01606; TAG: N2213; NAME: Primary Site, TNM Clin Stage Valid A-Ed 7 (COC)
    public boolean naaccr01606(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] CLINT = new char[5], CLINN = new char[5], CLINM = new char[5], CLINSPEC = new char[8], CLINSTAGE = new char[6], GPCTNM = new char[100], GPCTNMSP = new char[100], GPCTNMSPST = new char[100], GPCTNMST = new char[100]
        char[] PATHT = new char[100], PATHN = new char[100], PATHM = new char[100], PATHSPEC = new char[100], PATHSTAGE = new char[100], GPPTNM = new char[100], GPPTNMSP = new char[100], GPPTNMSPST = new char[100], GPPTNMST = new char[100]
        char[] CLINTNM = new char[100], PATHTNM = new char[100], SSF13 = new char[100], SSF15 = new char[100], SSF16 = new char[100], STESTIS = new char[100], TESTISSSF = new char[100]
        
        char[] cT = new char[5]
        char[] cN = new char[5]
        char[] cM = new char[5]
        char[] pT = new char[5]
        char[] pN = new char[5]
        char[] pM = new char[5]
        char[] Spec = new char[8]
        char[] SValue = new char[6]
        char[] SSFTestis = new char[10]
        int req_flag
        int dx_year
        
        char[] st_msg = new char[79]
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        char[] t_CLINTNM = new char[18] /*group code TNM*/
        
        char[] t_CLINTNMSP = new char[25] /*group code TNM spec*/
        
        char[] t_PATHTNM = new char[18] /*group code TNM*/
        
        char[] t_PATHTNMSP = new char[25] /*group code TNM spec*/
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7, 88"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmTis, "1") == 0 && functions.GEN_INLIST(untrimmedline.tnmClinT, "pIS,p0A,pISU,pISD"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmStage, "1") == 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_EMPTY(untrimmedline.tnmClinN) || functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "10A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8050, 8140-8147, 8160-8162, 8170-8175, 8180-8221, 8250-8507") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8514-8551,8571-8574, 8576, 8940-8941"))
                functions.GEN_STRCPY(SiteGrp, "10C")
        }
        if (functions.GEN_INLIST(SiteGrp, "10A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8046, 8051-8131, 8148-8157, 8230-8249, 8508") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8510-8513, 8560-8570, 8575, 8905, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c2, c3") && functions.GEN_INLIST(untrimmedline.tnmClinN, "c0") && functions.GEN_INLIST(untrimmedline.tnmClinM, "c0")) {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "150, 151, 153, 154", "(C\\d\\d\\d)", 2, 3))
                        functions.GEN_STRCPY(SiteGrp, "10E")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "152,155,158,159", "(C\\d\\d\\d)", 2, 3))
                            functions.GEN_STRCPY(SiteGrp, "10H")
                    }
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "10D")
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "10B")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8050, 8140-8147, 8160-8162, 8170-8175, 8180-8221, 8250-8507") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8514-8551,8571-8574, 8576, 8940-8941"))
                functions.GEN_STRCPY(SiteGrp, "10F")
        }
        if (functions.GEN_INLIST(SiteGrp, "10B")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8046, 8051-8131, 8148-8157, 8230-8249, 8508") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8510-8513, 8560-8570, 8575, 8905, 8980-8981"))
                functions.GEN_STRCPY(SiteGrp, "10G")
        }
        if (functions.GEN_INLIST(SiteGrp, "027")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9260, 9364"))
                functions.GEN_STRCPY(SiteGrp, "27B")
            else
                functions.GEN_STRCPY(SiteGrp, "27A")
        }
        if (!functions.GEN_INLIST(SiteGrp, "003,04A,04B,04C,04D,05A,05B,08A,08B,08C,08D,08E,08F,009") && !functions.GEN_INLIST(SiteGrp, "10A,10C,10D,10E,10H,10F,10G,011,012,13A,13B,014,015,16A") && !functions.GEN_INLIST(SiteGrp, "16B,17A,17B,17C,018,019,021,022,023,024,025,026,27A,27B"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "88")) {
            functions.GEN_STRCPY(cM, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
            functions.GEN_STRCAT(cM, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88"))
            functions.GEN_STRCPY(cM, untrimmedline.tnmClinM)
        if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "88")) {
            functions.GEN_STRCPY(cN, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
            functions.GEN_STRCAT(cN, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
            functions.GEN_STRCPY(cN, untrimmedline.tnmClinN)
        if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "88")) {
            functions.GEN_STRCPY(cT, functions.GEN_SUBSTR(untrimmedline.tnmClinT, 2, 3))
            functions.GEN_STRCAT(cT, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            functions.GEN_STRCPY(cT, untrimmedline.tnmClinT)
        if (functions.GEN_INLIST(SiteGrp, "13A")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "010, 011"))
                functions.GEN_STRCPY(Spec, "C1")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "020, 021"))
                functions.GEN_STRCPY(Spec, "C2")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "030"))
                functions.GEN_STRCPY(Spec, "C3")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "040"))
                functions.GEN_STRCPY(Spec, "C4")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988, 998, 999"))
                functions.GEN_STRCPY(Spec, "CX")
        }
        if (functions.GEN_INLIST(SiteGrp, "028")) {
            if (functions.GEN_INLIST(untrimmedline.grade, "2"))
                functions.GEN_STRCPY(Spec, "2")
            else {
                if (functions.GEN_INLIST(untrimmedline.grade, "3"))
                    functions.GEN_STRCPY(Spec, "3")
                else {
                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                        functions.GEN_STRCPY(Spec, "4")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "9"))
                            functions.GEN_STRCPY(Spec, "9")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "10C,10D,10E,10F,10G,10H, 27A")) {
            if (functions.GEN_INLIST(untrimmedline.grade, "1"))
                functions.GEN_STRCPY(Spec, "1")
            if (functions.GEN_INLIST(untrimmedline.grade, "2"))
                functions.GEN_STRCPY(Spec, "2")
            else {
                if (functions.GEN_INLIST(untrimmedline.grade, "3"))
                    functions.GEN_STRCPY(Spec, "3")
                else {
                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                        functions.GEN_STRCPY(Spec, "3")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "9"))
                            functions.GEN_STRCPY(Spec, "9")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "16A")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "160-169", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "051-100,110,991"))
                    functions.GEN_STRCPY(Spec, "High")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "000-050,988,990"))
                        functions.GEN_STRCPY(Spec, "Low")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "996,998,999"))
                            functions.GEN_STRCPY(Spec, "Unknown")
                    }
                }
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3)) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "051-100,110,991"))
                        functions.GEN_STRCPY(Spec, "High")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000-050,988,990"))
                            functions.GEN_STRCPY(Spec, "Low")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "996,998,999"))
                                functions.GEN_STRCPY(Spec, "Unknown")
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "16B")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "150-159, 170-179", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "051-100,110, 991"))
                    functions.GEN_STRCPY(Spec, "High")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "000-050, 988, 990"))
                        functions.GEN_STRCPY(Spec, "Low")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "996, 998, 999"))
                            functions.GEN_STRCPY(Spec, "Unknown")
                    }
                }
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "180-189, 199, 209", "(C\\d\\d\\d)", 2, 3)) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "051-100,110, 991"))
                        functions.GEN_STRCPY(Spec, "High")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "000-050, 988, 990"))
                            functions.GEN_STRCPY(Spec, "Low")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "996, 998, 999"))
                                functions.GEN_STRCPY(Spec, "Unknown")
                        }
                    }
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3)) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "051-100,110, 991"))
                            functions.GEN_STRCPY(Spec, "High")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000-050, 988, 990"))
                                functions.GEN_STRCPY(Spec, "Low")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "996, 998, 999"))
                                    functions.GEN_STRCPY(Spec, "Unknown")
                            }
                        }
                    }
                }
            }
        }
        functions.GEN_STRCPY(t_CLINTNM, SiteGrp)
        functions.GEN_STRCAT(t_CLINTNM, cT)
        functions.GEN_STRCAT(t_CLINTNM, cN)
        functions.GEN_STRCAT(t_CLINTNM, cM)
        
        if (functions.GEN_INLIST(SiteGrp, "025")) {
            if (functions.GEN_INLIST(cT, "X") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "99")) {
                return true
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "16A,16B") && functions.GEN_INLIST(Spec, "Unknown") && functions.GEN_INLIST(cT, "1,2,3,4") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0")) {
            return true
        }
        if (functions.GEN_INLIST(SiteGrp, "13A") && functions.GEN_INLIST(Spec, "C2,C3,C4") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "1A") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "4A")) {
            return true
        }
        if (functions.GEN_INLIST(SiteGrp, "27A") && functions.GEN_INLIST(Spec, "3,4") && functions.GEN_INLIST(cT, "2,3") && functions.GEN_INLIST(cN, "0,X") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1B"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "27A") && functions.GEN_INLIST(Spec, "3,4") && functions.GEN_INLIST(cT, "1") && functions.GEN_INLIST(cN, "0,X") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1A")) {
            return true
        }
        if (functions.GEN_INLIST(SiteGrp, "16A") && functions.GEN_INLIST(Spec, "High") && functions.GEN_INLIST(cT, "1,2") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1A"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "16A") && functions.GEN_INLIST(Spec, "High") && functions.GEN_INLIST(cT, "3") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1B"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "16A") && functions.GEN_INLIST(Spec, "High") && functions.GEN_INLIST(cT, "4") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "2"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "16B") && functions.GEN_INLIST(Spec, "High") && functions.GEN_INLIST(cT, "1,2") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "16B") && functions.GEN_INLIST(Spec, "High") && functions.GEN_INLIST(cT, "3") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "2"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "16B") && functions.GEN_INLIST(Spec, "High") && functions.GEN_INLIST(cT, "4") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "3A")) {
            return true
        }
        if (functions.GEN_INLIST(SiteGrp, "10C,10D,10E,10F,10H,10G") && functions.GEN_INLIST(Spec, "2,3,4") && functions.GEN_INLIST(cT, "IS") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10C,10F") && functions.GEN_INLIST(Spec, "3,4") && functions.GEN_INLIST(cT, "1A,1B,1") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1A"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10C,10F") && functions.GEN_INLIST(Spec, "3,4") && functions.GEN_INLIST(cT, "2") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1B"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10D,10G") && functions.GEN_INLIST(Spec, "2,3,4") && functions.GEN_INLIST(cT, "1A,1B,1") && functions.GEN_INLIST(cN, "0") && functions.GEN_INLIST(cM, "0") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1A"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10E") && functions.GEN_INLIST(Spec, "2,3,4") && functions.GEN_INLIST(cT, "2,3") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "2A"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10H") && functions.GEN_INLIST(Spec, "2,3,4") && functions.GEN_INLIST(cT, "2,3") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1B"))
            return true
        functions.GEN_STRCPY(st_msg, "Set OR TNM 1 or OR TNM Tis to 1 if codes reviewed and confirmed to be correct")
        
        if (functions.GEN_INLIST(SiteGrp, "10C, 10D, 10E, 10F, 10G, 10H, 13A, 16A, 16B, 27A")) {
            functions.GEN_STRCPY(t_CLINTNMSP, t_CLINTNM)
            functions.GEN_STRCAT(t_CLINTNMSP, Spec)
        
            if (functions.GEN_LOOKUP(t_CLINTNMSP, context.NAACCR_CLST7VAL, context.NAACCR_CLST7VAL_GPCTNMSP, ['GPCODE':GPCODE, 'CLINT':CLINT, 'CLINSTAGE':CLINSTAGE, 'GPCTNM':GPCTNM, 'GPCTNMSP':GPCTNMSP])) {
                if (functions.GEN_STRCMP(CLINSTAGE, "ERROR") == 0) {
                    functions.GEN_SAVE_TEXT(binding, st_msg)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM}, staging parameter for ${untrimmedline.primarySite}, invalid forTNM staging')
                }
                else {
                    if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmClinStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), CLINSTAGE) != 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM}, staging parameter for ${untrimmedline.primarySite}, inconsistent with TNM stage ${untrimmedline.tnmClinStageGroup}')
                    }
                }
            }
        }
        else {
            if (!functions.GEN_INLIST(SiteGrp, "10C, 10D, 10E, 10F, 10G, 10H, 13A, 16A, 16B, 27A")) {
                if (functions.GEN_LOOKUP(t_CLINTNM, context.NAACCR_CLST7VAL, context.NAACCR_CLST7VAL_GPCTNM, ['GPCODE':GPCODE, 'CLINT':CLINT, 'CLINSTAGE':CLINSTAGE, 'GPCTNM':GPCTNM, 'GPCTNMSP':GPCTNMSP])) {
                    if (functions.GEN_STRCMP(CLINSTAGE, "ERROR") == 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination of T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM} is invalid for TNM staging')
                    }
                    else {
                        if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmClinStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), CLINSTAGE) != 0) {
                            functions.GEN_SAVE_TEXT(binding, st_msg)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'Inconsistency between TNM categories T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM} and assigned TNM stage ${untrimmedline.tnmClinStageGroup}')
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01607; TAG: N2214; NAME: Primary Site, TNM Clin Stage Valid B-Ed 7 (COC)
    public boolean naaccr01607(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] CLINT = new char[5], CLINN = new char[5], CLINM = new char[5], CLINSPEC = new char[8], CLINSTAGE = new char[6], GPCTNM = new char[100], GPCTNMSP = new char[100], GPCTNMSPST = new char[100], GPCTNMST = new char[100]
        char[] PATHT = new char[100], PATHN = new char[100], PATHM = new char[100], PATHSPEC = new char[100], PATHSTAGE = new char[100], GPPTNM = new char[100], GPPTNMSP = new char[100], GPPTNMSPST = new char[100], GPPTNMST = new char[100]
        char[] CLINTNM = new char[100], PATHTNM = new char[100], SSF13 = new char[4], SSF15 = new char[4], SSF16 = new char[4], STESTIS = new char[6], TESTISSSF = new char[100]
        
        char[] cT = new char[5]
        char[] cN = new char[5]
        char[] cM = new char[5]
        char[] pT = new char[5]
        char[] pN = new char[5]
        char[] pM = new char[5]
        char[] Spec = new char[8]
        char[] SValue = new char[6]
        char[] SSFTestis = new char[10]
        int req_flag
        int dx_year
        
        char[] st_msg = new char[79]
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        char[] t_CLINTNM = new char[18] /*group code TNM*/
        
        char[] t_CLINTNMSP = new char[25] /*group code TNM spec*/
        
        char[] t_PATHTNM = new char[18] /*group code TNM*/
        
        char[] t_PATHTNMSP = new char[25] /*group code TNM spec*/
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07, U7, 88"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmTis, "1") == 0 && functions.GEN_INLIST(untrimmedline.tnmClinT, "pIS,p0A,pISU,pISD"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmStage, "1") == 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "041")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "001-099"))
                functions.GEN_STRCPY(SiteGrp, "41B")
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "100-199"))
                    functions.GEN_STRCPY(SiteGrp, "41C")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "200-980"))
                        functions.GEN_STRCPY(SiteGrp, "41D")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988, 997, 998, 999"))
                            functions.GEN_STRCPY(SiteGrp, "41A")
                    }
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "029,030,031,032,033,034,035,36A,36B,36C,37A,37B,038,039") && !functions.GEN_INLIST(SiteGrp, "040,41A,41B,41C,41D,042,043,044,045,046,47A,47B,048,049") && !functions.GEN_INLIST(SiteGrp, "51A,51B,052,053,054,055,057,57B"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "88")) {
            functions.GEN_STRCPY(cM, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
            functions.GEN_STRCAT(cM, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88"))
            functions.GEN_STRCPY(cM, untrimmedline.tnmClinM)
        if (!functions.GEN_INLIST(SiteGrp, "039")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "88")) {
                functions.GEN_STRCPY(cN, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
                functions.GEN_STRCAT(cN, " ")
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "039")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
                functions.GEN_STRCPY(cN, "88  ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
            functions.GEN_STRCPY(cN, untrimmedline.tnmClinN)
        if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "88")) {
            functions.GEN_STRCPY(cT, functions.GEN_SUBSTR(untrimmedline.tnmClinT, 2, 3))
            functions.GEN_STRCAT(cT, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            functions.GEN_STRCPY(cT, untrimmedline.tnmClinT)
        if (functions.GEN_INLIST(SiteGrp, "042")) {
            functions.GEN_STRCPY(SSFTestis, untrimmedline.csSiteSpecificFactor13)
            functions.GEN_STRCAT(SSFTestis, untrimmedline.csSiteSpecificFactor15)
            functions.GEN_STRCAT(SSFTestis, untrimmedline.csSiteSpecificFactor16)
        
            if (functions.GEN_LOOKUP(SSFTestis, context.NAACCR_SVALTEST, context.NAACCR_SVALTEST_TESTISSSF, ['STESTIS':STESTIS, 'TESTISSSF':TESTISSSF]))
                functions.GEN_STRCPY(SValue, STESTIS)
            if (functions.GEN_INLIST(SValue, "S0"))
                functions.GEN_STRCPY(Spec, "S0")
            else {
                if (functions.GEN_INLIST(SValue, "S1"))
                    functions.GEN_STRCPY(Spec, "S1")
                else {
                    if (functions.GEN_INLIST(SValue, "S2"))
                        functions.GEN_STRCPY(Spec, "S2")
                    else {
                        if (functions.GEN_INLIST(SValue, "S3"))
                            functions.GEN_STRCPY(Spec, "S3")
                        else {
                            if (functions.GEN_INLIST(SValue, "SX"))
                                functions.GEN_STRCPY(Spec, "SX")
                            else {
                                if (functions.GEN_INLIST(SValue, "ERROR"))
                                    functions.GEN_STRCPY(Spec, "ERROR")
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "039")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "000"))
                functions.GEN_STRCPY(Spec, "000")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010"))
                functions.GEN_STRCPY(Spec, "010")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "050"))
                functions.GEN_STRCPY(Spec, "050")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "110"))
                functions.GEN_STRCPY(Spec, "110")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "150"))
                functions.GEN_STRCPY(Spec, "150")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "200"))
                functions.GEN_STRCPY(Spec, "200")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
                functions.GEN_STRCPY(Spec, "988")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "999"))
                functions.GEN_STRCPY(Spec, "999")
        }
        if (functions.GEN_INLIST(SiteGrp, "57B")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "030"))
                functions.GEN_STRCPY(Spec, "B0NOS")
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010"))
                    functions.GEN_STRCPY(Spec, "B0a")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "020"))
                        functions.GEN_STRCPY(Spec, "B0b")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "060"))
                            functions.GEN_STRCPY(Spec, "B1NOS")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "040"))
                                functions.GEN_STRCPY(Spec, "B1a")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "050"))
                                    functions.GEN_STRCPY(Spec, "B1b")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "070"))
                                        functions.GEN_STRCPY(Spec, "B2")
                                    else {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "080, 090, 988,  997, 999"))
                                            functions.GEN_STRCPY(Spec, "BX")
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        functions.GEN_STRCPY(t_CLINTNM, SiteGrp)
        functions.GEN_STRCAT(t_CLINTNM, cT)
        functions.GEN_STRCAT(t_CLINTNM, cN)
        functions.GEN_STRCAT(t_CLINTNM, cM)
        
        if (functions.GEN_INLIST(SiteGrp, "41B,41C,41D,41A")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "002, 003,004, 005, 006"))
                functions.GEN_STRCPY(Spec, "1")
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "007"))
                    functions.GEN_STRCPY(Spec, "2")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "008, 009, 010"))
                        functions.GEN_STRCPY(Spec, "3")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988, 998, 999"))
                            functions.GEN_STRCPY(Spec, "9")
                    }
                }
            }
        }
        functions.GEN_STRCPY(st_msg, "Set OR TNM 1 or OR TNM Tis to 1 if codes reviewed and confirmed to be correct")
        
        if (functions.GEN_INLIST(SiteGrp, "039,41B,41C,41D,41A, 042, 57B")) {
            functions.GEN_STRCPY(t_CLINTNMSP, t_CLINTNM)
            functions.GEN_STRCAT(t_CLINTNMSP, Spec)
        
            if (functions.GEN_LOOKUP(t_CLINTNMSP, context.NAACCR_CLST7VAL, context.NAACCR_CLST7VAL_GPCTNMSP, ['GPCODE':GPCODE, 'CLINT':CLINT, 'CLINSTAGE':CLINSTAGE, 'GPCTNM':GPCTNM, 'GPCTNMSP':GPCTNMSP])) {
                if (functions.GEN_STRCMP(CLINSTAGE, "ERROR") == 0) {
                    functions.GEN_SAVE_TEXT(binding, st_msg)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM}, staging parameter for ${untrimmedline.primarySite}, invalid forTNM staging')
                }
                else {
                    if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmClinStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), CLINSTAGE) != 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM}, staging parameter for ${untrimmedline.primarySite}, inconsistent with TNM stage ${untrimmedline.tnmClinStageGroup}')
                    }
                }
            }
        }
        else {
            if (!functions.GEN_INLIST(SiteGrp, "039,41B,41C,41D,41A, 042, 57B")) {
                if (functions.GEN_LOOKUP(t_CLINTNM, context.NAACCR_CLST7VAL, context.NAACCR_CLST7VAL_GPCTNM, ['GPCODE':GPCODE, 'CLINT':CLINT, 'CLINSTAGE':CLINSTAGE, 'GPCTNM':GPCTNM, 'GPCTNMSP':GPCTNMSP])) {
                    if (functions.GEN_STRCMP(CLINSTAGE, "ERROR") == 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination of T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM} is invalid for TNM staging')
                    }
                    else {
                        if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmClinStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), CLINSTAGE) != 0) {
                            functions.GEN_SAVE_TEXT(binding, st_msg)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'Inconsistency between TNM categories T${untrimmedline.tnmClinT} N${untrimmedline.tnmClinN} M${untrimmedline.tnmClinM} and assigned TNM stage ${untrimmedline.tnmClinStageGroup}')
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01608; TAG: N2303; NAME: Primary Site, TNM M - c,p pre2016 (NPCR)
    public boolean naaccr01608(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPMCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpMcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2014 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinM, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinM)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathM, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathM)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "490-499", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8934,8940-9044,9060-9136,9141-9582"))
                            functions.GEN_STRCPY(SiteGrp, "028")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinM)) {
            functions.GEN_STRCPY(t_GrpMcode, SiteGrp)
        
            if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinM, 1, 1), "c,p"))
                functions.GEN_STRCAT(t_GrpMcode, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
            else
                functions.GEN_STRCAT(t_GrpMcode, untrimmedline.tnmClinM)
            if (!functions.GEN_LOOKUP(t_GrpMcode, context.NAACCR_AJC7MC, context.NAACCR_AJC7MC_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin M code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(t_GrpMcode, SiteGrp)
        
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathM, 1, 1), "c,p"))
            functions.GEN_STRCAT(t_GrpMcode, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
        else
            functions.GEN_STRCAT(t_GrpMcode, untrimmedline.tnmPathM)
        if (!functions.GEN_LOOKUP(t_GrpMcode, context.NAACCR_AJC7MP, context.NAACCR_AJC7MP_GRPMCODE, ['GRPMCODE':GRPMCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path M code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01609; TAG: N2305; NAME: Primary Site, TNM N - c,p pre2016 (NPCR)
    public boolean naaccr01609(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpNcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2014 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinN, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinN)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathN, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathN)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN) && functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
            functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
        
            if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinN, 1, 1), "c,p"))
                functions.GEN_STRCAT(t_GrpNcode, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
            else
                functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmClinN)
            if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_AJC7NC, context.NAACCR_AJC7NC_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin N code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(t_GrpNcode, SiteGrp)
        
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathN, 1, 1), "c,p"))
            functions.GEN_STRCAT(t_GrpNcode, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
        else
            functions.GEN_STRCAT(t_GrpNcode, untrimmedline.tnmPathN)
        if (!functions.GEN_LOOKUP(t_GrpNcode, context.NAACCR_AJC7NP, context.NAACCR_AJC7NP_GRPNCODE, ['GRPNCODE':GRPNCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01610; TAG: N2415; NAME: Primary Site, TNM Path Stage Valid A-Ed 7 (COC)
    public boolean naaccr01610(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] CLINT = new char[100], CLINN = new char[100], CLINM = new char[100], CLINSPEC = new char[100], CLINSTAGE = new char[100], GPCTNM = new char[100], GPCTNMSP = new char[100], GPCTNMSPST = new char[100], GPCTNMST = new char[100]
        char[] PATHT = new char[5], PATHN = new char[5], PATHM = new char[5], PATHSPEC = new char[8], PATHSTAGE = new char[6], GPPTNM = new char[100], GPPTNMSP = new char[100], GPPTNMSPST = new char[100], GPPTNMST = new char[100]
        char[] CLINTNM = new char[100], PATHTNM = new char[100], SSF13 = new char[100], SSF15 = new char[100], SSF16 = new char[100], STESTIS = new char[100], TESTISSSF = new char[100]
        
        char[] cT = new char[5]
        char[] cN = new char[5]
        char[] cM = new char[5]
        char[] pT = new char[5]
        char[] pN = new char[5]
        char[] pM = new char[5]
        char[] Spec = new char[8]
        char[] SValue = new char[6]
        char[] SSFTestis = new char[10]
        int req_flag
        int dx_year
        
        char[] st_msg = new char[79]
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        char[] t_CLINTNM = new char[18] /*group code TNM*/
        
        char[] t_CLINTNMSP = new char[25] /*group code TNM spec*/
        
        char[] t_PATHTNM = new char[18] /*group code TNM*/
        
        char[] t_PATHTNMSP = new char[25] /*group code TNM spec*/
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7, 88"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmTis, "1") == 0 && functions.GEN_INLIST(untrimmedline.tnmPathT, "pIS,p0A,pISU,pISD"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmStage, "1") == 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4, 6"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727, 9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "10A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8050, 8140-8147, 8160-8162, 8170-8175, 8180-8221, 8250-8507") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8514-8551,8571-8574, 8576, 8940-8941"))
                functions.GEN_STRCPY(SiteGrp, "10C")
        }
        if (functions.GEN_INLIST(SiteGrp, "10A")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8046, 8051-8131, 8148-8157, 8230-8249, 8508") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8510-8513, 8560-8570, 8575, 8905, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p2, p3") && functions.GEN_INLIST(untrimmedline.tnmPathN, "p0") && functions.GEN_INLIST(untrimmedline.tnmPathM, "c0")) {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "150, 151, 153, 154", "(C\\d\\d\\d)", 2, 3))
                        functions.GEN_STRCPY(SiteGrp, "10E")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "152,155,158,159", "(C\\d\\d\\d)", 2, 3))
                            functions.GEN_STRCPY(SiteGrp, "10H")
                    }
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "10D")
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "10B")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8050, 8140-8147, 8160-8162, 8170-8175, 8180-8221, 8250-8507") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8514-8551,8571-8574, 8576, 8940-8941"))
                functions.GEN_STRCPY(SiteGrp, "10F")
        }
        if (functions.GEN_INLIST(SiteGrp, "10B")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8046, 8051-8131, 8148-8157, 8230-8249, 8508") || functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8510-8513, 8560-8570, 8575, 8905, 8980-8981"))
                functions.GEN_STRCPY(SiteGrp, "10G")
        }
        if (functions.GEN_INLIST(SiteGrp, "027")) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9260, 9364"))
                functions.GEN_STRCPY(SiteGrp, "27B")
            else
                functions.GEN_STRCPY(SiteGrp, "27A")
        }
        if (!functions.GEN_INLIST(SiteGrp, "003,04A,04B,04C,04D,05A,05B,08A,08B,08C,08D,08E,08F,009") && !functions.GEN_INLIST(SiteGrp, "10A,10C,10D,10E,10H,10F,10G,011,012,13A,13B,014,015,16A") && !functions.GEN_INLIST(SiteGrp, "16B,17A,17B,17C,018,019,021,022,023,024,025,026,27A,27B"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmPathM, "88")) {
            functions.GEN_STRCPY(pM, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
            functions.GEN_STRCAT(pM, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
            functions.GEN_STRCPY(pM, untrimmedline.tnmPathM)
        if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "88")) {
            functions.GEN_STRCPY(pN, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
            functions.GEN_STRCAT(pN, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            functions.GEN_STRCPY(pN, untrimmedline.tnmPathN)
        if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "88")) {
            functions.GEN_STRCPY(pT, functions.GEN_SUBSTR(untrimmedline.tnmPathT, 2, 3))
            functions.GEN_STRCAT(pT, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            functions.GEN_STRCPY(pT, untrimmedline.tnmPathT)
        if (functions.GEN_INLIST(SiteGrp, "13A")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "010, 011"))
                functions.GEN_STRCPY(Spec, "C1")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "020, 021"))
                functions.GEN_STRCPY(Spec, "C2")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "030"))
                functions.GEN_STRCPY(Spec, "C3")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "040"))
                functions.GEN_STRCPY(Spec, "C4")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "988, 998, 999"))
                functions.GEN_STRCPY(Spec, "CX")
        }
        if (functions.GEN_INLIST(SiteGrp, "028")) {
            if (functions.GEN_INLIST(untrimmedline.grade, "2"))
                functions.GEN_STRCPY(Spec, "2")
            else {
                if (functions.GEN_INLIST(untrimmedline.grade, "3"))
                    functions.GEN_STRCPY(Spec, "3")
                else {
                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                        functions.GEN_STRCPY(Spec, "4")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "9"))
                            functions.GEN_STRCPY(Spec, "9")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "10C,10D,10E,10F,10G,10H, 27A")) {
            if (functions.GEN_INLIST(untrimmedline.grade, "1"))
                functions.GEN_STRCPY(Spec, "1")
            if (functions.GEN_INLIST(untrimmedline.grade, "2"))
                functions.GEN_STRCPY(Spec, "2")
            else {
                if (functions.GEN_INLIST(untrimmedline.grade, "3"))
                    functions.GEN_STRCPY(Spec, "3")
                else {
                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                        functions.GEN_STRCPY(Spec, "3")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "9"))
                            functions.GEN_STRCPY(Spec, "9")
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "16A")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "160-169", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "051-100,110,991"))
                    functions.GEN_STRCPY(Spec, "High")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "000-050,988,990"))
                        functions.GEN_STRCPY(Spec, "Low")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "996,998,999"))
                            functions.GEN_STRCPY(Spec, "Unknown")
                    }
                }
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3)) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "051-100,110,991"))
                        functions.GEN_STRCPY(Spec, "High")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000-050,988,990"))
                            functions.GEN_STRCPY(Spec, "Low")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "996,998,999"))
                                functions.GEN_STRCPY(Spec, "Unknown")
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "16B")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "150-159, 170-179", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "051-100,110, 991"))
                    functions.GEN_STRCPY(Spec, "High")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "000-050, 988, 990"))
                        functions.GEN_STRCPY(Spec, "Low")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "996, 998, 999"))
                            functions.GEN_STRCPY(Spec, "Unknown")
                    }
                }
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "180-189, 199, 209", "(C\\d\\d\\d)", 2, 3)) {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "051-100,110, 991"))
                        functions.GEN_STRCPY(Spec, "High")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "000-050, 988, 990"))
                            functions.GEN_STRCPY(Spec, "Low")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor11, "996, 998, 999"))
                                functions.GEN_STRCPY(Spec, "Unknown")
                        }
                    }
                }
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3)) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "051-100,110, 991"))
                            functions.GEN_STRCPY(Spec, "High")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000-050, 988, 990"))
                                functions.GEN_STRCPY(Spec, "Low")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "996, 998, 999"))
                                    functions.GEN_STRCPY(Spec, "Unknown")
                            }
                        }
                    }
                }
            }
        }
        functions.GEN_STRCPY(t_PATHTNM, SiteGrp)
        functions.GEN_STRCAT(t_PATHTNM, pT)
        functions.GEN_STRCAT(t_PATHTNM, pN)
        functions.GEN_STRCAT(t_PATHTNM, pM)
        
        if (functions.GEN_INLIST(SiteGrp, "025")) {
            if (functions.GEN_INLIST(pT, "X") && functions.GEN_INLIST(pN, "0") && functions.GEN_INLIST(pM, "0") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "99")) {
                return true
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "16A,16B") && functions.GEN_INLIST(Spec, "Unknown") && functions.GEN_INLIST(pT, "1,2,3,4") && functions.GEN_INLIST(pN, "0") && functions.GEN_INLIST(pM, "0"))
            return true
        functions.GEN_STRCPY(st_msg, "Set OR TNM 1 or OR TNM Tis to 1 if codes reviewed and confirmed to be correct")
        
        if (functions.GEN_INLIST(SiteGrp, "10C, 10D, 10E, 10F, 10G, 10H, 13A, 16A, 16B, 27A")) {
            functions.GEN_STRCPY(t_PATHTNMSP, t_PATHTNM)
            functions.GEN_STRCAT(t_PATHTNMSP, Spec)
        
            if (functions.GEN_LOOKUP(t_PATHTNMSP, context.NAACCR_PAST7VAL, context.NAACCR_PAST7VAL_GPPTNMSP, ['GPCODE':GPCODE, 'PATHT':PATHT, 'PATHSTAGE':PATHSTAGE, 'GPPTNM':GPPTNM, 'GPPTNMSP':GPPTNMSP])) {
                if (functions.GEN_STRCMP(PATHSTAGE, "ERROR") == 0) {
                    functions.GEN_SAVE_TEXT(binding, st_msg)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM}, staging parameter for ${untrimmedline.primarySite}, invalid forTNM staging')
                }
                else {
                    if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmPathStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), PATHSTAGE) != 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM}, staging parameter for ${untrimmedline.primarySite}, inconsistent with TNM stage ${untrimmedline.tnmPathStageGroup}')
                    }
                }
            }
        }
        else {
            if (!functions.GEN_INLIST(SiteGrp, "10C, 10D, 10E, 10F, 10G, 10H, 13A, 16A, 16B, 27A")) {
                if (functions.GEN_LOOKUP(t_PATHTNM, context.NAACCR_PAST7VAL, context.NAACCR_PAST7VAL_GPPTNM, ['GPCODE':GPCODE, 'PATHT':PATHT, 'PATHSTAGE':PATHSTAGE, 'GPPTNM':GPPTNM, 'GPPTNMSP':GPPTNMSP])) {
                    if (functions.GEN_STRCMP(PATHSTAGE, "ERROR") == 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination of T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM} is invalid for TNM staging')
                    }
                    else {
                        if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmPathStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), PATHSTAGE) != 0) {
                            functions.GEN_SAVE_TEXT(binding, st_msg)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'Inconsistency between TNM categories T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM} and assigned TNM stage ${untrimmedline.tnmPathStageGroup}')
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01611; TAG: N2416; NAME: Primary Site, TNM Path Stage Valid B-Ed 7 (COC)
    public boolean naaccr01611(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] CLINT = new char[100], CLINN = new char[100], CLINM = new char[100], CLINSPEC = new char[100], CLINSTAGE = new char[100], GPCTNM = new char[100], GPCTNMSP = new char[100], GPCTNMSPST = new char[100], GPCTNMST = new char[100]
        char[] PATHT = new char[5], PATHN = new char[5], PATHM = new char[5], PATHSPEC = new char[8], PATHSTAGE = new char[6], GPPTNM = new char[100], GPPTNMSP = new char[100], GPPTNMSPST = new char[100], GPPTNMST = new char[100]
        char[] CLINTNM = new char[100], PATHTNM = new char[100], SSF13 = new char[4], SSF15 = new char[4], SSF16 = new char[4], STESTIS = new char[6], TESTISSSF = new char[100]
        
        char[] cT = new char[5]
        char[] cN = new char[5]
        char[] cM = new char[5]
        char[] pT = new char[5]
        char[] pN = new char[5]
        char[] pM = new char[5]
        char[] Spec = new char[8]
        char[] SValue = new char[6]
        char[] SSFTestis = new char[10]
        int req_flag
        int dx_year
        char[] st_msg = new char[79]
        char[] GL8 = new char[4]
        char[] GL10 = new char[4]
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        char[] t_CLINTNM = new char[18] /*group code TNM*/
        
        char[] t_CLINTNMSP = new char[25] /*group code TNM spec*/
        
        char[] t_PATHTNM = new char[18] /*group code TNM*/
        
        char[] t_PATHTNMSP = new char[25] /*group code TNM spec*/
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7, 88"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmTis, "1") == 0 && functions.GEN_INLIST(untrimmedline.tnmPathT, "pIS,p0A,pISU,pISD"))
            return true
        if (functions.GEN_STRCMP(untrimmedline.overRideTnmStage, "1") == 0)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4, 6"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727, 9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "041")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "001-099"))
                functions.GEN_STRCPY(SiteGrp, "41B")
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "100-199"))
                    functions.GEN_STRCPY(SiteGrp, "41C")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "200-980"))
                        functions.GEN_STRCPY(SiteGrp, "41D")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988, 997, 998, 999"))
                            functions.GEN_STRCPY(SiteGrp, "41A")
                    }
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "029,030,031,032,033,034,035,36A,36B,36C,37A,37B,038,039") && !functions.GEN_INLIST(SiteGrp, "040,41A,41B,41C,41D,042,043,044,045,046,47A,47B,048,049") && !functions.GEN_INLIST(SiteGrp, "51A,51B,052,053,054,055,057,57B"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmPathM, "88")) {
            functions.GEN_STRCPY(pM, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
            functions.GEN_STRCAT(pM, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
            functions.GEN_STRCPY(pM, untrimmedline.tnmPathM)
        if (!functions.GEN_INLIST(SiteGrp, "039")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "88")) {
                functions.GEN_STRCPY(pN, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
                functions.GEN_STRCAT(pN, " ")
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "039")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
                functions.GEN_STRCPY(pN, "88  ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            functions.GEN_STRCPY(pN, untrimmedline.tnmPathN)
        if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "88")) {
            functions.GEN_STRCPY(pT, functions.GEN_SUBSTR(untrimmedline.tnmPathT, 2, 3))
            functions.GEN_STRCAT(pT, " ")
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            functions.GEN_STRCPY(pT, untrimmedline.tnmPathT)
        if (functions.GEN_INLIST(SiteGrp, "042")) {
            functions.GEN_STRCPY(SSFTestis, untrimmedline.csSiteSpecificFactor13)
            functions.GEN_STRCAT(SSFTestis, untrimmedline.csSiteSpecificFactor15)
            functions.GEN_STRCAT(SSFTestis, untrimmedline.csSiteSpecificFactor16)
        
            if (functions.GEN_LOOKUP(SSFTestis, context.NAACCR_SVALTEST, context.NAACCR_SVALTEST_TESTISSSF, ['STESTIS':STESTIS, 'TESTISSSF':TESTISSSF]))
                functions.GEN_STRCPY(SValue, STESTIS)
            if (functions.GEN_INLIST(SValue, "S0"))
                functions.GEN_STRCPY(Spec, "S0")
            else {
                if (functions.GEN_INLIST(SValue, "S1"))
                    functions.GEN_STRCPY(Spec, "S1")
                else {
                    if (functions.GEN_INLIST(SValue, "S2"))
                        functions.GEN_STRCPY(Spec, "S2")
                    else {
                        if (functions.GEN_INLIST(SValue, "S3"))
                            functions.GEN_STRCPY(Spec, "S3")
                        else {
                            if (functions.GEN_INLIST(SValue, "SX"))
                                functions.GEN_STRCPY(Spec, "SX")
                            else {
                                if (functions.GEN_INLIST(SValue, "ERROR"))
                                    functions.GEN_STRCPY(Spec, "ERROR")
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "039")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "000"))
                functions.GEN_STRCPY(Spec, "000")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010"))
                functions.GEN_STRCPY(Spec, "010")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "050"))
                functions.GEN_STRCPY(Spec, "050")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "110"))
                functions.GEN_STRCPY(Spec, "110")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "150"))
                functions.GEN_STRCPY(Spec, "150")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "200"))
                functions.GEN_STRCPY(Spec, "200")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
                functions.GEN_STRCPY(Spec, "988")
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "999"))
                functions.GEN_STRCPY(Spec, "999")
        }
        if (functions.GEN_INLIST(SiteGrp, "57B")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "030"))
                functions.GEN_STRCPY(Spec, "B0NOS")
            else {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010"))
                    functions.GEN_STRCPY(Spec, "B0a")
                else {
                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "020"))
                        functions.GEN_STRCPY(Spec, "B0b")
                    else {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "060"))
                            functions.GEN_STRCPY(Spec, "B1NOS")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "040"))
                                functions.GEN_STRCPY(Spec, "B1a")
                            else {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "050"))
                                    functions.GEN_STRCPY(Spec, "B1b")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "070"))
                                        functions.GEN_STRCPY(Spec, "B2")
                                    else {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "080, 090, 988,  997, 999"))
                                            functions.GEN_STRCPY(Spec, "BX")
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        functions.GEN_STRCPY(t_PATHTNM, SiteGrp)
        functions.GEN_STRCAT(t_PATHTNM, pT)
        functions.GEN_STRCAT(t_PATHTNM, pN)
        functions.GEN_STRCAT(t_PATHTNM, pM)
        
        if (functions.GEN_INLIST(SiteGrp, "41B,41C,41D,41A")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988,998,999"))
                functions.GEN_STRCPY(GL10, "000")
            else
                functions.GEN_STRCPY(GL10, untrimmedline.csSiteSpecificFactor10)
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor8, "988,998,999"))
                functions.GEN_STRCPY(GL8, "000")
            else
                functions.GEN_STRCPY(GL8, untrimmedline.csSiteSpecificFactor8)
        }
        if (functions.GEN_INLIST(SiteGrp, "41B,41C,41D,41A")) {
            if (functions.GEN_VAL(GL8) >= functions.GEN_VAL(GL10)) {
                if (functions.GEN_INLIST(GL8, "002, 003,004, 005, 006"))
                    functions.GEN_STRCPY(Spec, "1")
                else {
                    if (functions.GEN_INLIST(GL8, "007"))
                        functions.GEN_STRCPY(Spec, "2")
                    else {
                        if (functions.GEN_INLIST(GL8, "008, 009, 010"))
                            functions.GEN_STRCPY(Spec, "3")
                        else {
                            if (functions.GEN_INLIST(GL8, "000"))
                                functions.GEN_STRCPY(Spec, "9")
                        }
                    }
                }
            }
            else {
        
                if (functions.GEN_INLIST(GL10, "002, 003,004, 005, 006"))
                    functions.GEN_STRCPY(Spec, "1")
                else {
                    if (functions.GEN_INLIST(GL10, "007"))
                        functions.GEN_STRCPY(Spec, "2")
                    else {
                        if (functions.GEN_INLIST(GL10, "008, 009, 010"))
                            functions.GEN_STRCPY(Spec, "3")
                        else {
                            if (functions.GEN_INLIST(GL10, "000"))
                                functions.GEN_STRCPY(Spec, "9")
                        }
                    }
                }
            }
        }
        functions.GEN_STRCPY(st_msg, "Set OR TNM 1 or OR TNM Tis to 1 if codes reviewed and confirmed to be correct")
        if (functions.GEN_INLIST(SiteGrp, "039,41B,41C,41D,41A, 042, 57B")) {
            functions.GEN_STRCPY(t_PATHTNMSP, t_PATHTNM)
            functions.GEN_STRCAT(t_PATHTNMSP, Spec)
        
            if (functions.GEN_LOOKUP(t_PATHTNMSP, context.NAACCR_PAST7VAL, context.NAACCR_PAST7VAL_GPPTNMSP, ['GPCODE':GPCODE, 'PATHT':PATHT, 'PATHSTAGE':PATHSTAGE, 'GPPTNM':GPPTNM, 'GPPTNMSP':GPPTNMSP])) {
                if (functions.GEN_STRCMP(PATHSTAGE, "ERROR") == 0) {
                    functions.GEN_SAVE_TEXT(binding, st_msg)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM}, staging parameter for ${untrimmedline.primarySite}, invalid forTNM staging')
                }
                else {
                    if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmPathStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), PATHSTAGE) != 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM}, staging parameter for ${untrimmedline.primarySite}, inconsistent with TNM stage ${untrimmedline.tnmPathStageGroup}')
                    }
                }
            }
        }
        else {
            if (!functions.GEN_INLIST(SiteGrp, "039,41B,41C,41D,41A,042, 57B")) {
                if (functions.GEN_LOOKUP(t_PATHTNM, context.NAACCR_PAST7VAL, context.NAACCR_PAST7VAL_GPPTNM, ['GPCODE':GPCODE, 'PATHT':PATHT, 'PATHSTAGE':PATHSTAGE, 'GPPTNM':GPPTNM, 'GPPTNMSP':GPPTNMSP])) {
                    if (functions.GEN_STRCMP(PATHSTAGE, "ERROR") == 0) {
                        functions.GEN_SAVE_TEXT(binding, st_msg)
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Combination of T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM} is invalid for TNM staging')
                    }
                    else {
                        if (functions.GEN_STRCMP(functions.GEN_TRIM(untrimmedline.tnmPathStageGroup, ((Integer)context.NAACCR_GEN_RIGHT)), PATHSTAGE) != 0) {
                            functions.GEN_SAVE_TEXT(binding, st_msg)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'Inconsistency between TNM categories T${untrimmedline.tnmPathT} N${untrimmedline.tnmPathN} M${untrimmedline.tnmPathM} and assigned TNM stage ${untrimmedline.tnmPathStageGroup}')
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01612; TAG: N2310; NAME: Primary Site, TNM T - c,p pre2016 (NPCR)
    public boolean naaccr01612(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_GrpTcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2014 || dx_year > 2015)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_AT(untrimmedline.overRideSiteTnmStggrp, "1") != 0) {
        
            if (functions.GEN_AT(untrimmedline.tnmEditionNumber, "88", 2) != 0 && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmClinT, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmClinT)) && (functions.GEN_AT(functions.GEN_TRIM(untrimmedline.tnmPathT, ((Integer)context.NAACCR_GEN_RIGHT)), "88") != 0 || functions.GEN_EMPTY(untrimmedline.tnmPathT)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AJC7SIGP, context.NAACCR_AJC7SIGP_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060"))
                                functions.GEN_STRCPY(SiteGrp, "10B")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "046")) {
                                            if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                functions.GEN_STRCPY(SiteGrp, "46A")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "46B")
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999"))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                functions.GEN_STRCPY(SiteGrp, "51B")
                                                            else
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "002"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "028,37B") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9050-9055")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
                return true
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
            functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
        
            if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinT, 1, 1), "c,p"))
                functions.GEN_STRCAT(t_GrpTcode, functions.GEN_SUBSTR(untrimmedline.tnmClinT, 2, 3))
            else
                functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmClinT)
            if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_AJC7TC, context.NAACCR_AJC7TC_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
                if (functions.GEN_INLIST(SiteGrp, "999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code should = "88" for site/hist combination')
                else
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T code is invalid for site/hist combination')
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        functions.GEN_STRCPY(t_GrpTcode, SiteGrp)
        
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathT, 1, 1), "c,p"))
            functions.GEN_STRCAT(t_GrpTcode, functions.GEN_SUBSTR(untrimmedline.tnmPathT, 2, 3))
        else
            functions.GEN_STRCAT(t_GrpTcode, untrimmedline.tnmPathT)
        if (!functions.GEN_LOOKUP(t_GrpTcode, context.NAACCR_AJC7TP, context.NAACCR_AJC7TP_GRPTCODE, ['GRPTCODE':GRPTCODE])) {
            if (functions.GEN_INLIST(SiteGrp, "999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code should = "88" for site/hist combination')
            else
                functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T code is invalid for site/hist combination')
        }
        return true

    }

    // ID: NAACCR-01615; TAG: N2357; NAME: Regional Nodes Examined, Date of Dx (SEER)
    public boolean naaccr01615(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2003) {
            if (functions.GEN_EMPTY(untrimmedline.regionalNodesExamined))
                return false
        }
        return true

    }

    // ID: NAACCR-01616; TAG: N2358; NAME: Regional Nodes Positive, Date of Dx (SEER)
    public boolean naaccr01616(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        if (dx_year > 2003) {
            if (functions.GEN_EMPTY(untrimmedline.regionalNodesPositive))
                return false
        }
        return true

    }

    // ID: NAACCR-01617; TAG: N2056; NAME: RuralUrban Continuum 2013 (NAACCR)
    public boolean naaccr01617(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.ruralurbanContinuum2013))
            return true
        if (functions.GEN_INLIST(untrimmedline.ruralurbanContinuum2013, "01-09,98,99", "(\\d\\d)"))
            return true
        else
            return false
        
        return true

    }

    // ID: NAACCR-01618; TAG: N0701; NAME: SEER Derived Items, Date of DX (SEER)
    public boolean naaccr01618(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] t_site = new char[5], t_hist = new char[5], t_discrim = new char[4], t_schema_name = new char[31], t_schema_msg = new char[79]
        int t_schema_number, t_max_schemas, t_result
        int dx_year
        int err_flag
        err_flag = 0
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return functions.GEN_ERROR_TEXT(binding, 'Date of Diagnosis: %DC')
        functions.GEN_STRCPY(t_site, untrimmedline.primarySite)
        functions.GEN_STRCPY(t_hist, untrimmedline.histologicTypeIcdO3)
        functions.GEN_STRCPY(t_discrim, untrimmedline.csSiteSpecificFactor25)
        
        t_max_schemas = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_number_of_schemas")
        
        t_schema_number = functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_number", t_site, t_hist, t_discrim)
        
        if (t_schema_number < 0)
            return true
        if (t_schema_number > t_max_schemas) {
            return true
        }
        functions.GEN_EXTERNALDLL("cstage0205.dll", "CStage_get_schema_name", t_schema_number, t_schema_name)
        
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            if (!functions.GEN_INLIST(t_schema_name, "Brain,CNSOther,IntracranialGland"))
                return true
        }
        if (dx_year == 2016 || dx_year == 2017) {
            if (functions.GEN_EMPTY(untrimmedline.derivedSeerPathStgGrp)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX = 2016 or 2017, Derived SEER Path Stg Grp cannot be blank')
                err_flag = 1
            }
            if (functions.GEN_EMPTY(untrimmedline.derivedSeerClinStgGrp)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX = 2016 or 2017, Derived SEER Clin Stg Grp cannot be blank')
                err_flag = 1
            }
            if (functions.GEN_EMPTY(untrimmedline.derivedSeerCmbStgGrp)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX = 2016 or 2017, Derived SEER Cmb Stg Grp cannot be blank')
                err_flag = 1
            }
        }
        if (dx_year == 2016 || dx_year == 2017) {
            if (!functions.GEN_EMPTY(untrimmedline.tnmClinT) || !functions.GEN_EMPTY(untrimmedline.tnmClinN) || !functions.GEN_EMPTY(untrimmedline.tnmClinM) || !functions.GEN_EMPTY(untrimmedline.tnmPathT) || !functions.GEN_EMPTY(untrimmedline.tnmPathN) || !functions.GEN_EMPTY(untrimmedline.tnmPathM)) {
        
                if (functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedT)) {
                    functions.GEN_SAVE_TEXT(binding, 'If DX = 2016 or 2017 and any Clin or Path TNM fields coded, Derived SEER Combined T cannot be blank')
                    err_flag = 1
                }
                if (functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedN)) {
                    functions.GEN_SAVE_TEXT(binding, 'If DX = 2016 or 2017 and any Clin or Path TNM fields coded, Derived SEER Combined N cannot be blank')
                    err_flag = 1
                }
                if (functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedM)) {
                    functions.GEN_SAVE_TEXT(binding, 'If DX = 2016 or 2017 and any Clin or Path TNM fields coded, Derived SEER Combined M cannot be blank')
                    err_flag = 1
                }
            }
        }
        if (dx_year < 2016 || dx_year > 2017) {
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerPathStgGrp)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Path Stg Grp must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerClinStgGrp)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Clin Stg Grp must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCmbStgGrp)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Cmb Stg Grp must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedT)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Combined T must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedN)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Combined N must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCombinedM)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Combined M must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCmbTSrc)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Cmb T Src must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCmbNSrc)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Cmb N Src must be blank')
                err_flag = 1
            }
            if (!functions.GEN_EMPTY(untrimmedline.derivedSeerCmbMSrc)) {
                functions.GEN_SAVE_TEXT(binding, 'If DX <2016 or > 2017, Derived SEER Cmb M Src must be blank')
                err_flag = 1
            }
        }
        if (err_flag == 1) {
            functions.GEN_STRCPY(t_schema_msg, "Schema: ")
            functions.GEN_STRCAT(t_schema_msg, t_schema_name)
            functions.GEN_SAVE_TEXT(binding, t_schema_msg)
            return false
        }
        return true

    }

    // ID: NAACCR-01619; TAG: N2339; NAME: SS1977, TNM M c,p pre2016 (NAACCR)
    public boolean naaccr01619(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year > 2015)
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        char[] codepm = new char[5]
        char[] codecm = new char[5]
        char[] MCODE = new char[6]
        char[] MCODE2 = new char[4]
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage1977))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM) && functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSsTnmM, "1"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathM, 1, 1), "p"))
            functions.GEN_STRCPY(codepm, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
        else
            functions.GEN_STRCPY(codepm, untrimmedline.tnmPathM)
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinM, 1, 1), "c"))
            functions.GEN_STRCPY(codecm, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
        else
            functions.GEN_STRCPY(codecm, untrimmedline.tnmClinM)
        if (functions.GEN_INLIST(codepm, "88") && functions.GEN_INLIST(codecm, "88"))
            return true
        if (!functions.GEN_EMPTY(codepm)) {
            functions.GEN_STRCPY(MCODE, codepm)
            if (functions.GEN_INLIST(MCODE, "X, 88")) {
                if (!functions.GEN_EMPTY(codecm)) {
                    if (!functions.GEN_INLIST(codecm, "X, 88"))
                        functions.GEN_STRCPY(MCODE, codecm)
                }
            }
        }
        else
            functions.GEN_STRCPY(MCODE, codecm)
        functions.GEN_STRCPY(MCODE2, MCODE, 1)
        
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "0,1,3,9")) {
            if (functions.GEN_INLIST(MCODE2, "1"))
                return false
            else
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "2,4,5")) {
            if (functions.GEN_INLIST(MCODE2, "1"))
                return true
            else
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "7")) {
            if (functions.GEN_INLIST(MCODE2, "0"))
                return true
            else
                return true
        }
        return true

    }

    // ID: NAACCR-01620; TAG: N2340; NAME: SS1977, TNM N c,p pre2016 (NAACCR)
    public boolean naaccr01620(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year > 2015)
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        char[] codepn = new char[5]
        char[] codecn = new char[5]
        char[] NCODE = new char[6]
        char[] NCODE2 = new char[4]
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage1977))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSsTnmN, "1"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathN, 1, 1), "p"))
            functions.GEN_STRCPY(codepn, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
        else
            functions.GEN_STRCPY(codepn, untrimmedline.tnmPathN)
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinN, 1, 1), "c"))
            functions.GEN_STRCPY(codecn, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
        else
            functions.GEN_STRCPY(codecn, untrimmedline.tnmClinN)
        if (functions.GEN_INLIST(codepn, "88") && functions.GEN_INLIST(codecn, "88"))
            return true
        if (functions.GEN_VAL(untrimmedline.seerSummaryStage1977) > 4)
            return true
        if (!functions.GEN_EMPTY(codepn)) {
            functions.GEN_STRCPY(NCODE, codepn)
            if (functions.GEN_INLIST(NCODE, "88,X")) {
                if (!functions.GEN_EMPTY(codecn)) {
                    if (!functions.GEN_INLIST(codecn, "88,X"))
                        functions.GEN_STRCPY(NCODE, codecn)
                }
            }
        }
        else
            functions.GEN_STRCPY(NCODE, codecn)
        functions.GEN_STRCPY(NCODE2, NCODE, 1)
        
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "0,1,2")) {
            if (functions.GEN_INLIST(NCODE2, "1, 2, 3, 1,2, 3"))
                return false
            else
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage1977, "3,4")) {
            if (functions.GEN_INLIST(NCODE2, "0"))
                return false
            else
                return true
        }
        return true

    }

    // ID: NAACCR-01621; TAG: N2341; NAME: SS2000, TNM M c,p pre2016 (NAACCR)
    public boolean naaccr01621(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year > 2015))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        char[] codepm = new char[5]
        char[] codecm = new char[5]
        char[] MCODE = new char[6]
        char[] MCODE2 = new char[4]
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage2000))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM) && functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSsTnmM, "1"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathM, 1, 1), "p"))
            functions.GEN_STRCPY(codepm, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
        else
            functions.GEN_STRCPY(codepm, untrimmedline.tnmPathM)
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinM, 1, 1), "c"))
            functions.GEN_STRCPY(codecm, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
        else
            functions.GEN_STRCPY(codecm, untrimmedline.tnmClinM)
        if (functions.GEN_INLIST(codepm, "88") && functions.GEN_INLIST(codecm, "88"))
            return true
        if (!functions.GEN_EMPTY(codepm)) {
            functions.GEN_STRCPY(MCODE, codepm)
            if (functions.GEN_INLIST(MCODE, "X, 88")) {
                if (!functions.GEN_EMPTY(codecm)) {
                    if (!functions.GEN_INLIST(codecm, "X, 88"))
                        functions.GEN_STRCPY(MCODE, codecm)
                }
            }
        }
        else
            functions.GEN_STRCPY(MCODE, codecm)
        functions.GEN_STRCPY(MCODE2, MCODE, 1)
        
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "0,1,3,9")) {
            if (functions.GEN_INLIST(MCODE2, "1 "))
                return false
            else
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "2,4,5")) {
            if (functions.GEN_INLIST(MCODE2, "1"))
                return true
            else
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "7")) {
            if (functions.GEN_INLIST(MCODE2, "0")) {
                if (!functions.GEN_INLIST(untrimmedline.primarySite, "000,011,021,079,099,119,180-189,199,250-259,340-349,384,541,569,570,670-680", "(C\\d\\d\\d)", 2, 3))
                    return true
                else
                    return true
            }
            else
                return true
        }
        
        return true

    }

    // ID: NAACCR-01622; TAG: N2342; NAME: SS2000, TNM N c,p pre2016 (NAACCR)
    public boolean naaccr01622(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year > 2015))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        char[] codepn = new char[5]
        char[] codecn = new char[5]
        char[] NCODE = new char[6]
        char[] NCODE2 = new char[4]
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage2000))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSsTnmN, "1"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathN, 1, 1), "p"))
            functions.GEN_STRCPY(codepn, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
        else
            functions.GEN_STRCPY(codepn, untrimmedline.tnmPathN)
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinN, 1, 1), "c"))
            functions.GEN_STRCPY(codecn, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
        else
            functions.GEN_STRCPY(codecn, untrimmedline.tnmClinN)
        if (functions.GEN_INLIST(codepn, "88") && functions.GEN_INLIST(codecn, "88"))
            return true
        if (functions.GEN_VAL(untrimmedline.seerSummaryStage2000) > 4)
            return true
        if (!functions.GEN_EMPTY(codepn)) {
            functions.GEN_STRCPY(NCODE, codepn)
            if (functions.GEN_INLIST(NCODE, "88,X")) {
                if (!functions.GEN_EMPTY(codecn)) {
                    if (!functions.GEN_INLIST(codecn, "88,X"))
                        functions.GEN_STRCPY(NCODE, codecn)
                }
            }
        }
        else
            functions.GEN_STRCPY(NCODE, codecn)
        functions.GEN_STRCPY(NCODE2, NCODE, 1)
        
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "0,1,2")) {
            if (functions.GEN_INLIST(NCODE2, "1, 2, 3, 4"))
                return false
            else
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "3,4")) {
            if (functions.GEN_INLIST(NCODE2, "0"))
                return false
            else
                return true
        }
        return true

    }

    // ID: NAACCR-01625; TAG: N2378; NAME: Summary Stage 2000, Date of Diagnosis (COC)
    public boolean naaccr01625(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage2000))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis = ${untrimmedline.dateOfDiagnosis.formatDate()} then SEER Summary Stage 2000 cannot be blank')
        }
        if (dx_year >= 2018) {
            if (!functions.GEN_EMPTY(untrimmedline.seerSummaryStage2000))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis >= 2018, then SEER Summary Stage 2000 must be blank')
        }
        return true

    }

    // ID: NAACCR-01626; TAG: N2343; NAME: Summary Stage 2000, TNM M 2016 (NAACCR)
    public boolean naaccr01626(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        char[] MCODE = new char[5]
        char[] MCODE2 = new char[3]
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage2000))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM) && functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathM, "88") && functions.GEN_INLIST(untrimmedline.tnmClinM, "88"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathM)) {
            functions.GEN_STRCPY(MCODE, untrimmedline.tnmPathM)
            if (functions.GEN_INLIST(MCODE, "88")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmClinM)) {
                    if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "88"))
                        functions.GEN_STRCPY(MCODE, untrimmedline.tnmClinM)
                }
            }
        }
        else
            functions.GEN_STRCPY(MCODE, untrimmedline.tnmClinM)
        functions.GEN_STRCPY(MCODE2, MCODE, 2)
        
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "0,1,9")) {
            if (functions.GEN_INLIST(MCODE2, "p1,c1 "))
                return false
            else
                return true
        }
        else
            return true
        
        return true

    }

    // ID: NAACCR-01628; TAG: N2221; NAME: Summary Stage 2000, TNM N 2016 (NAACCR)
    public boolean naaccr01628(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        char[] NCODE = new char[5]
        char[] NCODE2 = new char[3]
        
        if (functions.GEN_EMPTY(untrimmedline.seerSummaryStage2000))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88") && functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
            return true
        if (functions.GEN_VAL(untrimmedline.seerSummaryStage2000) > 4) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "180,182-189,199,209", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8152,8154-8231,8243-8245,8247-8248,8250-8576,8940-8950,8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p1C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518,519,600-602,608,609,632", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p2C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440,442-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8247")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p2", "(p[A-Za-z0-9]\\s\\s)"))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "692", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9510-9514")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p2", "(p[A-Za-z0-9]\\s\\s)"))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "441,690,695-696", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9738,9811-9818,9820-9837")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p3,p4", "(p[A-Za-z0-9]\\s\\s)"))
                    return true
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            functions.GEN_STRCPY(NCODE, untrimmedline.tnmPathN)
            if (functions.GEN_INLIST(NCODE, "88,pX")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
                    if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "88,cX"))
                        functions.GEN_STRCPY(NCODE, untrimmedline.tnmClinN)
                }
            }
        }
        else
            functions.GEN_STRCPY(NCODE, untrimmedline.tnmClinN)
        functions.GEN_STRCPY(NCODE2, NCODE, 2)
        
        if (functions.GEN_INLIST(untrimmedline.seerSummaryStage2000, "0,1,2")) {
            if (functions.GEN_INLIST(NCODE2, "p1, p2, p3") || functions.GEN_INLIST(NCODE2, "c1,c2,c3"))
                return false
            else
                return true
        }
        return true

    }

    // ID: NAACCR-01630; TAG: N2223; NAME: TNM Clin Descriptor, Histologies - Ed 7 (COC)
    public boolean naaccr01630(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmClinDescriptor))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "1,2,5"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "441,690,695-696", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9738,9811-9818,9820-9837"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9700,9701"))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9823,9827, 9837,9811-9818") && functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9837,9811-9818") && functions.GEN_INLIST(untrimmedline.primarySite, "420, 421, 424", "(C\\d\\d\\d)", 2, 3))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699, 9702-9727, 9735, 9737, 9738") && functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01631; TAG: N2398; NAME: TNM Clin Descriptor, Stage, Lymphoma (COC)
    public boolean naaccr01631(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinDescriptor))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737,9738,9811-9818,9823,9827,9837") && (functions.GEN_INLIST(untrimmedline.primarySite, "C770,C771,C772,C773,C774,C775,C779"))) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "1,2,5") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1,1A,1B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737,9738,9811-9818,9823,9827,9837") && (functions.GEN_INLIST(untrimmedline.primarySite, "C379,C024,C090,C091,C098,C099,C111,C142,C379"))) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "1,2,5") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1,1A,1B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737,9738,9811-9818,9823,9827,9837") && (functions.GEN_INLIST(untrimmedline.primarySite, "C422"))) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "2") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1,1A,1B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737,9738,9811-9818,9823,9827,9837") && (functions.GEN_INLIST(untrimmedline.primarySite, "C778"))) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1,1A,1B"))
                return false
        }
        return true

    }

    // ID: NAACCR-01632; TAG: N2345; NAME: TNM Clin Descriptor, TNM Fields (NPCR)
    public boolean naaccr01632(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinT) || !functions.GEN_EMPTY(untrimmedline.tnmClinM) || !functions.GEN_EMPTY(untrimmedline.tnmClinN) || !functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) {
            if (functions.GEN_EMPTY(untrimmedline.tnmClinDescriptor))
                return false
        }
        return true

    }

    // ID: NAACCR-01633; TAG: N2226; NAME: TNM Clin M Conv (COC)
    public boolean naaccr01633(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmClinM)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X,0,1", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(c0I\\+)"))
            return true
        return false

    }

    // ID: NAACCR-01634; TAG: N2311; NAME: TNM Clin M c,p pre2016 (NAACCR)
    public boolean naaccr01634(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_MATCH(untrimmedline.tnmClinM, "(p0I\\+)"))
            return false
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "pX, p0"))
            return false
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinM, 1, 1), "c,p")) {
            functions.GEN_STRCPY(code, functions.GEN_SUBSTR(untrimmedline.tnmClinM, 2, 3))
            functions.GEN_STRCAT(code, " ")
        }
        else
            functions.GEN_STRCPY(code, untrimmedline.tnmClinM)
        if (functions.GEN_INLIST(code, "X, 0-1", "([A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_MATCH(code, "(0I\\+\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01635; TAG: N2225; NAME: TNM Clin M, Date of Diagnosis (COC)
    public boolean naaccr01635(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmClinM)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "1", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0,1", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(c0I\\+)"))
            return true
        return false

    }

    // ID: NAACCR-01636; TAG: N2346; NAME: TNM Clin N Conv (COC)
    public boolean naaccr01636(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmClinN)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X, 0-4", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 3C", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(c0I\\-)") || functions.GEN_MATCH(code, "(c0I\\+)") || functions.GEN_MATCH(code, "(c0M\\-)") || functions.GEN_MATCH(code, "(c0M\\+)") || functions.GEN_MATCH(code, "(c1MI)"))
            return true
        return false

    }

    // ID: NAACCR-01637; TAG: N2312; NAME: TNM Clin N c,p pre2016 (NAACCR)
    public boolean naaccr01637(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinN, 1, 1), "c")) {
            functions.GEN_STRCPY(code, functions.GEN_SUBSTR(untrimmedline.tnmClinN, 2, 3))
            functions.GEN_STRCAT(code, " ")
        }
        else
            functions.GEN_STRCPY(code, untrimmedline.tnmClinN)
        if (functions.GEN_INLIST(code, "X, 0-4", "([A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 3C", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_MATCH(code, "(0I\\-\\s)") || functions.GEN_MATCH(code, "(0I\\+\\s)") || functions.GEN_MATCH(code, "(0M\\-\\s)") || functions.GEN_MATCH(code, "(0M\\+\\s)") || functions.GEN_MATCH(code, "(1MI\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01638; TAG: N2227; NAME: TNM Clin N, Date of Diagnosis (COC)
    public boolean naaccr01638(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmClinN)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X, 0-4", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 3C", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01639; TAG: N2229; NAME: TNM Clin N, Digestive, Assess Nodes SSF (COC)
    public boolean naaccr01639(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] cN = new char[5]
        char[] pN = new char[5]
        char[] NodesSSF = new char[4]
        
        char[] t_GrpNcode = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN) || functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                            else {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                        else
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "10A, 10B, 011, 012, 13A, 13B, 014, 17A, 17C"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10A, 10B, 011, 17A"))
            functions.GEN_STRCPY(NodesSSF, untrimmedline.csSiteSpecificFactor1)
        if (functions.GEN_INLIST(SiteGrp, "012, 13A, 13B, 014, 17C"))
            functions.GEN_STRCPY(NodesSSF, untrimmedline.csSiteSpecificFactor2)
        if (functions.GEN_EMPTY(NodesSSF) || functions.GEN_INLIST(NodesSSF, "988"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "10A, 10B, 011")) {
            if (functions.GEN_INLIST(NodesSSF, "000")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "100")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "200")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "300")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c3", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "400")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "999")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "012,13A, 014 ")) {
            if (functions.GEN_INLIST(NodesSSF, "000")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "100")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "200")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "400")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "999")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "011")) {
            if (functions.GEN_INLIST(NodesSSF, "310")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c3A", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "320")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c3B", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "014")) {
            if (functions.GEN_INLIST(NodesSSF, "010")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1A", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "020")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1B", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "110")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2A", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "120")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2B", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "17A")) {
            if (functions.GEN_INLIST(NodesSSF, "000")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "100, 200, 300, 400")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
            if (functions.GEN_INLIST(NodesSSF, "999")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 1: ${untrimmedline.csSiteSpecificFactor1} conflict')
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "13B, 17C")) {
            if (functions.GEN_INLIST(NodesSSF, "000")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "100, 200, 400")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(NodesSSF, "999")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)"))
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N: ${untrimmedline.tnmClinN} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
        }
        return true

    }

    // ID: NAACCR-01641; TAG: N2421; NAME: TNM Clin Stage Group, 2016 (COC)
    public boolean naaccr01641(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0-4", "(\\d\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0A,0S,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,88,99,OC", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01642; TAG: N2392; NAME: TNM Clin Stage Group, Date of Diagnosis (COC)
    public boolean naaccr01642(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis = ${untrimmedline.dateOfDiagnosis.formatDate()} then TNM Clin Stage Group cannot be blank')
        }
        return true

    }

    // ID: NAACCR-01644; TAG: N2231; NAME: TNM Clin Stage Group, SSF 2 Lymphoma (COC)
    public boolean naaccr01644(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699, 9702-9727,9735, 9737-9738") && functions.GEN_INLIST(untrimmedline.primarySite, "000-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1A, 2A, 3A, 4A") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "000, 020"))
                return false
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1B, 2B, 3B, 4B") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010, 030"))
                return false
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1,2,3,4") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "999"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818,9823,9827,9837") && functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3)) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1A, 2A, 3A, 4A") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "000, 020"))
                return false
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1B, 2B, 3B, 4B") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010, 030"))
                return false
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "1,2,3,4") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "999"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818,9837") && functions.GEN_INLIST(untrimmedline.primarySite, "420, 421, 424", "(C\\d\\d\\d)", 2, 3)) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "4A") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "000, 020"))
                return false
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "4B") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010, 030"))
                return false
            if (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "4") && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "999"))
                return false
        }
        return true

    }

    // ID: NAACCR-01645; TAG: N2233; NAME: TNM Clin T Conv (COC)
    public boolean naaccr01645(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmClinT)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "X,0-4", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "IS,SU, SD", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A,1B,1C,1D,1M, 2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E, A1,A2,B1,B2", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "ISU, ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A1,1A2,1B1,1B2,1MI,2A1,2A2", "(c[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01646; TAG: N2317; NAME: TNM Clin T c,p pre2016 (NAACCR)
    public boolean naaccr01646(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88,SU,SD", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "ISPU,ISPD", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmClinT, 1, 1), "c,p")) {
            functions.GEN_STRCPY(code, functions.GEN_SUBSTR(untrimmedline.tnmClinT, 2, 3))
            functions.GEN_STRCAT(code, " ")
        }
        else
            functions.GEN_STRCPY(code, untrimmedline.tnmClinT)
        if (functions.GEN_INLIST(code, "X,A, 0-4", "([A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "IS,1A,1B,1C,1D,1M,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E,A1,A2,B1,B2", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "ISU,ISD,1A1,1A2,1B1,1B2,1MI,2A1,2A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01647; TAG: N2238; NAME: TNM Clin T, Clin Size, Site Spec - Ed 7 (SEER)
    public boolean naaccr01647(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] CLINT = new char[5], TSIZELOW = new char[4], TSIZEHIGH = new char[4], GPCLINT = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_tnm_msg = new char[79]
        
        
        char[] t_GrpTCcode = new char[10]
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2018)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorSizeClinical) || functions.GEN_INLIST(untrimmedline.tumorSizeClinical, "999"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04A")) {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "129, 130-139", "(C\\d\\d\\d)", 2, 3))
                            functions.GEN_STRCPY(SiteGrp, "04E")
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "17B")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "241", "(C\\d\\d\\d)", 2, 3))
                                functions.GEN_STRCPY(SiteGrp, "17D")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "04D")
                                else {
                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                            functions.GEN_STRCPY(SiteGrp, "08A")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                                functions.GEN_STRCPY(SiteGrp, "08B")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "08C")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                            functions.GEN_STRCPY(SiteGrp, "08F")
                                        else
                                            functions.GEN_STRCPY(SiteGrp, "999")
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                            functions.GEN_STRCPY(SiteGrp, "08D")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                                functions.GEN_STRCPY(SiteGrp, "08F")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                                    functions.GEN_STRCPY(SiteGrp, "16A")
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                            functions.GEN_STRCPY(SiteGrp, "020")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                                functions.GEN_STRCPY(SiteGrp, "022")
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                                    else {
                                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                                        else
                                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        else {
                                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "003, 04D, 04E, 04F, 007, 015, 024, 025, 027, 028, 029, 030, 032, 47A, 47B") && !functions.GEN_INLIST(SiteGrp, "043, 049, 053, 054, 08A, 08B, 08C, 08D, 13B, 16A, 16B, 17A, 17B, 17D, 17E"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c1, c1A, c1MI") && functions.GEN_INLIST(untrimmedline.tumorSizeClinical, "990"))
                return true
            if (functions.GEN_INLIST(SiteGrp, "025")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c2A") && functions.GEN_INLIST(untrimmedline.tumorSizeClinical, "990"))
                    return true
            }
            functions.GEN_STRCPY(t_GrpTCcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpTCcode, untrimmedline.tnmClinT)
        
            if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_CLINTSIZ, context.NAACCR_CLINTSIZ_GPCLINT, ['GPCODE':GPCODE, 'CLINT':CLINT, 'TSIZELOW':TSIZELOW, 'TSIZEHIGH':TSIZEHIGH, 'GPCLINT':GPCLINT])) {
                if (functions.GEN_STRCMP(untrimmedline.tumorSizeClinical, TSIZELOW) < 0 || functions.GEN_STRCMP(untrimmedline.tumorSizeClinical, TSIZEHIGH) > 0) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin T of ${untrimmedline.tnmClinT} is not consistent with Tumor Size Clinical of ${untrimmedline.tumorSizeClinical}')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01648; TAG: N2232; NAME: TNM Clin T, Date of Diagnosis (COC)
    public boolean naaccr01648(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmClinT)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(code, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "X,0-4", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "ISU, ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A1,1A2,1B1,1B2,1MI,2A1,2A2", "(c[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01649; TAG: N2403; NAME: TNM Clin T, Date of Diagnosis (SEER)
    public boolean naaccr01649(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if ((dx_year > 2015) && (functions.GEN_EMPTY(untrimmedline.tnmClinT)))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "cX,c0,c1,c1A,c1A1,c1A2,c1B,c1B1,c1B2,c1C,c1D,c1MI,c2,c2A,c2A1,c2A2,c2B,c2C,c2D")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c3,c3A,c3B,c3C,c3D,c4,c4A,c4B,c4C,c4D,c4E,pA,pIS,pISU,pISD,88"))
                    return false
            }
        }
        else
            return true
        
        return true

    }

    // ID: NAACCR-01650; TAG: N2234; NAME: TNM Clin T, Histology, Grade, Thyroid (COC)
    public boolean naaccr01650(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C739"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8019, 8022-8029, 8033-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4") && functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c4,c4A,c4B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8020, 8021, 8030, 8031, 8032") && functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c4,c4A,c4B"))
                return false
        }
        return true

    }

    // ID: NAACCR-01651; TAG: N2235; NAME: TNM Clin T, SSF 2 Melanoma Conjunctiva (COC)
    public boolean naaccr01651(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C690") || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010,015")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "1A, 2A, 2C", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "020,025")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "1B, 2B, 2D", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "030")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "1C, 2B, 2D", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "035")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "1C", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "040")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "1D, 2B, 2D", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "045")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "1D", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return false
        }
        return true

    }

    // ID: NAACCR-01652; TAG: N2236; NAME: TNM Clin T, SSF 3 Soft Tissue (COC)
    public boolean naaccr01652(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if ((functions.GEN_INLIST(untrimmedline.primarySite, "481-482, 488", "(C\\d\\d\\d)", 2, 3) && !functions.GEN_INLIST(untrimmedline.sex, "2,6") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8934, 8940-9136, 9142-9582")) || (functions.GEN_INLIST(untrimmedline.primarySite, "481-482, 488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.sex, "2,6") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921, 9120-9136, 9142-9582")) || (functions.GEN_INLIST(untrimmedline.primarySite, "380-383,388,470-476,478-479,490-496, 498-499", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8935, 8940-9136, 9142-9582")) || (functions.GEN_INLIST(untrimmedline.primarySite, "C480") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8934, 8940-9136, 9142-9582"))) {
        
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988"))
                return true
            if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
                return true
            if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
                return true
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "010")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "1A, 2A", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return false
            }
        }
        return true

    }

    // ID: NAACCR-01653; TAG: N2237; NAME: TNM Clin T, Surgery, Prostate (COC)
    public boolean naaccr01653(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxSummSurgPrimSite)) {
            return true
        }
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "619", "(C\\d\\d\\d)", 2, 3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8110,8140-8576,8940-8950, 8980-8981"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "1A,1B", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "00,99"))
                return false
        }
        return true

    }

    // ID: NAACCR-01654; TAG: N2349; NAME: TNM Fields, Type of Reporting Source (SEER)
    public boolean naaccr01654(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "88") || !functions.GEN_INLIST(untrimmedline.tnmClinN, "88") || !functions.GEN_INLIST(untrimmedline.tnmClinM, "88") || !functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || !functions.GEN_INLIST(untrimmedline.tnmPathT, "88") || !functions.GEN_INLIST(untrimmedline.tnmPathN, "88") || !functions.GEN_INLIST(untrimmedline.tnmPathM, "88") || !functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88"))
                return false
        }
        return true

    }

    // ID: NAACCR-01655; TAG: N2318; NAME: TNM Groups Beh 3 with Insitu 88 (COC)
    public boolean naaccr01655(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        char[] t_tnm_msg = new char[79]
        
        int dx_year
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,2"))
            return true
        if (functions.GEN_INLIST(untrimmedline.overRideSiteTnmStggrp, "1")) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "88") && (functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup)) && (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88") || functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)))
                return true
            else
                return functions.GEN_ERROR_MSG(binding, 'TNM Edition No/Stage values must be coded 88 if over-ride set for pediatric case')
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9811-9818, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "046")) {
                                                    if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                        functions.GEN_STRCPY(SiteGrp, "46A")
                                                    else
                                                        functions.GEN_STRCPY(SiteGrp, "46B")
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                                else {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51B")
                                                                    else
                                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "053")) {
        
                                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "007,08A,08B,08C,08D,08E,08F,009,13B,16A,16B,17B,17C,018") || functions.GEN_INLIST(SiteGrp, "36B,36C, 37A,041,043,47A,47B,51A,51B,57B")) {
            if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
                    return false
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "039")) {
            if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
                    return false
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "053,054")) {
            if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmClinM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
                    return false
            }
        }
        return true

    }

    // ID: NAACCR-01656; TAG: N2239; NAME: TNM Groups Not Stageable - Insitu (COC)
    public boolean naaccr01656(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        char[] t_tnm_msg = new char[79]
        
        int dx_year
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1,3")) {
            return true
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9811-9818, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "046")) {
                                                    if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                        functions.GEN_STRCPY(SiteGrp, "46A")
                                                    else
                                                        functions.GEN_STRCPY(SiteGrp, "46B")
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                                else {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51B")
                                                                    else
                                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                                }
                                                            }
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "007,08A,08B,08C,08D,08E,08F,009,13B,16A,16B,17B,17C,018") || functions.GEN_INLIST(SiteGrp, "36B,36C, 37A,039,041,043,47A,47B,053,054,51A,51B,57B")) {
            if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "2")) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmClinN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmClinM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
                    return true
                else {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return functions.GEN_ERROR_MSG(binding, 'For Primary Site (${untrimmedline.primarySite}), Histologic Type ICD-O-3 (${untrimmedline.histologicTypeIcdO3}), and Behavior Code ICD-O-3 (${untrimmedline.behaviorCodeIcdO3}): all TNM fields must = 88')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01657; TAG: N2240; NAME: TNM M, Mets at DX, Melanoma of Skin (COC)
    public boolean naaccr01657(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.metsAtDxLung))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.metsAtDxLung, "1")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "c1B, p1B, c1C, p1C") && !functions.GEN_INLIST(untrimmedline.tnmPathM, "c1B, c1C, p1B,p1C"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.metsAtDxLung, "0, 9")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "c1B, p1B") || functions.GEN_INLIST(untrimmedline.tnmPathM, "c1B,p1B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "c1B, p1B") || functions.GEN_INLIST(untrimmedline.tnmPathM, "c1B, p1B")) {
            if (!functions.GEN_INLIST(untrimmedline.metsAtDxLung, "1"))
                return false
        }
        return true

    }

    // ID: NAACCR-01659; TAG: N2242; NAME: TNM M, SSF 4 Melanoma of Skin (COC)
    public boolean naaccr01659(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor4) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "010, 020, 030")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "c1A, c1B, p1A, p1B") || functions.GEN_INLIST(untrimmedline.tnmPathM, "c1A, c1B, p1A,p1B"))
                return false
        }
        return true

    }

    // ID: NAACCR-01660; TAG: N2243; NAME: TNM M, SSF 4 Uveal Melanoma (COC)
    public boolean naaccr01660(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "693, 694", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinM) && functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor4) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinM, "c1, c1A, c1B, c1C, p1, p1A, p1B, p1C") || functions.GEN_INLIST(untrimmedline.tnmPathM, "c1, c1A, c1B, c1C, p1, p1A, p1B, p1C"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "001-030, 991")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "c1A, p1A") && !functions.GEN_INLIST(untrimmedline.tnmPathM, "c1A, p1A"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "031-080, 992")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "c1B, p1B") && !functions.GEN_INLIST(untrimmedline.tnmPathM, "c1B, p1B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "081-980, 993")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinM, "c1C, p1C") && !functions.GEN_INLIST(untrimmedline.tnmPathM, "c1C, p1C"))
                return false
        }
        return true

    }

    // ID: NAACCR-01661; TAG: N2245; NAME: TNM N, SSF 3 Melanoma of Skin (COC)
    public boolean naaccr01661(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "005")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "005") && !functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "c0,p0,p2C,pX"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path N: ${untrimmedline.tnmPathN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "010") && !functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "pX,p1A,p2A,p3"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path N: ${untrimmedline.tnmPathN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "043")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "045")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "048")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c3", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "100")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2C", "(c[A-Za-z0-9][A-Za-z0-9]\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "999")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        return true

    }

    // ID: NAACCR-01662; TAG: N2246; NAME: TNM N, SSF 3 Merkel Cell (COC)
    public boolean naaccr01662(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440, 442-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8247"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "005")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "005") && !functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "c0, p0, p2, pX"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path N: ${untrimmedline.tnmPathN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Clin N: ${untrimmedline.tnmClinN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "010") && !functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "p1A, p2"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path N: ${untrimmedline.tnmPathN} and CS Site-Specific Factor 3: ${untrimmedline.csSiteSpecificFactor3}')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "020")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "100, 150")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "999")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)"))
                return false
        }
        return true

    }

    // ID: NAACCR-01663; TAG: N2247; NAME: TNM N, SSF 3, 5 Corpus Uteri (COC)
    public boolean naaccr01663(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] CSSSF4 = new char[100], CSSSF5 = new char[100], NODES = new char[100], SS4SS5 = new char[100]
        
        char[] nodes45 = new char[7]
        char[] pnodes = new char[5]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "540-559", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8790,8950-8951,8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) && functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "000") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000")) {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "p0", "(p[A-Za-z0-9]\\s\\s)"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}), and CS Site-Specific Factor 5 (${untrimmedline.csSiteSpecificFactor5})')
            }
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "001-090, 095, 097") || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "001-090, 095, 097")) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathN, "c0, p0") && functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM Clin N (${untrimmedline.tnmClinN}), TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}), and CS Site-Specific Factor 5 (${untrimmedline.csSiteSpecificFactor5})')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "098, 999") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "098, 999")) {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathN) && !functions.GEN_INLIST(untrimmedline.tnmPathN, "c0, pX"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3}), and CS Site-Specific Factor 5 (${untrimmedline.csSiteSpecificFactor5})')
        }
        return true

    }

    // ID: NAACCR-01664; TAG: N2248; NAME: TNM N, SSF 4, 6 Fallopian Tube (COC)
    public boolean naaccr01664(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] CSSSF4 = new char[100], CSSSF5 = new char[100], NODES = new char[100], SS4SS5 = new char[100]
        
        char[] nodes45 = new char[7]
        char[] pnodes = new char[5]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "570", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor4) && functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "988") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p0", "(p[A-Za-z0-9]\\s\\s)")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000, 098") || !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "000, 098"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 4 (${untrimmedline.csSiteSpecificFactor4}), and CS Site-Specific Factor 6 (${untrimmedline.csSiteSpecificFactor6})')
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "001-090, 095, 097") || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "001-090, 095, 097")) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathN, "c0, p0") && functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM Clin N (${untrimmedline.tnmClinN}), TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 4 (${untrimmedline.csSiteSpecificFactor4}), and CS Site-Specific Factor 6 (${untrimmedline.csSiteSpecificFactor6})')
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "c0", "(c[A-Za-z0-9]\\s\\s)")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "098, 999") || !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "098, 999"))
                functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 4 (${untrimmedline.csSiteSpecificFactor4}), and CS Site-Specific Factor 6 (${untrimmedline.csSiteSpecificFactor6})')
        }
        return true

    }

    // ID: NAACCR-01665; TAG: N2249; NAME: TNM N, SSF 5 Testis (COC)
    public boolean naaccr01665(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "620, 621, 629", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8590-8670, 8940-8950, 8980-8981, 9060-9090, 9100-9105"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinN) && functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "c1, c2,c3", "(c[A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathN, "p1, p2, p3", "(p[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c1", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathN, "p1", "(p[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "020")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c2", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathN, "p2", "(p[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "030")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinN, "c3", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathN, "p3", "(p[A-Za-z0-9]\\s\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "999")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinN, "c0", "(c[A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathN, "p0", "(p[A-Za-z0-9]\\s\\s)"))
                return false
        }
        return true

    }

    // ID: NAACCR-01666; TAG: N2244; NAME: TNM N, Size Nodes, Site Spec - Ed 7 (COC)
    public boolean naaccr01666(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] NODECATEGORY = new char[100], NODELOW = new char[4], NODEHIGH = new char[4], GPNODECAT = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_tnm_msg = new char[79]
        
        char[] t_GrpNPcode = new char[14]
        char[] t_GRpNPnode = new char[14]
        char[] t_GrpNCcode = new char[14]
        char[] t_GrpNCnode = new char[14]
        char[] nodessf = new char[4]
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) && functions.GEN_EMPTY(untrimmedline.tnmClinN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88") && functions.GEN_INLIST(untrimmedline.tnmClinN, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "003, 04A, 04B, 04C, 04D, 05A, 05B, 006, 007, 029")) {
            return true
        }
        if (functions.GEN_INLIST(SiteGrp, "003, 04B, 04A, 04C, 04D, 05A, 05B, 006, 007"))
            functions.GEN_STRCPY(nodessf, untrimmedline.csSiteSpecificFactor1)
        else {
            if (functions.GEN_INLIST(SiteGrp, "029"))
                functions.GEN_STRCPY(nodessf, untrimmedline.csSiteSpecificFactor16)
        }
        if (functions.GEN_AT(nodessf, "988") != 0) {
            return true
        }
        if (functions.GEN_INLIST(nodessf, "990, 991, 992, 993"))
            functions.GEN_STRCPY(nodessf, "030")
        if (functions.GEN_INLIST(nodessf, "994, 995, 996"))
            functions.GEN_STRCPY(nodessf, "050")
        if (functions.GEN_INLIST(nodessf, "997"))
            functions.GEN_STRCPY(nodessf, "061")
        if (functions.GEN_INLIST(nodessf, "999")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            functions.GEN_STRCPY(t_GrpNCcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpNCcode, untrimmedline.tnmClinN)
            functions.GEN_STRCPY(t_GrpNCnode, t_GrpNCcode)
            functions.GEN_STRCAT(t_GrpNCnode, nodessf)
        
            if (functions.GEN_LOOKUP(t_GrpNCcode, context.NAACCR_NODESIZE, context.NAACCR_NODESIZE_GPNODECAT, ['GPCODE':GPCODE, 'NODELOW':NODELOW, 'NODEHIGH':NODEHIGH, 'GPNODECAT':GPNODECAT])) {
                if (functions.GEN_STRCMP(nodessf, NODELOW) < 0 || functions.GEN_STRCMP(nodessf, NODEHIGH) > 0) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return functions.GEN_ERROR_MSG(binding, 'TNM Clin N of ${untrimmedline.tnmClinN} is not consistent with coded size of nodes')
                }
            }
        }
        else {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
                functions.GEN_STRCPY(t_GrpNPcode, SiteGrp)
                functions.GEN_STRCAT(t_GrpNPcode, untrimmedline.tnmPathN)
                functions.GEN_STRCPY(t_GRpNPnode, t_GrpNPcode)
                functions.GEN_STRCAT(t_GRpNPnode, nodessf)
        
                if (functions.GEN_LOOKUP(t_GrpNPcode, context.NAACCR_NODESIZE, context.NAACCR_NODESIZE_GPNODECAT, ['GPCODE':GPCODE, 'NODELOW':NODELOW, 'NODEHIGH':NODEHIGH, 'GPNODECAT':GPNODECAT])) {
                    if (functions.GEN_STRCMP(nodessf, NODELOW) >= 0 && functions.GEN_STRCMP(nodessf, NODEHIGH) <= 0) {
                        return true
                    }
                    else {
                        if (functions.GEN_STRCMP(nodessf, NODELOW) < 0 || functions.GEN_STRCMP(nodessf, NODEHIGH) > 0) {
                            if (functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
                                functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                return functions.GEN_ERROR_MSG(binding, 'TNM Path N of ${untrimmedline.tnmPathN} is not consistent with coded size of nodes')
                            }
                            else {
                                if (!functions.GEN_EMPTY(untrimmedline.tnmClinN)) {
                                    functions.GEN_STRCPY(t_GrpNCcode, SiteGrp)
                                    functions.GEN_STRCAT(t_GrpNCcode, untrimmedline.tnmClinN)
                                    functions.GEN_STRCPY(t_GrpNCnode, t_GrpNCcode)
                                    functions.GEN_STRCAT(t_GrpNCnode, nodessf)
        
        
                                    if (functions.GEN_LOOKUP(t_GrpNCcode, context.NAACCR_NODESIZE, context.NAACCR_NODESIZE_GPNODECAT, ['GPCODE':GPCODE, 'NODELOW':NODELOW, 'NODEHIGH':NODEHIGH, 'GPNODECAT':GPNODECAT])) {
                                        if (functions.GEN_STRCMP(nodessf, NODELOW) < 0 || functions.GEN_STRCMP(nodessf, NODEHIGH) > 0) {
                                            functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                            functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                            functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                            return functions.GEN_ERROR_MSG(binding, 'TNM Clin N of ${untrimmedline.tnmClinN} and TNM Path N of ${untrimmedline.tnmPathN} not consistent with coded size of nodes')
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01667; TAG: N2251; NAME: TNM Path Descriptor, RX Dates - Ed 7 (COC)
    public boolean naaccr01667(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dtcmp
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016) {
            return true
        }
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathDescriptor) || functions.GEN_EMPTY(untrimmedline.rxDateMostDefinSurg))
            return true
        if (functions.GEN_EMPTY(untrimmedline.rxDateChemo) && functions.GEN_EMPTY(untrimmedline.rxDateBrm) && functions.GEN_EMPTY(untrimmedline.rxDateHormone) && functions.GEN_EMPTY(untrimmedline.rxDateRadiation) && functions.GEN_EMPTY(untrimmedline.rxDateOther)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.rxDateRadiation)) {
            dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateRadiation, untrimmedline.rxDateMostDefinSurg, ((Integer)context.NAACCR_GEN_DT_MAX))
        
            if (dtcmp != ((Integer)context.NAACCR_GEN_DT_ERROR)) {
                if (dtcmp < 0)
                    return true
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.rxDateBrm)) {
            dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateBrm, untrimmedline.rxDateMostDefinSurg, ((Integer)context.NAACCR_GEN_DT_MAX))
        
            if (dtcmp != ((Integer)context.NAACCR_GEN_DT_ERROR)) {
                if (dtcmp < 0)
                    return true
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.rxDateChemo)) {
            dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateChemo, untrimmedline.rxDateMostDefinSurg, ((Integer)context.NAACCR_GEN_DT_MAX))
        
            if (dtcmp != ((Integer)context.NAACCR_GEN_DT_ERROR)) {
                if (dtcmp < 0)
                    return true
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.rxDateHormone)) {
            dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateHormone, untrimmedline.rxDateMostDefinSurg, ((Integer)context.NAACCR_GEN_DT_MAX))
        
            if (dtcmp != ((Integer)context.NAACCR_GEN_DT_ERROR)) {
                if (dtcmp < 0)
                    return true
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.rxDateOther)) {
            dtcmp = functions.GEN_DATECMP_IOP(binding, untrimmedline.rxDateOther, untrimmedline.rxDateMostDefinSurg, ((Integer)context.NAACCR_GEN_DT_MAX))
        
            if (dtcmp != ((Integer)context.NAACCR_GEN_DT_ERROR)) {
                if (dtcmp < 0)
                    return true
            }
        }
        return false

    }

    // ID: NAACCR-01668; TAG: N2348; NAME: TNM Path Descriptor, TNM Fields (NPCR)
    public boolean naaccr01668(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathT) || !functions.GEN_EMPTY(untrimmedline.tnmPathM) || !functions.GEN_EMPTY(untrimmedline.tnmPathN) || !functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathDescriptor))
                return false
        }
        return true

    }

    // ID: NAACCR-01669; TAG: N2253; NAME: TNM Path M Conv (COC)
    public boolean naaccr01669(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathM)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X,0,1", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0,1", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E, 1M", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1M1", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(c0I\\+)"))
            return true
        return false

    }

    // ID: NAACCR-01670; TAG: N2319; NAME: TNM Path M c,p pre2016 (NAACCR)
    public boolean naaccr01670(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathM, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathM, "c1M, c1M1"))
            return false
        if (functions.GEN_MATCH(untrimmedline.tnmPathM, "(p0I\\+)"))
            return false
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathM, 1, 1), "c,p")) {
            functions.GEN_STRCPY(code, functions.GEN_SUBSTR(untrimmedline.tnmPathM, 2, 3))
            functions.GEN_STRCAT(code, " ")
        }
        else
            functions.GEN_STRCPY(code, untrimmedline.tnmPathM)
        if (functions.GEN_INLIST(code, "X, 0-1", "([A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E, 1M", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "1M1", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        if (functions.GEN_MATCH(code, "(0I\\+\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01671; TAG: N2252; NAME: TNM Path M, Date of Diagnosis (COC)
    public boolean naaccr01671(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathM))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathM)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(code, "1", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0,1", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A, 1B, 1C, 1D, 1E", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(c0I\\+)"))
            return true
        return false

    }

    // ID: NAACCR-01672; TAG: N2255; NAME: TNM Path N Conv (COC)
    public boolean naaccr01672(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathN)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X,0-4", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 1M, 2A, 2B, 2C, 3A, 3B, 3C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(p0I\\-)") || functions.GEN_MATCH(code, "(p0I\\+)") || functions.GEN_MATCH(code, "(p0M\\-)") || functions.GEN_MATCH(code, "(p0M\\+)") || functions.GEN_MATCH(code, "(p1MI)") || functions.GEN_MATCH(code, "(pI\\-\\s)") || functions.GEN_MATCH(code, "(pI\\+\\s)") || functions.GEN_MATCH(code, "(pM\\-\\s)") || functions.GEN_MATCH(code, "(pM\\+\\s)"))
            return true
        if (functions.GEN_INLIST(code, "c0"))
            return true
        return false

    }

    // ID: NAACCR-01673; TAG: N2320; NAME: TNM Path N c,p pre2016 (NAACCR)
    public boolean naaccr01673(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathN, 1, 1), "c")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "c0"))
                return false
        }
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathN, 1, 1), "c,p")) {
            functions.GEN_STRCPY(code, functions.GEN_SUBSTR(untrimmedline.tnmPathN, 2, 3))
            functions.GEN_STRCAT(code, " ")
        }
        else
            functions.GEN_STRCPY(code, untrimmedline.tnmPathN)
        if (functions.GEN_INLIST(code, "X, 0-4", "([A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 1M, 2A, 2B, 2C, 3A, 3B, 3C", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_MATCH(code, "(0I\\-\\s)") || functions.GEN_MATCH(code, "(0I\\+\\s)") || functions.GEN_MATCH(code, "(0M\\-\\s)") || functions.GEN_MATCH(code, "(0M\\+\\s)") || functions.GEN_MATCH(code, "(1MI\\s)") || functions.GEN_MATCH(code, "(I\\-\\s\\s)") || functions.GEN_MATCH(code, "(I\\+\\s\\s)") || functions.GEN_MATCH(code, "(M\\-\\s\\s)") || functions.GEN_MATCH(code, "(M\\+\\s\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01674; TAG: N2254; NAME: TNM Path N, Date of Diagnosis (COC)
    public boolean naaccr01674(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathN)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X, 0-4", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 3C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_MATCH(code, "(p0I\\-)") || functions.GEN_MATCH(code, "(p0I\\+)") || functions.GEN_MATCH(code, "(p0M\\-)") || functions.GEN_MATCH(code, "(p0M\\+)") || functions.GEN_MATCH(code, "(p1MI)"))
            return true
        if (functions.GEN_INLIST(code, "X, 0-4", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "0A, 0B, 1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 3C", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01676; TAG: N2256; NAME: TNM Path N, Reg Nodes Ex - Ed 7 (COC)
    public boolean naaccr01676(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.regionalNodesExamined))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "180,182-189,199,209", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8152,8154-8231,8243-8245,8247-8248,8250-8576,8940-8950,8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "1C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440,442-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8247")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518,519,600-602,608,609,632", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576,8940-8950,8980-8981,9020")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2B", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "540-549,559", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8790, 8950-8951, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "1,2", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "692", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9510-9514")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "441,690,695-696", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9738,9811-9818,9820-9837")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "3,4", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.regionalNodesExamined, "00,99")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathN, "pX, c0"))
                return false
        }
        return true

    }

    // ID: NAACCR-01677; TAG: N2257; NAME: TNM Path N, Reg Nodes Pos - Ed 7 (COC)
    public boolean naaccr01677(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016 || dx_year > 2017) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_EMPTY(untrimmedline.regionalNodesPositive)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "180,182-189,199,209", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8152,8154-8231,8243-8245,8247-8248,8250-8576,8940-8950,8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "1C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440,442-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8247")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518,519,600-602,608,609,632", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576,8940-8950,8980-8981,9020")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2B", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "540-549,559", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8790, 8950-8951, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "1,2", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "692", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9510-9514")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "441,690,695-696", "(C\\d\\d\\d)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9738,9811-9818,9820-9837")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "3,4", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                    return true
            }
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "1,2,3", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(untrimmedline.tnmPathN, "1A,1B,1C,1M,2A,2B,2C,3A,3B,3C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) || functions.GEN_INLIST(untrimmedline.tnmPathN, "1MI", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.regionalNodesPositive, "00,98,99"))
                return false
        }
        return true

    }

    // ID: NAACCR-01678; TAG: N2258; NAME: TNM Path N, Reg Nodes Pos,Ex, Breast - Ed 7 (COC)
    public boolean naaccr01678(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) {
            return true
        }
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981, 9020")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.regionalNodesPositive) || functions.GEN_EMPTY(untrimmedline.regionalNodesExamined))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0((I)|(M))((\\+)|(\\-)))")) {
            if (functions.GEN_INLIST(untrimmedline.regionalNodesExamined, "00, 99"))
                return false
            if (!functions.GEN_INLIST(untrimmedline.regionalNodesPositive, "00"))
                return false
        }
        return true

    }

    // ID: NAACCR-01679; TAG: N2260; NAME: TNM Path N, SSF 3, 4, 5 Breast (COC)
    public boolean naaccr01679(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] CSSSF4 = new char[4], CSSSF5 = new char[4], NODES = new char[5], SS4SS5 = new char[100]
        
        char[] nodes45 = new char[7]
        char[] pnodes = new char[5]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981, 9020"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988")) {
            if (functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0\\s\\s)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0I\\-)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0I\\+)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0M\\-)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0M\\+)")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "000"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path N (${untrimmedline.tnmPathN}) and CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3})')
            }
            if (functions.GEN_INLIST(untrimmedline.tnmPathN, "pX, c0")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "097, 098, 099"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path N (${untrimmedline.tnmPathN}) and CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3})')
            }
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000") && functions.GEN_INLIST(untrimmedline.tnmPathN, "c0"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "000") && functions.GEN_INLIST(untrimmedline.tnmClinN, "c0") && functions.GEN_INLIST(untrimmedline.tnmPathN, "pX"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "987") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "987") && functions.GEN_INLIST(untrimmedline.tnmPathN, "pX"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "987") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "987") && functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0I\\+)"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor4) || !functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor5))
            functions.GEN_STRCPY(nodes45, untrimmedline.csSiteSpecificFactor4)
        functions.GEN_STRCAT(nodes45, untrimmedline.csSiteSpecificFactor5)
        
        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "988") || !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor5, "988")) {
            if (functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0\\s\\s)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0I\\-)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0I\\+)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0M\\-)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(p0M\\+)") || functions.GEN_MATCH(untrimmedline.tnmPathN, "(pX\\s\\s)"))
                functions.GEN_STRCPY(pnodes, untrimmedline.tnmPathN)
            else {
                if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p1, p2, p1MI, p1A, p1B, p1C, p2, p2A, p2B, p3, p3A, p3B, p3C"))
                    functions.GEN_STRCPY(pnodes, "p1")
            }
            if (functions.GEN_LOOKUP(nodes45, context.NAACCR_BREAST45, context.NAACCR_BREAST45_SS4SS5, ['NODES':NODES, 'SS4SS5':SS4SS5])) {
                if (functions.GEN_STRCMP(functions.GEN_TRIM(pnodes, ((Integer)context.NAACCR_GEN_RIGHT)), NODES) != 0)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path N (${untrimmedline.tnmPathN}), CS Site-Specific Factor 4 (${untrimmedline.csSiteSpecificFactor4}), and CS Site-Specific Factor 5 (${untrimmedline.csSiteSpecificFactor5}) conflict')
            }
        }
        return true

    }

    // ID: NAACCR-01680; TAG: N2261; NAME: TNM Path N, SSF 4 Colon (COC)
    public boolean naaccr01680(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "180, 182-189,  199, 209", "(C\\d\\d\\d)", 2, 3))
            return true
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8152, 8154-8231, 8243-8245,8247-8248") && !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8250-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_INLIST(untrimmedline.tnmPathN, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor4) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000")) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p1C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p1C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000, 998, 999"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "p0", "(p[A-Za-z0-9]\\s\\s)")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor4, "000, 998, 999"))
                return false
        }
        return true

    }

    // ID: NAACCR-01681; TAG: N2423; NAME: TNM Path Stage Group, 2016 (COC)
    public boolean naaccr01681(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 && dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0-4", "(\\d\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0A,0S,1A,1B,1C,1S,2A,2B,2C,3A,3B,3C,4A,4B,4C,88,99,OC", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0IS,1A1,1A2,1B1,1B2,2A1,2A2,3C1,3C2,4A1,4A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01682; TAG: N2395; NAME: TNM Path Stage Group, Date of Diagnosis (COC)
    public boolean naaccr01682(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY) || dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015 && dx_year < 2018) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup))
                return functions.GEN_ERROR_MSG(binding, 'If year of Date of Diagnosis = ${untrimmedline.dateOfDiagnosis.formatDate()} then TNM Path Stage Group cannot be blank')
        }
        return true

    }

    // ID: NAACCR-01684; TAG: N2262; NAME: TNM Path Stage Group, Prim Site, Surg - Ed 7 (COC)
    public boolean naaccr01684(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup) || functions.GEN_EMPTY(untrimmedline.rxSummSurgPrimSite)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "670-679", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0A", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0IS", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)")) {
                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "30-98"))
                    return functions.GEN_ERROR_MSG(binding, 'For Primary Site (${untrimmedline.primarySite}), Histologic Type ICD-O-3 (${untrimmedline.histologicTypeIcdO3}), TNM Path Stage Group (${untrimmedline.tnmPathStageGroup}): RX Summ--Surg Prim Site (${untrimmedline.rxSummSurgPrimSite}) must = 30-90.')
            }
        }
        else {
            if (functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0", "([A-Za-z0-9]\\s\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0A", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0IS", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)")) {
                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98"))
                    return functions.GEN_ERROR_MSG(binding, 'For Primary Site (${untrimmedline.primarySite}), Histologic Type ICD-O-3 (${untrimmedline.histologicTypeIcdO3}), TNM Path Stage Group (${untrimmedline.tnmPathStageGroup}): RX Summ--Surg Prim Site (${untrimmedline.rxSummSurgPrimSite}) must = 20 - 90')
            }
        }
        
        return true

    }

    // ID: NAACCR-01685; TAG: N2264; NAME: TNM Path T Conv (COC)
    public boolean naaccr01685(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathT)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X,A,0-4", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "IS,1A,1B,1C,1D,1M,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E,A1,A2,B1,B2", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A1,1A2,1B1,1B2,1MI,2A1,2A2, ISU, ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01686; TAG: N2324; NAME: TNM Path T c,p pre2016 (NAACCR)
    public boolean naaccr01686(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year > 2015)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88,SU,SD", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "ISPU,ISPD", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])"))
            return true
        if (functions.GEN_INLIST(functions.GEN_SUBSTR(untrimmedline.tnmPathT, 1, 1), "c,p")) {
            functions.GEN_STRCPY(code, functions.GEN_SUBSTR(untrimmedline.tnmPathT, 2, 3))
            functions.GEN_STRCAT(code, " ")
        }
        else
            functions.GEN_STRCPY(code, untrimmedline.tnmPathT)
        if (functions.GEN_INLIST(code, "X,A, 0-4", "([A-Za-z0-9]\\s\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "IS,1A,1B,1C,1D,1M,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E,A1,A2,B1,B2", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (functions.GEN_INLIST(code, "ISU,ISD,1A1,1A2,1B1,1B2,1MI,2A1,2A2", "([A-Za-z0-9][A-Za-z0-9][A-Za-z0-9]\\s)"))
            return true
        return false

    }

    // ID: NAACCR-01687; TAG: N2263; NAME: TNM Path T, Date of Diagnosis (COC)
    public boolean naaccr01687(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathT)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (functions.GEN_INLIST(code, "X,A,0-4", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "IS,1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A1,1A2,1B1,1B2,1MI,2A1,2A2, ISU, ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "X,0-4", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D,4E", "(c[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
            return true
        if (functions.GEN_INLIST(code, "1A1,1A2,1B1,1B2,1MI,2A1,2A2", "(c[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3))
            return true
        return false

    }

    // ID: NAACCR-01688; TAG: N2265; NAME: TNM Path T, Depth, Melanoma - Ed 7 (COC)
    public boolean naaccr01688(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] PATHT = new char[5], SIZELOW = new char[4], SIZEHIGH = new char[4]
        
        int req_flag
        int dx_year
        
        char[] t_GrpTPcode = new char[10]
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        char[] ssfdepth = new char[4]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "031, 050"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "031,050")) {
            if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988, 999"))
                return true
        }
        if (functions.GEN_INLIST(SiteGrp, "031, 050"))
            functions.GEN_STRCPY(ssfdepth, untrimmedline.csSiteSpecificFactor1)
        if (functions.GEN_INLIST(SiteGrp, "050")) {
            if (functions.GEN_INLIST(ssfdepth, "991"))
                functions.GEN_STRCPY(ssfdepth, "005")
            if (functions.GEN_INLIST(ssfdepth, "992,993,994,995"))
                functions.GEN_STRCPY(ssfdepth, "150")
            if (functions.GEN_INLIST(ssfdepth, "996"))
                functions.GEN_STRCPY(ssfdepth, "980")
            if (functions.GEN_INLIST(ssfdepth, "998") && functions.GEN_INLIST(untrimmedline.tnmPathT, "p1A, p1B, p1C, p2A, p2B, p2C"))
                return false
        }
        if (functions.GEN_INLIST(SiteGrp, "031, 050")) {
            functions.GEN_STRCPY(t_GrpTPcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpTPcode, untrimmedline.tnmPathT)
        }
        if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_TUMDEPTH, context.NAACCR_TUMDEPTH_GPPATHT, ['GPCODE':GPCODE, 'PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
            if (functions.GEN_STRCMP(ssfdepth, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdepth, SIZEHIGH) > 0)
                return false
        }
        return true

    }

    // ID: NAACCR-01689; TAG: N2267; NAME: TNM Path T, Path Size, Site Spec - Ed 7 (SEER)
    public boolean naaccr01689(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] PATHT = new char[5], TSIZELOW = new char[4], TSIZEHIGH = new char[4], GPPATHT = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_tnm_msg = new char[79]
        
        char[] t_GrpTPcode = new char[10]
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorSizePathologic) || functions.GEN_INLIST(untrimmedline.tumorSizePathologic, "999"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827,9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04A")) {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "129, 130-139", "(C\\d\\d\\d)", 2, 3))
                            functions.GEN_STRCPY(SiteGrp, "04E")
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "17B")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "241", "(C\\d\\d\\d)", 2, 3))
                                functions.GEN_STRCPY(SiteGrp, "17D")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "04D")
                                else {
                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                            functions.GEN_STRCPY(SiteGrp, "08A")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                                functions.GEN_STRCPY(SiteGrp, "08B")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "08C")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                            functions.GEN_STRCPY(SiteGrp, "08F")
                                        else
                                            functions.GEN_STRCPY(SiteGrp, "999")
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                            functions.GEN_STRCPY(SiteGrp, "08D")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                                functions.GEN_STRCPY(SiteGrp, "08F")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                                    functions.GEN_STRCPY(SiteGrp, "16A")
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                            functions.GEN_STRCPY(SiteGrp, "020")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                                functions.GEN_STRCPY(SiteGrp, "022")
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                                    else {
                                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                                        else
                                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        else {
                                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "003, 04A, 04D, 04E, 007, 015, 024, 025, 027, 028, 029, 030, 032, 47A, 47B") && !functions.GEN_INLIST(SiteGrp, "043, 049, 053, 054, 08A, 08B, 08C, 08D, 13B, 16A, 16B, 17A, 17B, 17D, 17E"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p1, p1A, p1MI") && functions.GEN_INLIST(untrimmedline.tumorSizePathologic, "990"))
                return true
            if (functions.GEN_INLIST(SiteGrp, "025")) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p2A") && functions.GEN_INLIST(untrimmedline.tumorSizePathologic, "990"))
                    return true
            }
            functions.GEN_STRCPY(t_GrpTPcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpTPcode, untrimmedline.tnmPathT)
        
            if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_PATHTSIZ, context.NAACCR_PATHTSIZ_GPPATHT, ['GPCODE':GPCODE, 'PATHT':PATHT, 'TSIZELOW':TSIZELOW, 'TSIZEHIGH':TSIZEHIGH, 'GPPATHT':GPPATHT])) {
                if (functions.GEN_STRCMP(untrimmedline.tumorSizePathologic, TSIZELOW) < 0 || functions.GEN_STRCMP(untrimmedline.tumorSizePathologic, TSIZEHIGH) > 0) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return functions.GEN_ERROR_MSG(binding, 'TNM Path T of ${untrimmedline.tnmPathT} is not consistent with Tumor Size Pathologic of ${untrimmedline.tumorSizePathologic}')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01690; TAG: N2266; NAME: TNM Path T, Primary Site, Surgery - Ed 7 (COC)
    public boolean naaccr01690(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        char[] t_tnm_msg = new char[79]
        
        int dx_year
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] Site_HistLo = new char[20]
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_EMPTY(untrimmedline.rxSummSurgPrimSite)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88", "([A-Za-z0-9][A-Za-z0-9]\\s\\s)"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "046")) {
                                            if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                functions.GEN_STRCPY(SiteGrp, "46A")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "46B")
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                functions.GEN_STRCPY(SiteGrp, "51B")
                                                            else
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        functions.GEN_STRCPY(code, untrimmedline.tnmPathT)
        
        if (functions.GEN_INLIST(SiteGrp, "003,04A,04D,05A,05B,006,007,08A,08B,08C,08D,08E,08F") || functions.GEN_INLIST(SiteGrp, "009,10A,10B,011,13A,014,031,51B")) {
            if (functions.GEN_INLIST(code, "1, 2, 3, 4", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,1M,2A,2B,2C,2D,3A,3B,3C,3D,4A", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return false
                }
            }
        }
        else {
            if (functions.GEN_INLIST(SiteGrp, "04B,04C,012,13B,015,16A,16B,17A,17B,17C,020-026,029,030,034,035") || functions.GEN_INLIST(SiteGrp, "36A,36B,36C,37A,37B,038,040,042,044,46A,46B,47A,47B,048,050,054,57B")) {
                if (functions.GEN_INLIST(code, "1, 2, 3", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                    if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                        functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                        functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                        functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                        return false
                    }
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "032,049")) {
                    if (functions.GEN_INLIST(code, "1, 2, 3, 4", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B, 1C,1D,2A,2B,2C,2D,3A,3B,3C,3D", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) || functions.GEN_INLIST(code, "4A,4B,4C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) || functions.GEN_INLIST(code, "M1I", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3)) {
                        if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                            functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                            functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                            functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                            return false
                        }
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "039")) {
                        if (functions.GEN_INLIST(code, "1", "(p[A-Za-z0-9]\\s\\s)", 2, 3)) {
                            if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                return false
                            }
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "027,033")) {
                            if (functions.GEN_INLIST(code, "1, 2", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                    return false
                                }
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "028")) {
                                if (functions.GEN_INLIST(code, "1,2", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                    if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                        functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                        functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                        functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                        return false
                                    }
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "043")) {
                                    if (functions.GEN_INLIST(code, "1, 2, 3", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                        if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                            functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                            functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                            functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                            return false
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "052")) {
                                        if (functions.GEN_INLIST(code, "1, 2, 3, 4", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                                functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                                functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                                functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                                return false
                                            }
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "053")) {
                                            if (functions.GEN_INLIST(code, "1, 2, 3, 4", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                                    return false
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "51A")) {
                                                if (functions.GEN_INLIST(code, "1, 2, 3, 4", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,3C,3D,4A,4B,4C,4D", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "20-98")) {
                                                        functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                                        functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                                        functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                                        return false
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "041")) {
                                                    if (functions.GEN_INLIST(code, "2", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "2A,2B,2C", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                                                        if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "30-98")) {
                                                            functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                                            functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                                            functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                                            return false
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "042")) {
            if (functions.GEN_INLIST(code, "0,1,2,3", "(p[A-Za-z0-9]\\s\\s)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "40-98")) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return false
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "045")) {
            if (functions.GEN_INLIST(code, "1, 2, 3, 4", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(code, "1A,1B,1C,1D,2A,2B,2C,2D,3A,3B,4A", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
                if (!functions.GEN_INLIST(untrimmedline.rxSummSurgPrimSite, "30-98")) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    return false
                }
            }
        }
        return true

    }

    // ID: NAACCR-01691; TAG: N2268; NAME: TNM Path T, SSF 1 Retinoblastoma (COC)
    public boolean naaccr01691(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "692", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9510-9514"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "300, 410, 430, 435")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p1"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "440, 460, 465")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2A"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "470")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "490")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "540, 550, 560")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3A"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "570")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "590")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "725, ")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p4A"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "745, 755, 810")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p4"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "765, 775, 790")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p4B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "950")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p0"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "960, 970")) {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathT) && !functions.GEN_INLIST(untrimmedline.tnmPathT, "pX"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "999")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "pX"))
                return false
        }
        return true

    }

    // ID: NAACCR-01692; TAG: N2269; NAME: TNM Path T, SSF 1, 2, 3 Kidney (COC)
    public boolean naaccr01692(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "649", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "000") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "000")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p1, p1A, p1B, p2, p2A, p2B, pX"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path T (${untrimmedline.tnmPathT}) and CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1})')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010, 020,030, 991")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3,p3A,p3B,p3C,p4"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path T (${untrimmedline.tnmPathT}) and CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1})')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "998")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
                    if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "pX"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path T (${untrimmedline.tnmPathT}) and CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1})')
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3, p3A, p3B, p3C, p4, pX"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T: ${untrimmedline.tnmPathT} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "020, 040, 050, 070")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3B,p3C,p4,pX"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T: ${untrimmedline.tnmPathT} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "030, 060, 080, 090")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3C,p4,pX"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T: ${untrimmedline.tnmPathT} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "998")) {
                if (!functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
                    if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "pX"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T: ${untrimmedline.tnmPathT} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "988")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "010, 030, 040")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p4"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path T (${untrimmedline.tnmPathT}) and CS Site-Specific Factor 3 (${untrimmedline.csSiteSpecificFactor3})')
            }
        }
        return true

    }

    // ID: NAACCR-01693; TAG: N2270; NAME: TNM Path T, SSF 2, 7 Melanoma Skin (COC)
    public boolean naaccr01693(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440-449,510-512,518-519,600-602,608-609,632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2) && functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor7))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor7, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "1A, 2A, 3A, 4A", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "000"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "2B, 3B, 4B", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "1B", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "000") && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor7, "000, 990,998"))
                return false
        }
        return true

    }

    // ID: NAACCR-01694; TAG: N2271; NAME: TNM Path T, SSF 3 Prostate (COC)
    public boolean naaccr01694(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "619", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8110, 8140-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor3))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "000")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "200, 300, 320, 400")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "210, 330, 402")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2A"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "220, 340, 404")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "230, 350, 406")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p2C"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "495")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "415, 420, 430, 480, 482, 483")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3A"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "485, 490")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p3B"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "500, 510, 520, 600, 700, 750")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p4"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "950")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p0"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "960, 970, 980")) {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathT) && !functions.GEN_INLIST(untrimmedline.tnmPathT, "pX,p3,p3A,p3B,p4"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor3, "985, 990")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "pX"))
                return false
        }
        return true

    }

    // ID: NAACCR-01695; TAG: N2250; NAME: TNM Path cN0 2016 (COC)
    public boolean naaccr01695(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPSTAGE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        int req_flag
        int dx_year
        
        char[] GrpStg = new char[12]
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        char[] code = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathN))
            return true
        functions.GEN_STRCPY(code, untrimmedline.tnmPathN)
        
        if (functions.GEN_INLIST(code, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else
            functions.GEN_STRCPY(SiteGrp, "999")
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04C")) {
                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                            functions.GEN_STRCPY(SiteGrp, "04D")
                        else {
                            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                            if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                    functions.GEN_STRCPY(SiteGrp, "08A")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                        functions.GEN_STRCPY(SiteGrp, "08B")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "08C")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                    functions.GEN_STRCPY(SiteGrp, "08F")
                                else
                                    functions.GEN_STRCPY(SiteGrp, "999")
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                    functions.GEN_STRCPY(SiteGrp, "08D")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                        functions.GEN_STRCPY(SiteGrp, "08F")
                                    else
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "011")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                            functions.GEN_STRCPY(SiteGrp, "10B")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                            functions.GEN_STRCPY(SiteGrp, "16A")
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "021")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                    functions.GEN_STRCPY(SiteGrp, "020")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                        functions.GEN_STRCPY(SiteGrp, "022")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                    if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                    else {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                    functions.GEN_STRCPY(SiteGrp, "51B")
                                                                else
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                        if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981")) {
                if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                    functions.GEN_STRCPY(SiteGrp, "08F")
            }
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "0", "(c[A-Za-z0-9]\\s\\s)", 2, 3)) {
            if (functions.GEN_INLIST(SiteGrp, "031") && functions.GEN_INLIST(untrimmedline.tnmPathT, "1A", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "0", "(c[A-Za-z0-9]\\s\\s)", 2, 3)) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathT, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3) || functions.GEN_INLIST(untrimmedline.tnmPathT, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) || functions.GEN_INLIST(untrimmedline.tnmPathT, "ISU, ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3) || functions.GEN_INLIST(SiteGrp, "16A,16B,027,028,36A"))
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "1", "(c[A-Za-z0-9]\\s\\s)", 2, 3)) {
            if (functions.GEN_INLIST(SiteGrp, "16A,16B,027,028,36A"))
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "2", "(c[A-Za-z0-9]\\s\\s)", 2, 3)) {
            if (functions.GEN_INLIST(SiteGrp, "36A"))
                return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmPathN, "0,1,2", "(c[A-Za-z0-9]\\s\\s)", 2, 3))
            return false
        
        return true

    }

    // ID: NAACCR-01696; TAG: N2359; NAME: TNM Stage, Date Dx,Type Report Source (NPCR)
    public boolean naaccr01696(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinStageGroup) && !functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin Stage Group cannot be blank if Date of Diagnosis is greater than or equal to 2016')
        if (functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup) && !functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "6,7"))
            functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path Stage Group cannot be blank if Date of Diagnosis is greater than or equal to 2016')
        return true

    }

    // ID: NAACCR-01697; TAG: N2272; NAME: TNM T, Breast, Inflam Carcinoma (COC)
    public boolean naaccr01697(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) {
            return true
        }
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) && functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") && functions.GEN_INLIST(untrimmedline.tnmClinT, "88")) {
            return true
        }
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3)) {
            return true
        }
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8530"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c4D", "(c[A-Za-z0-9][A-Za-z0-9]\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p4D", "(p[A-Za-z0-9][A-Za-z0-9]\\s)"))
            return false
        return true

    }

    // ID: NAACCR-01698; TAG: N2274; NAME: TNM T, Clin and Path Stage, Behavior 2 (COC)
    public boolean naaccr01698(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        char[] t_tnm_msg = new char[79]
        
        int dx_year
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] Site_HistLo = new char[20]
        
        char[] pTcode = new char[5]
        char[] cTcode = new char[5]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016 || dx_year > 2017) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "046")) {
                                            if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                functions.GEN_STRCPY(SiteGrp, "46A")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "46B")
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                functions.GEN_STRCPY(SiteGrp, "51B")
                                                            else
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        functions.GEN_STRCPY(cTcode, untrimmedline.tnmClinT)
        
        functions.GEN_STRCPY(pTcode, untrimmedline.tnmPathT)
        
        
        if (functions.GEN_EMPTY(pTcode)) {
        
            if (functions.GEN_INLIST(SiteGrp, "032") && functions.GEN_INLIST(cTcode, "pIS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8540,8541,8543"))
                return true
            if (functions.GEN_INLIST(SiteGrp, "040") && functions.GEN_INLIST(cTcode, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                return true
            if (functions.GEN_INLIST(SiteGrp, "045") && functions.GEN_INLIST(cTcode, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return true
            if (!functions.GEN_INLIST(SiteGrp, "014,13A,17A,050")) {
                if ((functions.GEN_INLIST(cTcode, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3) && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0A")) || (functions.GEN_INLIST(cTcode, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0,0S,0IS")) || (functions.GEN_INLIST(cTcode, "ISU,ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3) && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0,0S,0IS"))) {
                    if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "2")) {
                        functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                        functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                        functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                        return functions.GEN_ERROR_MSG(binding, 'Behavior must = 2 for this combination of clin and path TNM')
                    }
                }
            }
        }
        if (!functions.GEN_EMPTY(pTcode)) {
        
            if (functions.GEN_INLIST(SiteGrp, "032") && functions.GEN_INLIST(pTcode, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8540,8541,8543"))
                return true
            if (functions.GEN_INLIST(SiteGrp, "040") && functions.GEN_INLIST(pTcode, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3))
                return true
            if (functions.GEN_INLIST(SiteGrp, "045") && functions.GEN_INLIST(pTcode, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3))
                return true
            if (!functions.GEN_INLIST(SiteGrp, "014,13A,17A,050") && !functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6")) {
                if ((functions.GEN_INLIST(pTcode, "A", "(p[A-Za-z0-9]\\s\\s)", 2, 3) && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0A")) || (functions.GEN_INLIST(pTcode, "IS", "(p[A-Za-z0-9][A-Za-z0-9]\\s)", 2, 3) && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0,0S,0IS")) || (functions.GEN_INLIST(pTcode, "ISU,ISD", "(p[A-Za-z0-9][A-Za-z0-9][A-Za-z0-9])", 2, 3) && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0,0S,0IS"))) {
                    if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "2")) {
                        functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                        functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                        functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                        return functions.GEN_ERROR_MSG(binding, 'Behavior must = 2 for this combination of clin and path TNM')
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01699; TAG: N2275; NAME: TNM T, Clin and Path Stage, Behavior 3 (COC)
    public boolean naaccr01699(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPTCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        
        char[] t_tnm_msg = new char[79]
        
        int dx_year
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] Site_HistLo = new char[20]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmClinN, "88") && functions.GEN_INLIST(untrimmedline.tnmClinM, "88") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathN, "88") && functions.GEN_INLIST(untrimmedline.tnmPathM, "88") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "88")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "cX", "(c[A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmClinN, "cX", "(c[A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmClinM, "cX", "(c[A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "99") && functions.GEN_INLIST(untrimmedline.tnmPathT, "pX", "(p[A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathN, "pX", "(p[A-Za-z0-9]\\s\\s)") && functions.GEN_INLIST(untrimmedline.tnmPathM, "pX, cX") && functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "99"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7")) {
            return true
        }
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419,422-423,425-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9729,9735,9737-9738,9811-9818,9823,9827,9837"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                    functions.GEN_STRCPY(SiteGrp, "04D")
                else {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
            }
            else {
                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                            functions.GEN_STRCPY(SiteGrp, "08A")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                functions.GEN_STRCPY(SiteGrp, "08B")
                            else
                                functions.GEN_STRCPY(SiteGrp, "08C")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                            functions.GEN_STRCPY(SiteGrp, "08F")
                        else
                            functions.GEN_STRCPY(SiteGrp, "999")
                    }
                }
                else {
                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                            functions.GEN_STRCPY(SiteGrp, "08D")
                        else {
                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                functions.GEN_STRCPY(SiteGrp, "08F")
                            else
                                functions.GEN_STRCPY(SiteGrp, "999")
                        }
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                else {
                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "16A")
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                            functions.GEN_STRCPY(SiteGrp, "020")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                functions.GEN_STRCPY(SiteGrp, "022")
                                        }
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "046")) {
                                            if (functions.GEN_INLIST(untrimmedline.sex, "2"))
                                                functions.GEN_STRCPY(SiteGrp, "46A")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "46B")
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                    functions.GEN_STRCPY(SiteGrp, "51A")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                            functions.GEN_STRCPY(SiteGrp, "51A")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                functions.GEN_STRCPY(SiteGrp, "51B")
                                                            else
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                }
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) && functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup) && !functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "pA, pIS, pISU, pISD") && !functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0, 0A, 0IS")) {
                if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3")) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Behavior must = 3 for this combination of clin and path TNM')
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathT) && !functions.GEN_EMPTY(untrimmedline.tnmPathStageGroup)) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "pA, pIS, pISU, pISD") && !functions.GEN_INLIST(untrimmedline.tnmClinStageGroup, "0,0A, 0IS") && !functions.GEN_INLIST(untrimmedline.tnmPathStageGroup, "0,0A, 0IS")) {
                if (!functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "3")) {
                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Behavior must = 3 for this combination of clin and path TNM')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01700; TAG: N2276; NAME: TNM T, Deep Sites Soft Tissue (COC)
    public boolean naaccr01700(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) && functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") && functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if ((functions.GEN_INLIST(untrimmedline.primarySite, "481-482,488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8934, 8940-9136, 9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6")) || (functions.GEN_INLIST(untrimmedline.primarySite, "481-482, 488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.sex, "2,6") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921, 9120-9136, 9142-9582")) || (functions.GEN_INLIST(untrimmedline.primarySite, "380-383,388", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8935, 8940-9136, 9142-9582")) || (functions.GEN_INLIST(untrimmedline.primarySite, "C480") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8934, 8940-9136, 9142-9152"))) {
        
            if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c1B, c2B, cX"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Clin T (${untrimmedline.tnmClinT}) and Primary Site (${untrimmedline.primarySite})')
            }
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathT) && functions.GEN_AT(untrimmedline.tnmPathDescriptor, "46", 1) == 0) {
                if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "p1B, p2B,pX"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict between TNM Path T (${untrimmedline.tnmPathT}) and Primary Site (${untrimmedline.primarySite})')
            }
        }
        return true

    }

    // ID: NAACCR-01701; TAG: N2277; NAME: TNM T, Descriptor, SSF 1 Thyroid (COC)
    public boolean naaccr01701(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C739"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8019, 8022-8029, 8033-8576, 8940-8950, 8980-8981") && !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8020, 8021, 8030, 8031, 8032"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathDescriptor) && functions.GEN_EMPTY(untrimmedline.tnmClinDescriptor))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "0") && !functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "0"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "020")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "3") && !functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "3,6"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "0") && functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "0")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.tnmClinDescriptor, "3") && functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "3, 6")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "020"))
                return false
        }
        return true

    }

    // ID: NAACCR-01703; TAG: N2278; NAME: TNM T, N, M - No Primary Found (COC)
    public boolean naaccr01703(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))) {
            return true
        }
        if (dx_year < 2016 || dx_year > 2017)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1")) {
            return true
        }
        if (functions.GEN_STRCMP(untrimmedline.tnmClinT, "c0  ") == 0) {
            if ((functions.GEN_EMPTY(untrimmedline.tnmClinN) || functions.GEN_AT(untrimmedline.tnmClinN, "cx  c0  c0A c0B ", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmClinM) || functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmPathT) || functions.GEN_AT(untrimmedline.tnmPathT, "pX  p0  ", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_AT(untrimmedline.tnmPathN, "pX  p0  c0  p0I+p0I-p0M+p0M-", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmPathM) || functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+", 4) > 0))
                return functions.GEN_ERROR_MSG(binding, 'If TNM Clin T = ${untrimmedline.tnmClinT}, TNM Clin N, TNM Clin M, TNM Path T, TNM Path N and TNM Path M cannot all = c/p0, c/p X, or blank')
        }
        if (functions.GEN_STRCMP(untrimmedline.tnmPathT, "p0  ") == 0) {
            if ((functions.GEN_EMPTY(untrimmedline.tnmClinT) || functions.GEN_AT(untrimmedline.tnmClinT, "px  p0  ", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmClinN) || functions.GEN_AT(untrimmedline.tnmClinN, "cx  c0  c0A c0B", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmClinM) || functions.GEN_AT(untrimmedline.tnmClinM, "c0  c0I+", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmPathN) || functions.GEN_AT(untrimmedline.tnmPathN, "pX  p0  c0  p0I+p0I-p0M+p0M-", 4) > 0) && (functions.GEN_EMPTY(untrimmedline.tnmPathM) || functions.GEN_AT(untrimmedline.tnmPathM, "c0  c0I+", 4) > 0))
                return functions.GEN_ERROR_MSG(binding, 'If TNM Path T = ${untrimmedline.tnmPathT}, TNM Clin T, TNM Clin N, TNM Clin M, TNM Path N and TNM Path M cannot all = c/p0, c/p X, or blank')
        }
        return true

    }

    // ID: NAACCR-01704; TAG: N2281; NAME: TNM T, SSF 1 Conjunctiva (COC)
    public boolean naaccr01704(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int req_flag
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C690") || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "001-050, 991, 990")) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c2"))
                    return false
            }
            if (functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p2"))
                    return false
            }
            if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p2") && functions.GEN_INLIST(untrimmedline.tnmClinT, "c2"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "051-980, 992")) {
            if (functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
                if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c1"))
                    return false
            }
            if (functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p1"))
                    return false
            }
            if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p1") && functions.GEN_INLIST(untrimmedline.tnmClinT, "c1"))
                return false
        }
        
        return true

    }

    // ID: NAACCR-01705; TAG: N2282; NAME: TNM T, SSF 1, 2 Lung (COC)
    public boolean naaccr01705(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "340-349", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor1) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "988")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "010, 040")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c3, c4", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p3, p4", "(p[A-Za-z0-9]\\s\\s)"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1}) conflicts with TNM Clin T (${untrimmedline.tnmClinT}) and TNM Path T (${untrimmedline.tnmPathT})')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor1, "020, 030")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c4", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p4", "(p[A-Za-z0-9]\\s\\s)"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'CS Site-Specific Factor 1 (${untrimmedline.csSiteSpecificFactor1}) conflicts with TNM Clin T (${untrimmedline.tnmClinT}) and TNM Path T (${untrimmedline.tnmPathT})')
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor2) && !functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "988")) {
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "010, 020, 040")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c2, c3, c4, c2A, c2B") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p2, p3, p4, p2A, p2B"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'CS Site-Specific Factor 2 (${untrimmedline.csSiteSpecificFactor2}) conflicts with TNM Clin T (${untrimmedline.tnmClinT}) and TNM Path T (${untrimmedline.tnmPathT})')
            }
            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor2, "030")) {
                if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c3, c4", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p3, p4", "(p[A-Za-z0-9]\\s\\s)"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'CS Site-Specific Factor 2 (${untrimmedline.csSiteSpecificFactor2}) conflicts with TNM Clin T (${untrimmedline.tnmClinT}) and TNM Path T (${untrimmedline.tnmPathT})')
            }
        }
        return true

    }

    // ID: NAACCR-01706; TAG: N2283; NAME: TNM T, SSF 10 Bile Ducts Intrahepatic (COC)
    public boolean naaccr01706(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C221") || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8160, 8161, 8180"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor10) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c4", "(c[A-Za-z0-9]\\s\\s)") || functions.GEN_INLIST(untrimmedline.tnmPathT, "p4", "(p[A-Za-z0-9]\\s\\s)")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "010"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c4", "(c[A-Za-z0-9]\\s\\s)") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p4", "(p[A-Za-z0-9]\\s\\s)"))
                return false
        }
        return true

    }

    // ID: NAACCR-01707; TAG: N2417; NAME: TNM T, SSF 12, Tumor Size, Carcinoma of Skin (COC)
    public boolean naaccr01707(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440, 442-449, 632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8246, 8248-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor12) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor12, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c1", "(c[A-Za-z0-9]\\s\\s)")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor12, "000, 001, 991, 993, 999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T: ${untrimmedline.tnmClinT} conflicts with CS Site-Specific Factor12: ${untrimmedline.csSiteSpecificFactor12}')
            }
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c2", "(c[A-Za-z0-9]\\s\\s)")) {
                if (functions.GEN_INLIST(untrimmedline.tumorSizeClinical, "001-020") || functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "001-020")) {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor12, "002,003,004,005,992"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM T, SSF 1, and tumor size')
                }
            }
        }
        if (!functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
            if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p1", "(p[A-Za-z0-9]\\s\\s)")) {
                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor12, "000, 001, 991, 993, 999"))
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T of ${untrimmedline.tnmPathT} is not consistent with CS Site-Specific Factor12: ${untrimmedline.csSiteSpecificFactor12}')
            }
            if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p2", "(p[A-Za-z0-9]\\s\\s)")) {
                if (functions.GEN_INLIST(untrimmedline.tumorSizePathologic, "001-020") || functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "001-020")) {
                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor12, "002,003,004,005,992"))
                        functions.GEN_SAVE_ERROR_TEXT(binding, 'Conflict among TNM T, SSF 1, and tumor size')
                }
            }
        }
        return true

    }

    // ID: NAACCR-01708; TAG: N2286; NAME: TNM T, SSF 6 Skin of Eyelid (COC)
    public boolean naaccr01708(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "C441") || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmClinT, "c3A, c3B, c4") && !functions.GEN_INLIST(untrimmedline.tnmPathT, "p3A, p3B, p4"))
                return false
        }
        return true

    }

    // ID: NAACCR-01709; TAG: N2285; NAME: TNM T, SSF 6 Breast (COC)
    public boolean naaccr01709(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] CSSSF4 = new char[100], CSSSF5 = new char[100], NODES = new char[100], SS4SS5 = new char[100]
        
        char[] nodes45 = new char[7]
        char[] pnodes = new char[5]
        int dx_year
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if ((dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY)) || (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR)) || (dx_year < 2016))
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "500-509", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981, 9020"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.csSiteSpecificFactor6) || functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "988"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathDescriptor, "4,6"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "pIS")) {
            if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "010"))
                return false
        }
        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor6, "010")) {
            if (!functions.GEN_INLIST(untrimmedline.tnmPathT, "pIS"))
                return false
        }
        return true

    }

    // ID: NAACCR-01710; TAG: N2287; NAME: TNM T, SSize, Site Spec - Ed 7 (COC)
    public boolean naaccr01710(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] SITELOW = new char[5], SITEHIGH = new char[5], GRP = new char[100], HISTLOW = new char[5], HISTHIGH = new char[5], GPCODE = new char[4], GRPNCODE = new char[100], SITEHIST = new char[100], SITEHISTLO = new char[100]
        char[] PATHT = new char[5], TSIZELOW = new char[4], TSIZEHIGH = new char[4], GPPATHT = new char[100], CLINT = new char[5], GPCLINT = new char[100]
        
        int req_flag
        int dx_year
        
        char[] t_tnm_msg = new char[79]
        
        char[] t_GrpTPcode = new char[10]
        char[] t_GrpTCcode = new char[10]
        
        char[] SiteGrp = new char[5]
        char[] Site = new char[5]
        
        char[] GrpHist = new char[7]
        
        char[] t_SiteHist = new char[9]
        
        char[] Site_HistLo = new char[20]
        
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "999"))
            return true
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.histologicTypeIcdO3)) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmClinT) && functions.GEN_EMPTY(untrimmedline.tnmPathT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "88") && functions.GEN_INLIST(untrimmedline.tnmPathT, "88"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tumorSizeSummary) || functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "999"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        functions.GEN_STRCPY(Site, untrimmedline.primarySite)
        
        if (functions.GEN_RLOOKUP(Site, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITELOW, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
            if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0) {
                functions.GEN_STRCPY(Site_HistLo, SITELOW)
                functions.GEN_STRCAT(Site_HistLo, SITEHIGH)
                functions.GEN_STRCAT(Site_HistLo, untrimmedline.histologicTypeIcdO3)
        
                if (functions.GEN_RLOOKUP(Site_HistLo, context.NAACCR_AC7G2016, context.NAACCR_AC7G2016_SITEHISTLO, ['GPCODE':GPCODE, 'SITELOW':SITELOW, 'SITEHIGH':SITEHIGH, 'HISTLOW':HISTLOW, 'HISTHIGH':HISTHIGH, 'SITEHISTLO':SITEHISTLO])) {
                    if (functions.GEN_STRCMP(untrimmedline.primarySite, SITELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.primarySite, SITEHIGH) <= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTLOW) >= 0 && functions.GEN_STRCMP(untrimmedline.histologicTypeIcdO3, HISTHIGH) <= 0)
                        functions.GEN_STRCPY(SiteGrp, GPCODE)
                    else
                        functions.GEN_STRCPY(SiteGrp, "999")
                }
                else
                    functions.GEN_STRCPY(SiteGrp, "999")
            }
            else
                functions.GEN_STRCPY(SiteGrp, "999")
        }
        else {
            functions.GEN_STRCPY(SiteGrp, "999")
        }
        if (functions.GEN_INLIST(untrimmedline.primarySite, "000-440,442-689,691-694,698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9590-9699,9702-9727,9735,9737-9738"))
            functions.GEN_STRCPY(SiteGrp, "57A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "000-419, 422-423, 425-440, 442-689, 691-694, 698-809", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9823, 9827, 9837"))
                functions.GEN_STRCPY(SiteGrp, "57A")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "420-421,424", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "9811-9818, 9837"))
                    functions.GEN_STRCPY(SiteGrp, "57C")
                else {
                    if (functions.GEN_INLIST(SiteGrp, "04A")) {
                        if (functions.GEN_INLIST(untrimmedline.primarySite, "129, 130-139", "(C\\d\\d\\d)", 2, 3))
                            functions.GEN_STRCPY(SiteGrp, "04E")
                    }
                    else {
                        if (functions.GEN_INLIST(SiteGrp, "17B")) {
                            if (functions.GEN_INLIST(untrimmedline.primarySite, "241", "(C\\d\\d\\d)", 2, 3))
                                functions.GEN_STRCPY(SiteGrp, "17D")
                        }
                        else {
                            if (functions.GEN_INLIST(SiteGrp, "04C")) {
                                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                    functions.GEN_STRCPY(SiteGrp, "04D")
                                else {
                                    if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                        functions.GEN_STRCPY(SiteGrp, "999")
                                }
                            }
                            else {
                                if (functions.GEN_INLIST(SiteGrp, "008")) {
        
                                    if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9")) {
                                        if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "000-044"))
                                            functions.GEN_STRCPY(SiteGrp, "08A")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.ageAtDiagnosis, "045-998"))
                                                functions.GEN_STRCPY(SiteGrp, "08B")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "08C")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                            functions.GEN_STRCPY(SiteGrp, "08F")
                                        else
                                            functions.GEN_STRCPY(SiteGrp, "999")
                                    }
                                }
                                else {
                                    if (functions.GEN_INLIST(SiteGrp, "08D")) {
                                        if (functions.GEN_INLIST(untrimmedline.grade, "1-3,9"))
                                            functions.GEN_STRCPY(SiteGrp, "08D")
                                        else {
                                            if (functions.GEN_INLIST(untrimmedline.grade, "4"))
                                                functions.GEN_STRCPY(SiteGrp, "08F")
                                            else
                                                functions.GEN_STRCPY(SiteGrp, "999")
                                        }
                                    }
                                    else {
                                        if (functions.GEN_INLIST(SiteGrp, "011")) {
                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "161-162", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020,040,060")) {
                                                if (!functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                    functions.GEN_STRCPY(SiteGrp, "10B")
                                                else {
                                                    if (functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8982-8990"))
                                                        functions.GEN_STRCPY(SiteGrp, "999")
                                                }
                                            }
                                        }
                                        else {
                                            if (functions.GEN_INLIST(SiteGrp, "16B")) {
                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "480-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor10, "020"))
                                                    functions.GEN_STRCPY(SiteGrp, "16A")
                                            }
                                            else {
                                                if (functions.GEN_INLIST(SiteGrp, "021")) {
                                                    if (functions.GEN_INLIST(untrimmedline.primarySite, "240", "(C\\d\\d\\d)", 2, 3)) {
                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "030"))
                                                            functions.GEN_STRCPY(SiteGrp, "020")
                                                        else {
                                                            if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "040,070"))
                                                                functions.GEN_STRCPY(SiteGrp, "022")
                                                        }
                                                    }
                                                }
                                                else {
                                                    if (functions.GEN_INLIST(SiteGrp, "37B")) {
                                                        if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3)) {
                                                            if (!functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                                                                functions.GEN_STRCPY(SiteGrp, "999")
                                                        }
                                                    }
                                                    else {
                                                        if (functions.GEN_INLIST(SiteGrp, "051")) {
                                                            if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3))
                                                                functions.GEN_STRCPY(SiteGrp, "51A")
                                                            else {
                                                                if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                                                                    if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010"))
                                                                        functions.GEN_STRCPY(SiteGrp, "51A")
                                                                    else {
                                                                        if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "020"))
                                                                            functions.GEN_STRCPY(SiteGrp, "51B")
                                                                        else
                                                                            functions.GEN_STRCPY(SiteGrp, "999")
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        else {
                                                            if (functions.GEN_INLIST(SiteGrp, "053")) {
                                                                if (!functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "015"))
                                                                    functions.GEN_STRCPY(SiteGrp, "999")
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        if (functions.GEN_INLIST(SiteGrp, "999")) {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "739", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8576, 8940-8950, 8980-8981") && functions.GEN_INLIST(untrimmedline.grade, "4"))
                functions.GEN_STRCPY(SiteGrp, "08F")
            else {
                if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820,8823-8934,8940-9136,9142-9582") && !functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                    functions.GEN_STRCPY(SiteGrp, "028")
                else {
                    if (functions.GEN_INLIST(untrimmedline.primarySite, "481-488", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8800-8820, 8823-8921,9120-9136,9142-9582") && functions.GEN_INLIST(untrimmedline.sex, "2,6"))
                        functions.GEN_STRCPY(SiteGrp, "028")
                }
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "003, 04A, 04D, 04E, 007, 015, 024, 025, 027, 028, 029, 030, 032, 47A, 47B") && !functions.GEN_INLIST(SiteGrp, "043, 049, 053, 054, 08A, 08B, 08C, 08D, 13B, 16A, 16B, 17A, 17B, 17D, 17E"))
            return true
        if (functions.GEN_INLIST(SiteGrp, "025") && functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "990")) {
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c2A") || functions.GEN_INLIST(untrimmedline.tnmPathT, "p2A")) {
                return true
            }
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
        
            if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c1, c1A, c1MI") && functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "990"))
                return true
            else {
                functions.GEN_STRCPY(t_GrpTCcode, SiteGrp)
                functions.GEN_STRCAT(t_GrpTCcode, untrimmedline.tnmClinT)
        
                if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_CLINTSIZ, context.NAACCR_CLINTSIZ_GPCLINT, ['GPCODE':GPCODE, 'CLINT':CLINT, 'TSIZELOW':TSIZELOW, 'TSIZEHIGH':TSIZEHIGH, 'GPCLINT':GPCLINT])) {
                    if (functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZELOW) < 0 || functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZEHIGH) > 0) {
                        functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                        functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                        functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                        return functions.GEN_ERROR_MSG(binding, 'TNM Clin T of ${untrimmedline.tnmClinT} is not consistent with Tumor Size Summary of ${untrimmedline.tumorSizeSummary}')
                    }
                }
            }
        }
        else {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
        
                if (functions.GEN_INLIST(untrimmedline.tnmPathT, "p1, p1A, p1MI") && functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "990"))
                    return true
                else {
                    functions.GEN_STRCPY(t_GrpTPcode, SiteGrp)
                    functions.GEN_STRCAT(t_GrpTPcode, untrimmedline.tnmPathT)
        
                    if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_PATHTSIZ, context.NAACCR_PATHTSIZ_GPPATHT, ['GPCODE':GPCODE, 'PATHT':PATHT, 'TSIZELOW':TSIZELOW, 'TSIZEHIGH':TSIZEHIGH, 'GPPATHT':GPPATHT])) {
                        if (functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZELOW) >= 0 && functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZEHIGH) <= 0)
                            return true
                        else {
                            if (functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZELOW) < 0 || functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZEHIGH) > 0) {
                                if (functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
                                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                    return functions.GEN_ERROR_MSG(binding, 'TNM Path T of ${untrimmedline.tnmPathT} is not consistent with Tumor Size Summary of ${untrimmedline.tumorSizeSummary}')
                                }
                                else {
                                    if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
                                        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c1, c1A, c1MI") && functions.GEN_INLIST(untrimmedline.tumorSizeSummary, "990"))
                                            return true
                                        else {
                                            functions.GEN_STRCPY(t_GrpTCcode, SiteGrp)
                                            functions.GEN_STRCAT(t_GrpTCcode, untrimmedline.tnmClinT)
        
                                            if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_CLINTSIZ, context.NAACCR_CLINTSIZ_GPCLINT, ['GPCODE':GPCODE, 'CLINT':CLINT, 'TSIZELOW':TSIZELOW, 'TSIZEHIGH':TSIZEHIGH, 'GPCLINT':GPCLINT])) {
                                                if (functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZELOW) < 0 || functions.GEN_STRCMP(untrimmedline.tumorSizeSummary, TSIZEHIGH) > 0) {
                                                    functions.GEN_STRCPY(t_tnm_msg, "TNM Chapter: ")
                                                    functions.GEN_STRCAT(t_tnm_msg, SiteGrp)
                                                    functions.GEN_SAVE_TEXT(binding, t_tnm_msg)
                                                    return functions.GEN_ERROR_MSG(binding, 'Tumor Size Summary of ${untrimmedline.tumorSizeSummary} is not consistent with TNM Clin T of ${untrimmedline.tnmClinT} and TNM Path T of ${untrimmedline.tnmPathT}')
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01711; TAG: N2325; NAME: TNM T, Size, Uveal Melanoma (COC)
    public boolean naaccr01711(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        char[] GPCODE = new char[4], PATHT = new char[5], SIZELOW = new char[4], SIZEHIGH = new char[4]
        
        int req_flag
        int dx_year
        
        char[] t_GrpTPcode = new char[10]
        char[] t_GrpTCcode = new char[10]
        char[] SiteGrp = new char[5]
        
        char[] ssfdepth = new char[4]
        char[] ssfdiameter = new char[4]
        
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7")) {
            return true
        }
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) && functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") && functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.tnmEditionNumber, "07,U7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.primarySite, "693", "(C\\d\\d\\d)", 2, 3) && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
            functions.GEN_STRCPY(SiteGrp, "51A")
        else {
            if (functions.GEN_INLIST(untrimmedline.primarySite, "694", "(C\\d\\d\\d)", 2, 3)) {
                if (functions.GEN_INLIST(untrimmedline.csSiteSpecificFactor25, "010,999") && functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8720-8790"))
                    functions.GEN_STRCPY(SiteGrp, "51A")
            }
        }
        if (!functions.GEN_INLIST(SiteGrp, "51A"))
            return true
        functions.GEN_STRCPY(ssfdepth, untrimmedline.csSiteSpecificFactor3)
        functions.GEN_STRCPY(ssfdiameter, untrimmedline.csSiteSpecificFactor2)
        
        if (functions.GEN_EMPTY(ssfdepth) && !functions.GEN_EMPTY(ssfdiameter))
            return false
        if (functions.GEN_EMPTY(ssfdiameter) && !functions.GEN_EMPTY(ssfdepth))
            return false
        if (functions.GEN_INLIST(ssfdepth, "990"))
            functions.GEN_STRCPY(ssfdepth, "001")
        if (functions.GEN_INLIST(ssfdepth, "991"))
            functions.GEN_STRCPY(ssfdepth, "030")
        if (functions.GEN_INLIST(ssfdepth, "992"))
            functions.GEN_STRCPY(ssfdepth, "060")
        if (functions.GEN_INLIST(ssfdepth, "993"))
            functions.GEN_STRCPY(ssfdepth, "090")
        if (functions.GEN_INLIST(ssfdepth, "994"))
            functions.GEN_STRCPY(ssfdepth, "120")
        if (functions.GEN_INLIST(ssfdepth, "995"))
            functions.GEN_STRCPY(ssfdepth, "150")
        if (functions.GEN_INLIST(ssfdepth, "996"))
            functions.GEN_STRCPY(ssfdepth, "151")
        if (functions.GEN_INLIST(ssfdiameter, "990"))
            functions.GEN_STRCPY(ssfdiameter, "001")
        if (functions.GEN_INLIST(ssfdiameter, "991"))
            functions.GEN_STRCPY(ssfdiameter, "030")
        if (functions.GEN_INLIST(ssfdiameter, "992"))
            functions.GEN_STRCPY(ssfdiameter, "060")
        if (functions.GEN_INLIST(ssfdiameter, "993"))
            functions.GEN_STRCPY(ssfdiameter, "090")
        if (functions.GEN_INLIST(ssfdiameter, "994"))
            functions.GEN_STRCPY(ssfdiameter, "120")
        if (functions.GEN_INLIST(ssfdiameter, "995"))
            functions.GEN_STRCPY(ssfdiameter, "150")
        if (functions.GEN_INLIST(ssfdiameter, "996"))
            functions.GEN_STRCPY(ssfdiameter, "180")
        if (functions.GEN_INLIST(ssfdiameter, "997"))
            functions.GEN_STRCPY(ssfdiameter, "181")
        if (functions.GEN_INLIST(ssfdepth, "999"))
            return true
        if (functions.GEN_INLIST(ssfdiameter, "999")) {
            return true
        }
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
        
            functions.GEN_STRCPY(t_GrpTCcode, SiteGrp)
            functions.GEN_STRCAT(t_GrpTCcode, untrimmedline.tnmClinT)
        
            if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_TUMDIMTR, context.NAACCR_TUMDIMTR_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                if (functions.GEN_STRCMP(ssfdiameter, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdiameter, SIZEHIGH) > 0)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T: ${untrimmedline.tnmClinT} conflicts with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
            }
            if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_TUMDEPTH, context.NAACCR_TUMDEPTH_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                if (functions.GEN_STRCMP(ssfdepth, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdepth, SIZEHIGH) > 0)
                    functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T of ${untrimmedline.tnmClinT} is not consistent with CS Site-Specific Factor 3 of ${untrimmedline.csSiteSpecificFactor3}')
            }
        }
        else {
            if (!functions.GEN_EMPTY(untrimmedline.tnmPathT)) {
        
                functions.GEN_STRCPY(t_GrpTPcode, SiteGrp)
                functions.GEN_STRCAT(t_GrpTPcode, untrimmedline.tnmPathT)
        
                if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_TUMDEPTH, context.NAACCR_TUMDEPTH_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                    if (functions.GEN_STRCMP(ssfdepth, SIZELOW) >= 0 && functions.GEN_STRCMP(ssfdepth, SIZEHIGH) <= 0) {
                        if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_TUMDIMTR, context.NAACCR_TUMDIMTR_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                            if (functions.GEN_STRCMP(ssfdiameter, SIZELOW) >= 0 && functions.GEN_STRCMP(ssfdiameter, SIZEHIGH) <= 0)
                                return true
                        }
                    }
                }
                if (functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
                    if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_TUMDIMTR, context.NAACCR_TUMDIMTR_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                        if (functions.GEN_STRCMP(ssfdiameter, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdiameter, SIZEHIGH) > 0)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T of ${untrimmedline.tnmPathT} is not consistent with CS Site-Specific Factor 2: ${untrimmedline.csSiteSpecificFactor2}')
                    }
                    if (functions.GEN_LOOKUP(t_GrpTPcode, context.NAACCR_TUMDEPTH, context.NAACCR_TUMDEPTH_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                        if (functions.GEN_STRCMP(ssfdepth, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdepth, SIZEHIGH) > 0)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Path T of ${untrimmedline.tnmPathT} is not consistent with CS Site-Specific Factor 3 of ${untrimmedline.csSiteSpecificFactor3}')
                    }
                }
                if (!functions.GEN_EMPTY(untrimmedline.tnmClinT)) {
        
                    functions.GEN_STRCPY(t_GrpTCcode, SiteGrp)
                    functions.GEN_STRCAT(t_GrpTCcode, untrimmedline.tnmClinT)
        
                    if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_TUMDIMTR, context.NAACCR_TUMDIMTR_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                        if (functions.GEN_STRCMP(ssfdiameter, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdiameter, SIZEHIGH) > 0)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T (${untrimmedline.tnmClinT}) and TNM Path T (${untrimmedline.tnmPathT}) not consistent with CS Site-Specific Factor 2 of ${untrimmedline.csSiteSpecificFactor2}')
                    }
                    if (functions.GEN_LOOKUP(t_GrpTCcode, context.NAACCR_TUMDEPTH, context.NAACCR_TUMDEPTH_GPPATHT, ['PATHT':PATHT, 'SIZELOW':SIZELOW, 'SIZEHIGH':SIZEHIGH])) {
                        if (functions.GEN_STRCMP(ssfdepth, SIZELOW) < 0 || functions.GEN_STRCMP(ssfdepth, SIZEHIGH) > 0)
                            functions.GEN_SAVE_ERROR_TEXT(binding, 'TNM Clin T (${untrimmedline.tnmClinT}) and TNM Path T (${untrimmedline.tnmPathT}) not consistent with CS Site-Specific Factor 3 of ${untrimmedline.csSiteSpecificFactor3}')
                    }
                }
            }
        }
        return true

    }

    // ID: NAACCR-01712; TAG: N2326; NAME: TNM T3, Carcinoma of Skin (COC)
    public boolean naaccr01712(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        int dx_year
        dx_year = functions.GEN_DATE_YEAR_IOP(binding, untrimmedline.dateOfDiagnosis)
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_EMPTY))
            return true
        if (dx_year == ((Integer)context.NAACCR_GEN_DT_ERROR))
            return true
        if (dx_year < 2016)
            return true
        if (functions.GEN_INLIST(untrimmedline.typeOfReportingSource, "7"))
            return true
        if (functions.GEN_INLIST(untrimmedline.behaviorCodeIcdO3, "0,1"))
            return true
        if (!functions.GEN_INLIST(untrimmedline.primarySite, "440, 442-449,632", "(C\\d\\d\\d)", 2, 3) || !functions.GEN_INLIST(untrimmedline.histologicTypeIcdO3, "8000-8246, 8248-8576, 8940-8950, 8980-8981"))
            return true
        if (functions.GEN_EMPTY(untrimmedline.tnmPathT) && functions.GEN_EMPTY(untrimmedline.tnmClinT))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmPathT, "88") && functions.GEN_INLIST(untrimmedline.tnmClinT, "88"))
            return true
        if (functions.GEN_INLIST(untrimmedline.tnmClinT, "c3") || functions.GEN_INLIST(untrimmedline.tnmPathT, "p3")) {
            if (!functions.GEN_INLIST(untrimmedline.primarySite, "440, 442-444, 448-449", "(C\\d\\d\\d)", 2, 3))
                return false
        }
        return true

    }

    // ID: NAACCR-01713; TAG: N2143; NAME: Tumor Size Clinical (SEER)
    public boolean naaccr01713(Binding binding, Map context, MetafileContextFunctions functions, List> untrimmedlines, Map untrimmedline) throws Exception {
        functions.GEN_RESET_LOCAL_CONTEXT(binding)
        
        if (functions.GEN_EMPTY(untrimmedline.tumorSizeClinical))
            return true
        return functions.GEN_INLIST(untrimmedline.tumorSizeClinical, "000-990, 998, 999", "(\\d\\d\\d)")

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy