Пример #1
0
    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