/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs;
import org.codehaus.jackson.annotate.JsonIgnore;
/**
* Defines a type of relationship between two people in the database. <br>
* <br>
* A relationship is two-way. There is a name for the relationship in both directions. <br>
* <br>
* For example: <br>
* a) physician Joe<br>
* b) patient Bob<br>
* Joe is the "physician of" Bob <u>and</u> Bob is the patient of Joe. Once you can establish one of
* the two relationships, you automatically know the other. <br>
* <br>
* ALL relationships are two-way and can be defined as such. <br>
* <br>
* RelationshipTypes should be defined as <b>gender non-specific</b> For example: A mother and her
* son. Instead of having a RelationshipType defined as mother-son, it should be defined as
* Parent-child. (This avoids the duplicative types that would come out like father-son,
* father-daughter, mother-daughter) <br>
* <br>
* In English, we run into a tricky RelationshipType with aunts and uncles. We have chosen to define
* them as aunt/uncle-niece/nephew.
*/
public class RelationshipType extends BaseOpenmrsMetadata{
public static final long serialVersionUID = 4223L;
// Fields
private Integer relationshipTypeId;
private String aIsToB;
private String bIsToA;
private Integer weight = 0;
private Boolean preferred = false;
// Constructors
/** default constructor */
public RelationshipType() {
}
/** constructor with id */
public RelationshipType(Integer relationshipTypeId) {
this.relationshipTypeId = relationshipTypeId;
}
// Property accessors
/**
* @return Returns the relationshipTypeId.
*/
public Integer getRelationshipTypeId() {
return relationshipTypeId;
}
/**
* @param relationshipTypeId The relationshipTypeId to set.
*/
public void setRelationshipTypeId(Integer relationshipTypeId) {
this.relationshipTypeId = relationshipTypeId;
}
/**
* @return the weight
*/
public Integer getWeight() {
return weight;
}
/**
* @param weight the weight to set
*/
public void setWeight(Integer weight) {
this.weight = weight;
}
/**
* The java bean specifications says that if an attribute has the second letter capitalized (as
* the "I" is), the initial "a" is not to be capitalized. Both Spring and Hibernate use this
* "getter" definition
*
* @return the aIsToB
*/
public String getaIsToB() {
return aIsToB;
}
/**
* @param aisToB the aIsToB to set
*/
public void setaIsToB(String aisToB) {
aIsToB = aisToB;
}
/**
* @return the bIsToA
*/
public String getbIsToA() {
return bIsToA;
}
/**
* "Preferred" relationship types are those that should be shown as default types when
* adding/editing a person's relationships
*
* @return the preferred status
*
* @deprecated as of 2.0, use {@link #getPrefered()}
*/
@Deprecated
@JsonIgnore
public Boolean isPreferred() {
return getPreferred();
}
public Boolean getPreferred() {
return preferred;
}
/**
* "Preferred" relationship types are those that should be shown as default types when
* adding/editing a person's relationships
*
* @param preferred sets the preferred status of this relationship type
*/
public void setPreferred(Boolean preferred) {
this.preferred = preferred;
}
/**
* @param bisToA the bIsToA to set
*/
public void setbIsToA(String bisToA) {
bIsToA = bisToA;
}
/**
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return getaIsToB() + "/" + getbIsToA();
}
/**
* @since 1.5
* @see org.openmrs.OpenmrsObject#getId()
*/
@Override
public Integer getId() {
return getRelationshipTypeId();
}
/**
* @since 1.5
* @see org.openmrs.OpenmrsObject#setId(java.lang.Integer)
*/
@Override
public void setId(Integer id) {
setRelationshipTypeId(id);
}
}