001/**
002 * Copyright 2005-2018 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.kuali.rice.kim.api.identity.personal;
017
018import org.kuali.rice.core.api.mo.common.GloballyUnique;
019import org.kuali.rice.core.api.mo.common.Versioned;
020
021import java.util.List;
022
023/**
024 * This is a contract for EntityBioDemographics and represents the
025 * demographic information of an Entity.
026 *
027 * @author Kuali Rice Team (rice.collab@kuali.org)
028 */
029
030
031public interface EntityBioDemographicsContract extends Versioned, GloballyUnique {
032    public static final String BIRTH_DATE_FORMAT = "yyyy-MM-dd";
033    public static final String DECEASED_DATE_FORMAT = "yyyy-MM-dd";
034
035    /**
036     * Gets this {@link EntityBioDemographicsContract}'s identity id.
037     * @return the identity id for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
038     */
039        String getEntityId();
040
041        /**
042     * Gets this {@link EntityBioDemographicsContract}'s deceased date.
043     * @return the deceased date for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
044     */
045        String getDeceasedDate();
046
047        /**
048     * Gets this {@link EntityBioDemographicsContract}'s birth date.
049     * @return the birth date for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
050     */
051        String getBirthDate();
052
053        /**
054     * Gets this {@link EntityBioDemographicsContract}'s gender code.
055     * @return the gender code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
056     */
057        String getGenderCode();
058
059        /**
060     * Gets this {@link EntityBioDemographicsContract}'s marital status code.
061     * @return the marital status code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
062     */
063        String getMaritalStatusCode();
064
065        /**
066     * Gets this {@link EntityBioDemographicsContract}'s primary language code.
067     * @return the primary language code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
068     */
069        String getPrimaryLanguageCode();
070
071        /**
072     * Gets this {@link EntityBioDemographicsContract}'s secondary language code.
073     * @return the secondary language code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
074     */
075        String getSecondaryLanguageCode();
076
077        /**
078     * Gets this {@link EntityBioDemographicsContract}'s country of birth code.
079     * Corresponds to PESC BirthCountry.
080     * @return the country of birth code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
081     */
082        String getBirthCountry();
083
084        /**
085     * Gets this {@link EntityBioDemographicsContract}'s birth state or extra-state jurisdiction code.  Corresponds to PESC BirthStateProvinceCode.
086     * @return the birth state code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
087     */
088        String getBirthStateProvinceCode();
089
090        /**
091     * Gets this {@link EntityBioDemographicsContract}'s city of birth. Corresponds to PESC BirthCity.
092     * @return the city of birth for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
093     */
094        String getBirthCity();
095
096        /**
097     * Gets this {@link EntityBioDemographicsContract}'s geographic origin.
098     * @return the geographic origin for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
099     */
100        String getGeographicOrigin();
101
102        /**
103     * Gets this {@link EntityBioDemographicsContract}'s unmasked birth date.
104     * @return the unmasked birth date for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
105     */
106        String getBirthDateUnmasked();
107
108    /**
109     * Gets this {@link EntityBioDemographicsContract}'s current age based on birth date if present.  Age calculation uses
110     * deceased date if present.
111     * @return the calculated age for this {@link EntityBioDemographicsContract}, or null if {@link org.kuali.rice.kim.api.identity.personal.EntityBioDemographicsContract#getBirthDate()} is unpresent, suppressed, or there is a calculation error.
112     */
113    Integer getAge();
114
115        /**
116     * Gets this {@link EntityBioDemographicsContract}'s unmasked gender code.
117     * @return the unmasked gender code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
118     */
119        String getGenderCodeUnmasked();
120
121        /**
122     * Gets this {@link EntityBioDemographicsContract}'s unmasked martial status code.
123     * @return the unmasked martial status code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
124     */
125        String getMaritalStatusCodeUnmasked();
126
127        /**
128     * Gets this {@link EntityBioDemographicsContract}'s unmasked primary language code.
129     * @return the unmasked primary language code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
130     */
131        String getPrimaryLanguageCodeUnmasked();
132
133        /**
134     * Gets this {@link EntityBioDemographicsContract}'s unmasked secondary language code.
135     * @return the unmasked secondary language code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
136     */
137        String getSecondaryLanguageCodeUnmasked();
138
139        /**
140     * Gets this {@link EntityBioDemographicsContract}'s unmasked country of birth code.
141     * @return the unmasked country of birth code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
142     */
143        String getBirthCountryUnmasked();
144
145        /**
146     * Gets this {@link EntityBioDemographicsContract}'s unmasked birth state or extra-state jurisdiction code. Corresponds to PESC BirthStateProvinceCode.
147     * @return the unmaksed birth state code for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
148     */
149        String getBirthStateProvinceCodeUnmasked();
150
151        /**
152     * Gets this {@link EntityBioDemographicsContract}'s unmasked city of birth. Corresponds to PESC BirthCity.
153     * @return the unmasked city of birth for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
154     */
155        String getBirthCityUnmasked();
156
157        /**
158     * Gets this {@link EntityBioDemographicsContract}'s unmasked geographic origin.
159     * @return the unmasked geographic origin for this {@link EntityBioDemographicsContract}, or null if none has been assigned.
160     */
161        String getGeographicOriginUnmasked();
162
163    /**
164     * Get the note associated with this {@link EntityBioDemographicsContract}
165     * Corresponds to PESC NoteMessage
166     * @return the message associated with this EntityName
167     */
168    String getNoteMessage();
169
170    /**
171     * Get the {@link EntityBioDemographicsContract}'s gender change code
172     * Corresponds to PESC GenderChangeCode
173     * @return the gender change code or null if no change
174     */
175    String getGenderChangeCode();
176
177    /**
178     * Get the {@link EntityBioDemographicsContract}'s gender change code
179     * Corresponds to PESC GenderChangeCode
180     * @return the gender change code or null if no change
181     */
182    String getGenderChangeCodeUnmasked();
183
184    /**
185     * Returns a boolean value that determines if personal fields should be suppressed.
186     * @return boolean value that determines if personal fields should be suppressed.
187     */
188        boolean isSuppressPersonal();
189}