001
002package ca.uhn.fhir.model.dstu2.valueset;
003
004import ca.uhn.fhir.model.api.*;
005import java.util.HashMap;
006import java.util.Map;
007
008public enum NameUseEnum {
009
010        /**
011         * Display: <b>Usual</b><br>
012         * Code Value: <b>usual</b>
013         *
014         * Known as/conventional/the one you normally use
015         */
016        USUAL("usual", "http://hl7.org/fhir/name-use"),
017        
018        /**
019         * Display: <b>Official</b><br>
020         * Code Value: <b>official</b>
021         *
022         * The formal name as registered in an official (government) registry, but which name might not be commonly used. May be called "legal name".
023         */
024        OFFICIAL("official", "http://hl7.org/fhir/name-use"),
025        
026        /**
027         * Display: <b>Temp</b><br>
028         * Code Value: <b>temp</b>
029         *
030         * A temporary name. Name.period can provide more detailed information. This may also be used for temporary names assigned at birth or in emergency situations.
031         */
032        TEMP("temp", "http://hl7.org/fhir/name-use"),
033        
034        /**
035         * Display: <b>Nickname</b><br>
036         * Code Value: <b>nickname</b>
037         *
038         * A name that is used to address the person in an informal manner, but is not part of their formal or usual name
039         */
040        NICKNAME("nickname", "http://hl7.org/fhir/name-use"),
041        
042        /**
043         * Display: <b>Anonymous</b><br>
044         * Code Value: <b>anonymous</b>
045         *
046         * Anonymous assigned name, alias, or pseudonym (used to protect a person's identity for privacy reasons)
047         */
048        ANONYMOUS("anonymous", "http://hl7.org/fhir/name-use"),
049        
050        /**
051         * Display: <b>Old</b><br>
052         * Code Value: <b>old</b>
053         *
054         * This name is no longer in use (or was never correct, but retained for records)
055         */
056        OLD("old", "http://hl7.org/fhir/name-use"),
057        
058        /**
059         * Display: <b>Maiden</b><br>
060         * Code Value: <b>maiden</b>
061         *
062         * A name used prior to marriage. Marriage naming customs vary greatly around the world. This name use is for use by applications that collect and store "maiden" names. Though the concept of maiden name is often gender specific, the use of this term is not gender specific. The use of this term does not imply any particular history for a person's name, nor should the maiden name be determined algorithmically.
063         */
064        MAIDEN("maiden", "http://hl7.org/fhir/name-use"),
065        
066        ;
067        
068        /**
069         * Identifier for this Value Set:
070         * 
071         */
072        public static final String VALUESET_IDENTIFIER = "";
073
074        /**
075         * Name for this Value Set:
076         * NameUse
077         */
078        public static final String VALUESET_NAME = "NameUse";
079
080        private static Map<String, NameUseEnum> CODE_TO_ENUM = new HashMap<String, NameUseEnum>();
081        private static Map<String, Map<String, NameUseEnum>> SYSTEM_TO_CODE_TO_ENUM = new HashMap<String, Map<String, NameUseEnum>>();
082        
083        private final String myCode;
084        private final String mySystem;
085        
086        static {
087                for (NameUseEnum next : NameUseEnum.values()) {
088                        CODE_TO_ENUM.put(next.getCode(), next);
089                        
090                        if (!SYSTEM_TO_CODE_TO_ENUM.containsKey(next.getSystem())) {
091                                SYSTEM_TO_CODE_TO_ENUM.put(next.getSystem(), new HashMap<String, NameUseEnum>());
092                        }
093                        SYSTEM_TO_CODE_TO_ENUM.get(next.getSystem()).put(next.getCode(), next);                 
094                }
095        }
096        
097        /**
098         * Returns the code associated with this enumerated value
099         */
100        public String getCode() {
101                return myCode;
102        }
103        
104        /**
105         * Returns the code system associated with this enumerated value
106         */
107        public String getSystem() {
108                return mySystem;
109        }
110        
111        /**
112         * Returns the enumerated value associated with this code
113         */
114        public static NameUseEnum forCode(String theCode) {
115                NameUseEnum retVal = CODE_TO_ENUM.get(theCode);
116                return retVal;
117        }
118
119        /**
120         * Converts codes to their respective enumerated values
121         */
122        public static final IValueSetEnumBinder<NameUseEnum> VALUESET_BINDER = new IValueSetEnumBinder<NameUseEnum>() {
123                @Override
124                public String toCodeString(NameUseEnum theEnum) {
125                        return theEnum.getCode();
126                }
127
128                @Override
129                public String toSystemString(NameUseEnum theEnum) {
130                        return theEnum.getSystem();
131                }
132                
133                @Override
134                public NameUseEnum fromCodeString(String theCodeString) {
135                        return CODE_TO_ENUM.get(theCodeString);
136                }
137                
138                @Override
139                public NameUseEnum fromCodeString(String theCodeString, String theSystemString) {
140                        Map<String, NameUseEnum> map = SYSTEM_TO_CODE_TO_ENUM.get(theSystemString);
141                        if (map == null) {
142                                return null;
143                        }
144                        return map.get(theCodeString);
145                }
146                
147        };
148        
149        /** 
150         * Constructor
151         */
152        NameUseEnum(String theCode, String theSystem) {
153                myCode = theCode;
154                mySystem = theSystem;
155        }
156
157        
158}