def loadCrfItem(self, formOid, itemOid, metadata): """Load CRF item details from ODM metadata """ item = None self.logger.info("CRF form OID: " + formOid) self.logger.info("CRF item OID: " + itemOid) # Check if file path is setup if metadata: documentTree = ET.ElementTree((ET.fromstring(str(metadata)))) # Locate ItemDefs data in XML file via XPath for itemElement in documentTree.iterfind('.//odm:ItemDef[@OID="' + itemOid + '"]', namespaces=nsmaps): # Check FormOID, normally I would do it in XPath but python does not support contaions wildcard if itemElement.attrib["{http://www.openclinica.org/ns/odm_ext_v130/v3.1}FormOIDs"].find(formOid) != -1: item = Item() item.oid = itemElement.attrib['OID'] item.name = itemElement.attrib['Name'] item.description = itemElement.attrib['Comment'] item.dataType = itemElement.attrib['DataType'] for itemDetails in itemElement: if (str(itemDetails.tag)).strip() == "{http://www.openclinica.org/ns/odm_ext_v130/v3.1}ItemDetails": for detailsElement in itemDetails: if (str(detailsElement.tag)).strip() == "{http://www.openclinica.org/ns/odm_ext_v130/v3.1}ItemPresentInForm": for presentForm in detailsElement: if (str(presentForm.tag)).strip() == "{http://www.openclinica.org/ns/odm_ext_v130/v3.1}LeftItemText": item.label = presentForm.text # Return resulting CRT item return item
def loadCrfItem(self, formOid, itemOid, metadata): """Load CRF item details from ODM metadata """ item = None self.logger.info("CRF form OID: " + formOid) self.logger.info("CRF item OID: " + itemOid) # Check if file path is setup if (metadata): documentTree = ET.ElementTree((ET.fromstring(str(metadata)))) # Locate ItemDefs data in XML file via XPath for itemElement in documentTree.iterfind('.//odm:ItemDef[@OID="' + itemOid + '"]', namespaces=nsmaps): # Check FormOID, normally I would do it in XPath but python does not support contaions wildcard if itemElement.attrib["{http://www.openclinica.org/ns/odm_ext_v130/v3.1}FormOIDs"].find(formOid) != -1: item = Item() item.oid = itemElement.attrib['OID'] item.name = itemElement.attrib['Name'] item.description = itemElement.attrib['Comment'] item.dataType = itemElement.attrib['DataType'] for itemDetails in itemElement: if (str(itemDetails.tag)).strip() == "{http://www.openclinica.org/ns/odm_ext_v130/v3.1}ItemDetails": for detailsElement in itemDetails: if (str(detailsElement.tag)).strip() == "{http://www.openclinica.org/ns/odm_ext_v130/v3.1}ItemPresentInForm": for presentForm in detailsElement: if (str(presentForm.tag)).strip() == "{http://www.openclinica.org/ns/odm_ext_v130/v3.1}LeftItemText": item.label = presentForm.text # Return resulting CRT item return item