<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fromElement(cls, elem):
 """ Read properties from an XML Element """

        self = cls()
        self.studyoid = elem.get("StudyOID")
        self.metadataversionoid = elem.get("MetaDataVersionOID")
        e_subjectdata = elem.findall(ODM_NS + "SubjectData")[0]
        self.subjectkey = e_subjectdata.get("SubjectKey")
        e_siteref = e_subjectdata.findall(ODM_NS + "SiteRef")[0]
        self.locationoid = e_siteref.get("LocationOID")

        e_links = e_subjectdata.findall(MEDI_NS + "Link")
        for e_link in e_links:
            self.links.append(e_link.get(XLINK_NS + "href"))

        decodes = {"yes": True, "no": False, "": None}
        for prop in RWSSubjectListItem.STATUS_PROPERTIES:
            val = e_subjectdata.get(MEDI_NS + prop, "").lower()
            setattr(self, prop.lower(), decodes.get(val, val))

        # By default we only get back active and non-deleted subjects
        self.active = decodes[
            e_subjectdata.get(MEDI_NS + "SubjectActive", "yes").lower()
        ]
        self.deleted = decodes[e_subjectdata.get(MEDI_NS + "Deleted", "no").lower()]

        return self