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

edits.seer.internal.rules.DateBirthEdit.xml Maven / Gradle / Ivy

There is a newer version: 024-13
Show newest version
        <rule id="DateBirthEdit" name="Date of Birth (NAACCR)" tag="N1034" java-path="lines.line" category="inter-field" depends="Day_of_Birth,Month_of_Birth,Year_of_Birth">
            <expression><![CDATA[Integer year = Functions.asInt(line.dateOfBirthYear)
Integer month = Functions.asInt(line.dateOfBirthMonth)
Integer day = Functions.asInt(line.dateOfBirthDay)

Integer yearCur = Functions.getCurrentYear()
Integer monthCur = Functions.getCurrentMonth()
Integer dayCur = Functions.getCurrentDay()

if (line.dateOfBirthYear == null)
    return line.dateOfBirthMonth == null && line.dateOfBirthDay == null

if ((line.dateOfBirthMonth == null && line.dateOfBirthDay != null) || (month > 12 || (month != null && month < 1)))
    return false

if (!Functions.between(year, 1810, yearCur))
    return false

if (line.dateOfBirthMonth == null) //by now year fits and day is null if month is null
    return true

if (year == yearCur && month > monthCur)
    return false

if (line.dateOfBirthDay == null) //by now year and month fit
    return true

if (year == yearCur && month == monthCur && day > dayCur)
    return false

// check for day of the month too big (need to check leap years too)
Calendar cal = new GregorianCalendar(year, month - 1, 1)
return cal != null && day <= cal.getActualMaximum(Calendar.DAY_OF_MONTH)]]></expression>
            <message>Date of Birth is not valid.</message>
            <description><![CDATA[Birth Date checks are performed in this order:

  A)  If the year is blank, month and day must also be blank.

  B)  If the month is blank, the day must be blank.

  C)  If day of birth is blank, the year of birth and month
      of birth can not be greater than the current system year/month.

  D)  Year of birth must be between 1810 and the current system year.

  E)  If day is known, then entire date of birth is verified.  The date
      must be a valid date (leap years checked) and must be less than
      or equal to the current system date.]]></description>
            <history>
                <event version="SE11-001-22" user="greend" date="2008-01-21">Edit now uses Day of Birth.</event>
                <event version="SE12-002-01" user="murphyr" date="2009-12-03">9 filled dates no longer allowed.</event>
                <event version="SE12-002-01" user="murphyr" date="2009-12-23">Fixed parenthesis error, and fixed edit to correctly check for blank string instead of blank int.</event>
                <event version="SE16-015-01" user="kirbyk" date="2016-06-20" ref="67425">Fixed documentation.</event>
                <event version="SE16-016-08" user="depryf" date="2017-11-22" ref="67674">Edit syntax updated to allow pre-compilation optimization; no change in behavior.</event>
                <event version="SE18-020-01" user="depryf" date="2020-02-04" ref="68281">Changed property names to align with NAACCR XML IDs.</event>
                <event version="SE22-022-13" user="kirbyk" date="2022-10-18" ref="69045">Fixing edit behavior for future dates.</event>
            </history>
        </rule>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy