isValueAValidPrimitive function

bool isValueAValidPrimitive(
  1. String primitiveClass,
  2. dynamic value
)

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;
  }
}