isValueAValidPrimitive function
Assesses if a value is a valid Primitive of the type specificed
Implementation
bool isValueAValidPrimitive(String primitiveClass, dynamic value) {
try {
switch (primitiveClass.toLowerCase()) {
case 'base64binary':
if (value is! String) {
return false;
} else {
FhirBase64Binary(value);
}
case 'boolean':
if (value is! bool) {
return false;
} else {
FhirBoolean(value);
}
case 'canonical':
if (value is! String) {
return false;
} else {
FhirCanonical(value);
}
case 'code':
if (value is! String) {
return false;
} else {
FhirCode(value);
}
case 'date':
if (value is String) {
FhirDate.fromString(value);
} else {
return false;
}
case 'decimal':
if (value is! num) {
return false;
} else {
FhirDecimal(value);
}
case 'datetime':
if (value is String) {
FhirDateTime.fromString(value);
} else {
return false;
}
case 'uri':
if (value is! String) {
return false;
} else {
FhirUri(value);
}
case 'url':
if (value is! String) {
return false;
} else {
FhirUrl(value);
}
case 'id':
if (value is! String) {
return false;
} else {
FhirId(value);
}
case 'instant':
if (value is String) {
FhirInstant.fromString(value);
} else {
return false;
}
case 'integer':
if (value is! int) {
return false;
} else {
FhirInteger(value);
}
case 'integer64':
if (value is! String && value is! BigInt) {
return false;
} else if (value is BigInt) {
FhirInteger64(value);
} else {
final bigInt = BigInt.tryParse(value as String);
if (bigInt == null) {
return false;
} else {
FhirInteger64(bigInt);
}
}
case 'markdown':
if (value is! String) {
return false;
} else {
FhirMarkdown(value);
}
case 'xhtml':
if (value is! String) {
return false;
} else {
FhirMarkdown(value);
}
case 'oid':
if (value is! String) {
return false;
} else {
FhirOid(value);
}
case 'positiveint':
if (value is! int) {
return false;
} else {
FhirPositiveInt(value);
}
case 'time':
if (value is! String) {
return false;
} else {
FhirTime(value);
}
case 'unsignedint':
if (value is! int) {
return false;
} else {
FhirUnsignedInt(value);
}
case 'uuid':
if (value is! String) {
return false;
} else {
FhirUuid(value);
}
case 'http://hl7.org/fhirpath/system.string':
case 'string':
return value is String;
}
return true;
} catch (e) {
return false;
}
}