001package org.hl7.fhir.utilities; 002 003import org.hl7.fhir.exceptions.FHIRException; 004 005public enum StandardsStatus { 006 007 EXTERNAL, INFORMATIVE, DRAFT, TRIAL_USE, 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 } 022 return "?"; 023 } 024 025 public static StandardsStatus fromCode(String value) throws FHIRException { 026 if (Utilities.noString(value)) 027 return null; 028 if (value.equalsIgnoreCase("draft")) 029 return DRAFT; 030 if (value.equalsIgnoreCase("NORMATIVE")) 031 return NORMATIVE; 032 if (value.equalsIgnoreCase("TRIAL_USE")) 033 return TRIAL_USE; 034 if (value.equalsIgnoreCase("TRIAL-USE")) 035 return TRIAL_USE; 036 if (value.equalsIgnoreCase("TRIAL USE")) 037 return TRIAL_USE; 038 if (value.equalsIgnoreCase("INFORMATIVE")) 039 return INFORMATIVE; 040 if (value.equalsIgnoreCase("EXTERNAL")) 041 return EXTERNAL; 042 throw new FHIRException("Incorrect Standards Status '"+value+"'"); 043 } 044 045 public String getAbbrev() { 046 switch (this) { 047 case DRAFT : 048 return "D"; 049 case NORMATIVE : 050 return "N"; 051 case TRIAL_USE : 052 return "TU"; 053 case INFORMATIVE: 054 return "I"; 055 case EXTERNAL: 056 return "X"; 057 } 058 return "?"; 059 } 060 061 public String getColor() { 062 switch (this) { 063 case DRAFT : 064 return "#efefef"; 065 case NORMATIVE : 066 return "#e6ffe6"; 067 case TRIAL_USE : 068 return "#fff5e6"; 069 case INFORMATIVE: 070 return "#ffffe6"; 071 case EXTERNAL: 072 return "#e6ffff"; 073 } 074 return "?"; 075 } 076 077 public String getColorSvg() { 078 switch (this) { 079 case DRAFT : 080 return "#f6f6f6"; 081 case NORMATIVE : 082 return "#ecffec"; 083 case TRIAL_USE : 084 return "#fff9ec"; 085 case INFORMATIVE: 086 return "#ffffec"; 087 case EXTERNAL: 088 return "#ecffff"; 089 } 090 return "?"; 091 } 092 093 public boolean canDependOn(StandardsStatus tgtSS) { 094 if (this == DRAFT || this == INFORMATIVE || this == EXTERNAL) 095 return true; 096 if (this == TRIAL_USE) 097 return (tgtSS != DRAFT); 098 if (this == NORMATIVE) 099 return (tgtSS == NORMATIVE || tgtSS == EXTERNAL ); 100 return false; 101 } 102 103 public boolean isLowerThan(StandardsStatus status) { 104 return this.compareTo(status) <0; 105 } 106}