/** * The contents of this file are subject to the OpenMRS Public License * Version 1.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://license.openmrs.org * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Copyright (C) OpenMRS, LLC. All Rights Reserved. */ package org.openmrs; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Root; /** * ConceptDatatype */ @Root public class ConceptDatatype extends BaseOpenmrsMetadata implements java.io.Serializable { public static final long serialVersionUID = 473L; // HL7 abbreviations (along with our own boolean creature) public static final String BOOLEAN = "BIT"; public static final String CODED = "CWE"; public static final String DATE = "DT"; public static final String DATETIME = "TS"; public static final String DOCUMENT = "RP"; public static final String NUMERIC = "NM"; public static final String TEXT = "ST"; public static final String TIME = "TM"; // UUIDs for core datatypes public static final String NUMERIC_UUID = "8d4a4488-c2cc-11de-8d13-0010c6dffd0f"; public static final String CODED_UUID = "8d4a48b6-c2cc-11de-8d13-0010c6dffd0f"; public static final String TEXT_UUID = "8d4a4ab4-c2cc-11de-8d13-0010c6dffd0f"; public static final String N_A_UUID = "8d4a4c94-c2cc-11de-8d13-0010c6dffd0f"; public static final String DOCUMENT_UUID = "8d4a4e74-c2cc-11de-8d13-0010c6dffd0f"; public static final String DATE_UUID = "8d4a505e-c2cc-11de-8d13-0010c6dffd0f"; public static final String TIME_UUID = "8d4a591e-c2cc-11de-8d13-0010c6dffd0f"; public static final String DATETIME_UUID = "8d4a5af4-c2cc-11de-8d13-0010c6dffd0f"; public static final String BOOLEAN_UUID = "8d4a5cca-c2cc-11de-8d13-0010c6dffd0f"; public static final String RULE_UUID = "8d4a5e96-c2cc-11de-8d13-0010c6dffd0f"; public static final String STRUCTURED_NUMERIC_UUID = "8d4a606c-c2cc-11de-8d13-0010c6dffd0f"; public static final String COMPLEX_UUID = "8d4a6242-c2cc-11de-8d13-0010c6dffd0f"; // Fields private Integer conceptDatatypeId; private String hl7Abbreviation; // Constructors /** default constructor */ public ConceptDatatype() { } /** constructor with id */ public ConceptDatatype(Integer conceptDatatypeId) { this.conceptDatatypeId = conceptDatatypeId; } @Override public boolean equals(Object obj) { if (obj instanceof ConceptDatatype) { ConceptDatatype c = (ConceptDatatype) obj; return (this.conceptDatatypeId.equals(c.getConceptDatatypeId())); } return false; } @Override public int hashCode() { if (this.getConceptDatatypeId() == null) return super.hashCode(); return this.getConceptDatatypeId().hashCode(); } // Property accessors /** * */ @Attribute public Integer getConceptDatatypeId() { return this.conceptDatatypeId; } @Attribute public void setConceptDatatypeId(Integer conceptDatatypeId) { this.conceptDatatypeId = conceptDatatypeId; } /** * @return Returns the hl7Abbreviation. */ @Attribute public String getHl7Abbreviation() { return hl7Abbreviation; } /** * @param hl7Abbreviation The hl7Abbreviation to set. */ @Attribute public void setHl7Abbreviation(String hl7Abbreviation) { this.hl7Abbreviation = hl7Abbreviation; } /* * Convenience methods for resolving common data types */ /** * @return <code>true</code> if datatype is N/A, i.e. this concept is only an answer, not a * question */ public boolean isAnswerOnly() { return N_A_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is a numeric datatype */ public boolean isNumeric() { return NUMERIC_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is coded (i.e., an identifier from a vocabulary) */ public boolean isCoded() { return CODED_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is representation of date (but NOT a time or * datatime--see containsDate() and containsTime()) */ public boolean isDate() { return DATE_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is representation of time * @since 1.7 */ public boolean isTime() { return TIME_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is representation of Datetime * @since 1.7 */ public boolean isDateTime() { return DATETIME_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is representation of either date or Datetime * @since 1.7 */ public boolean containsDate() { return DATE_UUID.equals(getUuid()) || DATETIME_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is representation of either time or Datetime * @since 1.7 */ public boolean containsTime() { return TIME_UUID.equals(getUuid()) || DATETIME_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is text-based */ public boolean isText() { return TEXT_UUID.equals(getUuid()) || DOCUMENT_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is boolean */ public boolean isBoolean() { return BOOLEAN_UUID.equals(getUuid()); } /** * @since 1.5 * @see org.openmrs.OpenmrsObject#getId() */ public Integer getId() { return getConceptDatatypeId(); } /** * @since 1.5 * @see org.openmrs.OpenmrsObject#setId(java.lang.Integer) */ public void setId(Integer id) { setConceptDatatypeId(id); } /** * @return <code>true</code> if datatype is complex * @since 1.7 */ public boolean isComplex() { return COMPLEX_UUID.equals(getUuid()); } /** * @return <code>true</code> if datatype is a rule * @since 1.7 */ public boolean isRule() { return RULE_UUID.equals(getUuid()); } }