class AbstractValueTypeDhisToFhirTransformerUtils extends AbstractTransformerUtils implements DhisToFhirTransformerUtils {

    @ScriptMethod( description = "Returns if the specified DHIS2 value type is supported.",
        args = @ScriptMethodArg( value = "valueType", description = "The DHIS2 value type that should be checked." ),
        returnDescription = "A boolean value that indicates if the value is supported." )
    public boolean isSupportedValueType( @Nonnull Object valueType )
    {
        final ValueType convertedValueType = NameUtils.toEnumValue( ValueType.class, valueType );

        switch ( convertedValueType )
        {
            case TEXT:
            case EMAIL:
            case LETTER:
            case ORGANISATION_UNIT:
            case PHONE_NUMBER:
            case TRACKER_ASSOCIATE:
            case URL:
            case USERNAME:
            case LONG_TEXT:
            case INTEGER:
            case INTEGER_POSITIVE:
            case INTEGER_NEGATIVE:
            case INTEGER_ZERO_OR_POSITIVE:
            case NUMBER:
            case PERCENTAGE:
            case UNIT_INTERVAL:
            case DATETIME:
            case AGE:
            case DATE:
            case TIME:
            case BOOLEAN:
            case TRUE_ONLY:
                return true;
        }

        return false;
    }

    protected  AbstractValueTypeDhisToFhirTransformerUtils( @Nonnull ScriptExecutionContext scriptExecutionContext, @Nonnull ValueConverter valueConverter );

}