81 lines
2.5 KiB
Java
81 lines
2.5 KiB
Java
public boolean hasTarget() {
|
|
return Utilities.existsInList(getCode(), "Reference", "canonical", "CodeableReference");
|
|
}
|
|
|
|
/**
|
|
* This code checks for the system prefix and returns the FHIR type
|
|
*
|
|
* @return
|
|
*/
|
|
public String getWorkingCode() {
|
|
if (hasExtension(ToolingExtensions.EXT_FHIR_TYPE))
|
|
return getExtensionString(ToolingExtensions.EXT_FHIR_TYPE);
|
|
if (!hasCodeElement())
|
|
return null;
|
|
if (getCodeElement().hasExtension(ToolingExtensions.EXT_XML_TYPE)) {
|
|
String s = getCodeElement().getExtensionString(ToolingExtensions.EXT_XML_TYPE);
|
|
if ("xsd:gYear OR xsd:gYearMonth OR xsd:date OR xsd:dateTime".equalsIgnoreCase(s))
|
|
return "dateTime";
|
|
if ("xsd:gYear OR xsd:gYearMonth OR xsd:date".equalsIgnoreCase(s))
|
|
return "date";
|
|
if ("xsd:dateTime".equalsIgnoreCase(s))
|
|
return "instant";
|
|
if ("xsd:token".equals(s))
|
|
return "code";
|
|
if ("xsd:boolean".equals(s))
|
|
return "boolean";
|
|
if ("xsd:string".equals(s))
|
|
return "string";
|
|
if ("xsd:time".equals(s))
|
|
return "time";
|
|
if ("xsd:int".equals(s))
|
|
return "integer";
|
|
if ("xsd:decimal OR xsd:double".equals(s))
|
|
return "decimal";
|
|
if ("xsd:decimal".equalsIgnoreCase(s))
|
|
return "decimal";
|
|
if ("xsd:base64Binary".equalsIgnoreCase(s))
|
|
return "base64Binary";
|
|
if ("xsd:positiveInteger".equalsIgnoreCase(s))
|
|
return "positiveInt";
|
|
if ("xsd:nonNegativeInteger".equalsIgnoreCase(s))
|
|
return "unsignedInt";
|
|
if ("xsd:anyURI".equalsIgnoreCase(s))
|
|
return "uri";
|
|
|
|
throw new Error("Unknown xml type '"+s+"'");
|
|
}
|
|
return getCode();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
String res = getCode();
|
|
if (hasProfile()) {
|
|
res = res + "{";
|
|
boolean first = true;
|
|
for (CanonicalType s : getProfile()) {
|
|
if (first) first = false; else res = res + "|";
|
|
res = res + s.getValue();
|
|
}
|
|
res = res + "}";
|
|
}
|
|
if (hasTargetProfile()) {
|
|
res = res + "->(";
|
|
boolean first = true;
|
|
for (CanonicalType s : getTargetProfile()) {
|
|
if (first) first = false; else res = res + "|";
|
|
res = res + s.getValue();
|
|
}
|
|
res = res + ")";
|
|
}
|
|
return res;
|
|
}
|
|
|
|
public String getName() {
|
|
return getWorkingCode();
|
|
}
|
|
|
|
public boolean isResourceReference() {
|
|
return "Reference".equals(getCode()) && hasTargetProfile();
|
|
} |