001package org.hl7.fhir.utilities;
002
003import org.hl7.fhir.exceptions.FHIRException;
004
005public enum StandardsStatus {
006
007  EXTERNAL, INFORMATIVE, DRAFT, TRIAL_USE, DEPRECATED, NORMATIVE;
008
009  public String toDisplay() {
010    switch (this) {
011    case DRAFT : 
012      return "Draft";  
013    case NORMATIVE  : 
014      return "Normative";
015    case TRIAL_USE : 
016      return "Trial Use";  
017    case INFORMATIVE:
018      return "Informative";
019    case EXTERNAL:
020      return "External";
021    case DEPRECATED: 
022      return "Deprecated";
023    }
024    return "?";
025  }
026
027  public String toCode() {
028    switch (this) {
029    case DRAFT : 
030      return "draft";  
031    case NORMATIVE  : 
032      return "normative";
033    case TRIAL_USE : 
034      return "trial-use";  
035    case INFORMATIVE:
036      return "informative";
037    case DEPRECATED: 
038    return "deprecated";
039    case EXTERNAL:
040      return "external";
041    }
042    return "?";
043  }
044
045
046  public static StandardsStatus fromCode(String value) throws FHIRException {
047    if (Utilities.noString(value))
048      return null;
049    if (value.equalsIgnoreCase("draft"))
050      return DRAFT;
051    if (value.equalsIgnoreCase("NORMATIVE")) 
052      return NORMATIVE;
053    if (value.equalsIgnoreCase("TRIAL_USE")) 
054      return TRIAL_USE;  
055    if (value.equalsIgnoreCase("TRIAL-USE")) 
056      return TRIAL_USE;  
057    if (value.equalsIgnoreCase("TRIAL USE")) 
058      return TRIAL_USE;  
059    if (value.equalsIgnoreCase("INFORMATIVE"))
060      return INFORMATIVE;
061    if (value.equalsIgnoreCase("EXTERNAL"))
062      return EXTERNAL;
063    if (value.equalsIgnoreCase("DEPRECATED"))
064      return DEPRECATED;
065    throw new FHIRException("Incorrect Standards Status '"+value+"'");
066  }
067
068  public String getAbbrev() {
069    switch (this) {
070    case DRAFT : 
071      return "D";  
072    case NORMATIVE  : 
073      return "N";
074    case TRIAL_USE : 
075      return "TU";  
076    case INFORMATIVE:
077      return "I";
078    case DEPRECATED: 
079      return "XD";
080    case EXTERNAL:
081      return "X";
082    }
083    return "?";
084  }
085
086  public String getColor() {
087    switch (this) {
088    case DRAFT : 
089      return "#efefef";  
090    case NORMATIVE  : 
091      return "#e6ffe6";
092    case TRIAL_USE : 
093      return "#fff5e6";  
094    case INFORMATIVE:
095      return "#ffffe6";
096    case DEPRECATED: 
097      return "#ffcccc";
098    case EXTERNAL:
099      return "#e6ffff";
100    }
101    return "?";
102  }
103
104  public String getColorSvg() {
105    switch (this) {
106    case DRAFT : 
107      return "#f6f6f6";  
108    case NORMATIVE  : 
109      return "#ecffec";
110    case TRIAL_USE : 
111      return "#fff9ec";  
112    case INFORMATIVE:
113      return "#ffffec";
114    case DEPRECATED: 
115      return "#ffcccc";
116    case EXTERNAL:
117      return "#ecffff";
118    }
119    return "?";
120  }
121
122  public boolean canDependOn(StandardsStatus tgtSS) {
123    if (this == DRAFT || this == INFORMATIVE || this == EXTERNAL)
124      return true;
125    if (this == TRIAL_USE)
126      return (tgtSS != DRAFT);
127    if (this == NORMATIVE)
128      return (tgtSS == NORMATIVE || tgtSS == EXTERNAL );
129    if (this == DEPRECATED)
130      return (tgtSS == DEPRECATED );
131    return false;
132  }
133
134  public boolean isLowerThan(StandardsStatus status) {
135    return this.compareTo(status) <0;
136  }
137}