001/*-
002 * #%L
003 * HAPI FHIR JPA Model
004 * %%
005 * Copyright (C) 2014 - 2024 Smile CDR, Inc.
006 * %%
007 * Licensed under the Apache License, Version 2.0 (the "License");
008 * you may not use this file except in compliance with the License.
009 * You may obtain a copy of the License at
010 *
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 * #L%
019 */
020package ca.uhn.fhir.jpa.model.entity;
021
022/**
023 * Support different UCUM services level for FHIR Quantity data type.
024 *
025 * @since 5.3.0
026 */
027public enum NormalizedQuantitySearchLevel {
028
029        /**
030         * default, Quantity is stored in {@link ResourceIndexedSearchParamQuantity} only and it is used by searching.
031         */
032        NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED,
033
034        /**
035         * Quantity is stored in both {@link ResourceIndexedSearchParamQuantity}
036         * and {@link ResourceIndexedSearchParamQuantityNormalized},
037         * but {@link ResourceIndexedSearchParamQuantity} is used by searching.
038         */
039        NORMALIZED_QUANTITY_STORAGE_SUPPORTED,
040
041        /**
042         * Quantity is stored in both {@link ResourceIndexedSearchParamQuantity}
043         * and {@link ResourceIndexedSearchParamQuantityNormalized},
044         * {@link ResourceIndexedSearchParamQuantityNormalized} is used by searching.
045         */
046        NORMALIZED_QUANTITY_SEARCH_SUPPORTED;
047
048        /**
049         * Quantity is stored in only in {@link ResourceIndexedSearchParamQuantityNormalized},
050         * {@link ResourceIndexedSearchParamQuantityNormalized} is used by searching.
051         * The existing non normalized quantity will be not supported
052         * NOTE? this option is not supported in this release
053         */
054        // When this is enabled, we can enable testSortByQuantityWithNormalizedQuantitySearchFullSupported()
055        // NORMALIZED_QUANTITY_SEARCH_FULL_SUPPORTED,
056
057        public boolean storageOrSearchSupported() {
058                return this.equals(NormalizedQuantitySearchLevel.NORMALIZED_QUANTITY_STORAGE_SUPPORTED)
059                                || this.equals(NormalizedQuantitySearchLevel.NORMALIZED_QUANTITY_SEARCH_SUPPORTED);
060        }
061}