/** * @param \SimpleXMLElement $sxe * @return null|ComplexClassTypesEnum */ public static function getComplexClassType(\SimpleXMLElement $sxe) { $name = XMLUtils::getObjectNameFromElement($sxe); if (false !== strpos($name, '.')) { return new ComplexClassTypesEnum(ComplexClassTypesEnum::COMPONENT); } $baseName = XMLUtils::getBaseFHIRElementNameFromExtension($sxe); if (null === $baseName) { return null; } $baseType = new BaseObjectTypeEnum($baseName); switch ((string) $baseType) { case BaseObjectTypeEnum::BACKBONE_ELEMENT: return new ComplexClassTypesEnum(ComplexClassTypesEnum::RESOURCE); default: return new ComplexClassTypesEnum((string) $baseType); } }
/** * @param XSDMap $XSDMap * @param \SimpleXMLElement $sxe * @param ClassTemplate $classTemplate */ public static function determineParentClass(XSDMap $XSDMap, \SimpleXMLElement $sxe, ClassTemplate $classTemplate) { $fhirElementName = XMLUtils::getBaseFHIRElementNameFromExtension($sxe); if (null === $fhirElementName) { $fhirElementName = XMLUtils::getBaseFHIRElementNameFromRestriction($sxe); } if (null === $fhirElementName) { return; } if (0 === strpos($fhirElementName, 'xs')) { $fhirElementName = substr($fhirElementName, 3); } self::findParentElementXSDMapEntry($fhirElementName, $XSDMap, $classTemplate); }