/*******************************************************************************
 * Copyright 2014 Centre for Development of Advanced Computing(C-DAC), Pune
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package in.cdac.medinfo.csnotk.csnolib.model;


/**
 * {@link CompositeDescription} is extended from {@link Description}.
 *  A {@link CompositeDescription} consists
 * of inherited fields of {@link Description} and 
 * description hierarchy,isPreferredTerm,conceptState,conceptFsn,definitionStatus.
 * 
 */
public class CompositeDescription extends Description{
	/**
	 * Serial version UID
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * Semantic Tag/ Hierarchy to which the description belongs
	 */
	private String hierarchy;
	/**
	 * String value that describes whether the description is preferred term or not
	 */
    private String isPreferredTerm;
    /**
     * It refers to the state of the Concept to which the particular
     * description is associated
     */
	private String conceptState;
	/**
	 * Fully Specified Name of the Concept
	 */
	private String conceptFsn;
	/**
	 * Definition status of the Concept to which the description is 
	 * associated
	 */
	private String definitionStatus;
	/**
	 * RefSetMember to identify description is from UK or US
	 */	
	private RefSetMember refSetLangMember;
private Refset refset;
	
	public Refset getRefset() {
		return refset;
	}
	public void setRefset(Refset refset) {
		this.refset = refset;
	}
	/**
	 * Used to get RefSetMember object
	 */
	public RefSetMember getRefSetLangMember() {
		return refSetLangMember;
	}
	/**
	 * Used to set RefSetMember object
	 */	
	public void setRefSetLangMember(RefSetMember refSetLangMember) {
		this.refSetLangMember = refSetLangMember;
	}
	/**
	 * Default constructor
	 */
	public CompositeDescription()
	{
		
	}
	/**
	 * Returns a String value to identify whether a description is 
	 * preferred or acceptable.
	 * @return {@link String} value that specifies the preferred state of a
	 * description.
	 */
	public String getIsPreferredTerm() {
		return isPreferredTerm;
	}
	/**
	 * Sets the isPreferredTerm value.
	 * @param isPreferredTerm
	 * 						String value to identify whether a description is 
	 * 						preferred or not.
	 */
	public void setIsPreferredTerm(String isPreferredTerm) {
		this.isPreferredTerm = isPreferredTerm;
	}
	/**
	 * Returns the Semantic Tag/ hierarchy of a description.
	 * @return {@link String} value that specifies the Semantic Tag/hierarchy
	 * to which the description belongs.
	 */
	public String getHierarchy() {
		return hierarchy;
	}
	/**
	 * Returns the Semantic Tag/hierarchy of a description.
	 * @param hierachy
	 * 				the Semantic Tag/ hierarchy of the description.
	 */
	public void setHierarchy(String hierarchy) {
		this.hierarchy = hierarchy;
	}
	/**
	 * Returns the state of the concept corresponding to the description.
	 * @return {@link String} value that specifies the state of the concept
	 * associated with this description.
	 */
	public String getConceptState() {
		return conceptState;
	}
	/**
	 * Sets the concept state.
	 * @param conceptState 
	 * 						{@link String} value that specifies the state of the concept
	 * 						associated with this description.
	 */
	public void setConceptState(String conceptState) {
		this.conceptState = conceptState;
	}
	/**
	 * Returns the concept FSN.
	 * @return {@link String} value that corresponds to the FSN.
	 */
	public String getConceptFsn() {
		return conceptFsn;
	}
	/**
	 * Sets the concept FSN value.
	 * @param conceptFsn 
	 * 						{@link String} value that specifies the FSN of the 
	 * 						concept.
	 */
	public void setConceptFsn(String conceptFsn) {
		this.conceptFsn = conceptFsn;
	}
	/**
	 * Returns the definition status of the SNOMED CT {@link Concept}.
	 * associated with this description
	 * @return {@link String}.
	 */
	public String getDefinitionStatus() {
		return definitionStatus;
	}
	/**
	 * Sets the definition status.
	 * @param definitionStatus 
	 * 						{@link String} value that corresponds to
	 * 						 the definition status of the Concept.
	 */
	public void setDefinitionStatus(String definitionStatus) {
		this.definitionStatus = definitionStatus;
	}
	@Override
	public String toString() {
		return "CompositeDescription [hierachy=" + hierarchy + ", isPreferredTerm=" + isPreferredTerm + ", conceptState="
				+ conceptState + ", conceptFsn=" + conceptFsn + ", definitionStatus=" + definitionStatus
				+ ", refSetLangMember=" + refSetLangMember + ", id=" + id + ", effectiveTime=" + effectiveTime
				+ ", activeStatus=" + activeStatus + ", moduleId=" + moduleId + "]";
	}
	
	
		
}
