001package org.hl7.fhir.r4.model; 002 003/* 004 Copyright (c) 2011+, HL7, Inc. 005 All rights reserved. 006 007 Redistribution and use in source and binary forms, with or without modification, 008 are permitted provided that the following conditions are met: 009 010 * Redistributions of source code must retain the above copyright notice, this 011 list of conditions and the following disclaimer. 012 * Redistributions in binary form must reproduce the above copyright notice, 013 this list of conditions and the following disclaimer in the documentation 014 and/or other materials provided with the distribution. 015 * Neither the name of HL7 nor the names of its contributors may be used to 016 endorse or promote products derived from this software without specific 017 prior written permission. 018 019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 022 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 023 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 024 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 025 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 026 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 027 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 028 POSSIBILITY OF SUCH DAMAGE. 029 030*/ 031 032// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1 033import java.util.List; 034 035import org.hl7.fhir.exceptions.FHIRException; 036import org.hl7.fhir.instance.model.api.ICompositeType; 037 038import ca.uhn.fhir.model.api.annotation.Child; 039import ca.uhn.fhir.model.api.annotation.DatatypeDef; 040import ca.uhn.fhir.model.api.annotation.Description; 041 042/** 043 * A relationship of two Quantity values - expressed as a numerator and a 044 * denominator. 045 */ 046@DatatypeDef(name = "Ratio") 047public class Ratio extends Type implements ICompositeType { 048 049 /** 050 * The value of the numerator. 051 */ 052 @Child(name = "numerator", type = { Quantity.class }, order = 0, min = 0, max = 1, modifier = false, summary = true) 053 @Description(shortDefinition = "Numerator value", formalDefinition = "The value of the numerator.") 054 protected Quantity numerator; 055 056 /** 057 * The value of the denominator. 058 */ 059 @Child(name = "denominator", type = { Quantity.class }, order = 1, min = 0, max = 1, modifier = false, summary = true) 060 @Description(shortDefinition = "Denominator value", formalDefinition = "The value of the denominator.") 061 protected Quantity denominator; 062 063 private static final long serialVersionUID = 479922563L; 064 065 /** 066 * Constructor 067 */ 068 public Ratio() { 069 super(); 070 } 071 072 /** 073 * @return {@link #numerator} (The value of the numerator.) 074 */ 075 public Quantity getNumerator() { 076 if (this.numerator == null) 077 if (Configuration.errorOnAutoCreate()) 078 throw new Error("Attempt to auto-create Ratio.numerator"); 079 else if (Configuration.doAutoCreate()) 080 this.numerator = new Quantity(); // cc 081 return this.numerator; 082 } 083 084 public boolean hasNumerator() { 085 return this.numerator != null && !this.numerator.isEmpty(); 086 } 087 088 /** 089 * @param value {@link #numerator} (The value of the numerator.) 090 */ 091 public Ratio setNumerator(Quantity value) { 092 this.numerator = value; 093 return this; 094 } 095 096 /** 097 * @return {@link #denominator} (The value of the denominator.) 098 */ 099 public Quantity getDenominator() { 100 if (this.denominator == null) 101 if (Configuration.errorOnAutoCreate()) 102 throw new Error("Attempt to auto-create Ratio.denominator"); 103 else if (Configuration.doAutoCreate()) 104 this.denominator = new Quantity(); // cc 105 return this.denominator; 106 } 107 108 public boolean hasDenominator() { 109 return this.denominator != null && !this.denominator.isEmpty(); 110 } 111 112 /** 113 * @param value {@link #denominator} (The value of the denominator.) 114 */ 115 public Ratio setDenominator(Quantity value) { 116 this.denominator = value; 117 return this; 118 } 119 120 protected void listChildren(List<Property> children) { 121 super.listChildren(children); 122 children.add(new Property("numerator", "Quantity", "The value of the numerator.", 0, 1, numerator)); 123 children.add(new Property("denominator", "Quantity", "The value of the denominator.", 0, 1, denominator)); 124 } 125 126 @Override 127 public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException { 128 switch (_hash) { 129 case 1747334793: 130 /* numerator */ return new Property("numerator", "Quantity", "The value of the numerator.", 0, 1, numerator); 131 case -1983274394: 132 /* denominator */ return new Property("denominator", "Quantity", "The value of the denominator.", 0, 1, 133 denominator); 134 default: 135 return super.getNamedProperty(_hash, _name, _checkValid); 136 } 137 138 } 139 140 @Override 141 public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException { 142 switch (hash) { 143 case 1747334793: 144 /* numerator */ return this.numerator == null ? new Base[0] : new Base[] { this.numerator }; // Quantity 145 case -1983274394: 146 /* denominator */ return this.denominator == null ? new Base[0] : new Base[] { this.denominator }; // Quantity 147 default: 148 return super.getProperty(hash, name, checkValid); 149 } 150 151 } 152 153 @Override 154 public Base setProperty(int hash, String name, Base value) throws FHIRException { 155 switch (hash) { 156 case 1747334793: // numerator 157 this.numerator = castToQuantity(value); // Quantity 158 return value; 159 case -1983274394: // denominator 160 this.denominator = castToQuantity(value); // Quantity 161 return value; 162 default: 163 return super.setProperty(hash, name, value); 164 } 165 166 } 167 168 @Override 169 public Base setProperty(String name, Base value) throws FHIRException { 170 if (name.equals("numerator")) { 171 this.numerator = castToQuantity(value); // Quantity 172 } else if (name.equals("denominator")) { 173 this.denominator = castToQuantity(value); // Quantity 174 } else 175 return super.setProperty(name, value); 176 return value; 177 } 178 179 @Override 180 public Base makeProperty(int hash, String name) throws FHIRException { 181 switch (hash) { 182 case 1747334793: 183 return getNumerator(); 184 case -1983274394: 185 return getDenominator(); 186 default: 187 return super.makeProperty(hash, name); 188 } 189 190 } 191 192 @Override 193 public String[] getTypesForProperty(int hash, String name) throws FHIRException { 194 switch (hash) { 195 case 1747334793: 196 /* numerator */ return new String[] { "Quantity" }; 197 case -1983274394: 198 /* denominator */ return new String[] { "Quantity" }; 199 default: 200 return super.getTypesForProperty(hash, name); 201 } 202 203 } 204 205 @Override 206 public Base addChild(String name) throws FHIRException { 207 if (name.equals("numerator")) { 208 this.numerator = new Quantity(); 209 return this.numerator; 210 } else if (name.equals("denominator")) { 211 this.denominator = new Quantity(); 212 return this.denominator; 213 } else 214 return super.addChild(name); 215 } 216 217 public String fhirType() { 218 return "Ratio"; 219 220 } 221 222 public Ratio copy() { 223 Ratio dst = new Ratio(); 224 copyValues(dst); 225 return dst; 226 } 227 228 public void copyValues(Ratio dst) { 229 super.copyValues(dst); 230 dst.numerator = numerator == null ? null : numerator.copy(); 231 dst.denominator = denominator == null ? null : denominator.copy(); 232 } 233 234 protected Ratio typedCopy() { 235 return copy(); 236 } 237 238 @Override 239 public boolean equalsDeep(Base other_) { 240 if (!super.equalsDeep(other_)) 241 return false; 242 if (!(other_ instanceof Ratio)) 243 return false; 244 Ratio o = (Ratio) other_; 245 return compareDeep(numerator, o.numerator, true) && compareDeep(denominator, o.denominator, true); 246 } 247 248 @Override 249 public boolean equalsShallow(Base other_) { 250 if (!super.equalsShallow(other_)) 251 return false; 252 if (!(other_ instanceof Ratio)) 253 return false; 254 Ratio o = (Ratio) other_; 255 return true; 256 } 257 258 public boolean isEmpty() { 259 return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(numerator, denominator); 260 } 261 262}