package module.personalinformation.domain; /* * @(#)domain_model_personal_information.dml * * Copyright 2009 Instituto Superior Tecnico * Founding Authors: João Figueiredo, Luis Cruz, Paulo Abrantes, Susana Fernandes * * https://fenix-ashes.ist.utl.pt/ * * This file is part of the Organization Module for the MyOrg web application. * * The Organization Module is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version.* * * The Organization Module is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the Organization Module. If not, see . * */ enum module.personalinformation.domain.IDDocumentType as IDDocumentType; enum module.personalinformation.domain.Gender as Gender; enum module.personalinformation.domain.MaritalStatus as MaritalStatus; class PersonalInformationSystem { } class PartyInformation { String fiscalCode; } class UnitInformation extends PartyInformation { } class PersonalInformation extends PartyInformation { LocalDate birthDate; Gender gender; MaritalStatus maritalStatus; String fathersName; String mothersName; // Make units String birthDistrict; String birthDistrictSubdivision; String birthParish; // Add to relation //private DomainReference nationality; //private DomainReference countryOfBirth; } class IdentificationDocument { IDDocumentType type; String number; } class IdentityCard extends IdentificationDocument { LocalDate emissionDate; LocalDate expirationDate; String emissionLocation; } /** Relations **/ relation MyOrgPersonalInformationSystem { .pt.ist.bennu.core.domain.MyOrg playsRole myOrg; PersonalInformationSystem playsRole personalInformationSystem; } relation MyOrgPersonalInformation { .pt.ist.bennu.core.domain.MyOrg playsRole myOrg; PersonalInformation playsRole personalInformations { multiplicity *; } } relation MyOrgIdentificationDocument { .pt.ist.bennu.core.domain.MyOrg playsRole myOrg; IdentificationDocument playsRole identificationDocuments { multiplicity *; } } relation PartyPartyInformation { .module.organization.domain.Party playsRole party; PartyInformation playsRole partyInformation; } relation PersonalInformationIdentificationDocument { PersonalInformation playsRole personalInformation; IdentificationDocument playsRole idDocument; }