code: def value_predicate_to_type(self, value_pred: str) -> URIRef:
          
          if value_pred.startswith('value'):
              vp_datatype = value_pred.replace('value', '')
              if vp_datatype:
                  if self.has_type(FHIR[vp_datatype]):
                      return FHIR[vp_datatype]
                  else:
                      vp_datatype = vp_datatype[0].lower() + vp_datatype[1:]
                      if self.has_type(FHIR[vp_datatype]):
                          return FHIR[vp_datatype]
          if self.is_valid(FHIR[value_pred]):
              return FHIR[value_pred]
docs: Convert a predicate in the form of "fhir:[...].value[type] to fhir:type, covering the downshift on the
          first character if necessary
          :param value_pred: Predicate associated with the value
          :return: corresponding type or None if not found