Esempio n. 1
0
 def add_ITD(self):
     # ItemDef 1
     ttd1 = ODM.TranslatedText(_content="Date of measurements", lang="en")
     ttq1 = ODM.TranslatedText(_content="Date", lang="en")
     desc1 = ODM.Description()
     desc1.TranslatedText = [ttd1]
     q1 = ODM.Question()
     q1.TranslatedText = [ttq1]
     a1 = ODM.Alias(Context="CDASH", Name="VSDAT")
     itd1 = ODM.ItemDef(OID="ODM.IT.VS.VSDAT",
                        Name="Date",
                        DataType="partialDate")
     itd1.Description = desc1
     itd1.Question = q1
     itd1.Alias = [a1]
     # ItemDef 2
     ttd2 = ODM.TranslatedText(
         _content=
         "Result of the vital signs measurement as originally received or collected.",
         lang="en")
     ttq2 = ODM.TranslatedText(_content="Diastolic", lang="en")
     desc2 = ODM.Description()
     desc2.TranslatedText = [ttd2]
     q2 = ODM.Question()
     q2.TranslatedText = [ttq2]
     a2a = ODM.Alias(Context="CDASH", Name="BP.DIABP.VSORRES")
     a2b = ODM.Alias(Context="CDASH/SDTM", Name="VSORRES+VSORRESU")
     itd2 = ODM.ItemDef(OID="ODM.IT.VS.BP.VSORRESU",
                        Name="BP Units",
                        DataType="text")
     itd2.Description = desc2
     itd2.Question = q2
     itd2.Alias = [a2a, a2b]
     return [itd1, itd2]
Esempio n. 2
0
    def setUp(self) -> None:
        current_datetime = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat()
        root = ODM.ODM(FileOID="ODM.DEMO.001", Granularity="Metadata", AsOfDateTime=current_datetime,
                       CreationDateTime=current_datetime, ODMVersion="1.3.2", FileType="Snapshot",
                       Originator="swhume", SourceSystem="odmlib", SourceSystemVersion="0.1")

        # create Study and add to ODM
        root.Study.append(ODM.Study(OID="ODM.GET.STARTED"))

        # create the global variables
        root.Study[0].GlobalVariables = ODM.GlobalVariables()
        root.Study[0].GlobalVariables.StudyName = ODM.StudyName(_content="Get Started with ODM XML")
        root.Study[0].GlobalVariables.StudyDescription = ODM.StudyDescription(
            _content="Demo to get started with odmlib")
        root.Study[0].GlobalVariables.ProtocolName = ODM.ProtocolName(_content="ODM XML Get Started")

        # create the MetaDataVersion
        root.Study[0].MetaDataVersion.append(ODM.MetaDataVersion(OID="MDV.DEMO-ODM-01", Name="Get Started MDV",
                                                                 Description="Get Started Demo"))
        # create Protocol
        p = ODM.Protocol()
        p.Description = ODM.Description()
        p.Description.TranslatedText.append(ODM.TranslatedText(_content="Get Started Protocol", lang="en"))
        p.StudyEventRef.append(ODM.StudyEventRef(StudyEventOID="BASELINE", OrderNumber=1, Mandatory="Yes"))
        root.Study[0].MetaDataVersion[0].Protocol = p

        # create a StudyEventDef
        sed = ODM.StudyEventDef(OID="BASELINE", Name="Baseline Visit", Repeating="No", Type="Scheduled")
        sed.FormRef.append(ODM.FormRef(FormOID="ODM.F.DM", Mandatory="Yes", OrderNumber=1))
        root.Study[0].MetaDataVersion[0].StudyEventDef.append(sed)

        # create a FormDef
        fd = ODM.FormDef(OID="ODM.F.DM", Name="Demographics", Repeating="No")
        fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.DM", Mandatory="Yes", OrderNumber=2))
        root.Study[0].MetaDataVersion[0].FormDef.append(fd)

        # create an ItemGroupDef
        igd = ODM.ItemGroupDef(OID="ODM.IG.DM", Name="Demographics", Repeating="No")
        igd.ItemRef.append(ODM.ItemRef(ItemOID="ODM.IT.DM.BRTHYR", Mandatory="Yes"))
        root.Study[0].MetaDataVersion[0].ItemGroupDef.append(igd)

        # create an ItemDef
        itd = ODM.ItemDef(OID="ODM.IT.DM.BRTHYR", Name="Birth Year", DataType="integer")
        itd.Description = ODM.Description()
        itd.Description.TranslatedText.append(ODM.TranslatedText(_content="Year of the subject's birth", lang="en"))
        itd.Question = ODM.Question()
        itd.Question.TranslatedText.append(ODM.TranslatedText(_content="Birth Year", lang="en"))
        itd.Alias.append(ODM.Alias(Context="CDASH", Name="BRTHYR"))
        itd.Alias.append(ODM.Alias(Context="SDTM", Name="BRTHDTC"))
        root.Study[0].MetaDataVersion[0].ItemDef.append(itd)

        # save the new ODM document to an ODM XML file
        root.write_xml(ODM_XML_FILE)

        # save the same ODM document to a JSON file
        root.write_json(ODM_JSON_FILE)
Esempio n. 3
0
 def test_add_description(self):
     tt1 = ODM.TranslatedText(_content="this is the first test description", lang="en")
     tt2 = ODM.TranslatedText(_content="this is the second test description", lang="en")
     self.formdef.Description = ODM.Description()
     self.formdef.Description.TranslatedText = [tt1, tt2]
     self.assertEqual(len(self.formdef.Description.TranslatedText), 2)
     self.assertEqual(self.formdef.Description.TranslatedText[1]._content, 'this is the second test description')
Esempio n. 4
0
 def test_Protocol(self):
     p = ODM.Protocol()
     tt = ODM.TranslatedText(_content="Trace-XML Test CDASH File",
                             lang="en")
     p.Description = ODM.Description()
     p.Description.TranslatedText = [tt]
     ser1 = ODM.StudyEventRef(StudyEventOID="BASELINE",
                              OrderNumber="1",
                              Mandatory="Yes")
     ser2 = ODM.StudyEventRef(StudyEventOID="FOLLOW-UP",
                              OrderNumber="2",
                              Mandatory="Yes")
     p.StudyEventRef = [ser1, ser2]
     p.Alias = [
         ODM.Alias(Context="ClinicalTrials.gov", Name="trace-protocol")
     ]
     description_dict = p.Description.to_dict()
     print(description_dict)
     is_valid = self.validator.verify_conformance(description_dict,
                                                  "Description")
     self.assertTrue(is_valid)
     protocol_dict = p.to_dict()
     print(protocol_dict)
     is_valid = self.validator.verify_conformance(protocol_dict, "Protocol")
     self.assertTrue(is_valid)
Esempio n. 5
0
 def test_ItemGroupDef(self):
     attrs = {
         "OID": "IG.VS",
         "Name": "VS",
         "Repeating": "Yes",
         "Domain": "VS",
         "Name": "VS",
         "SASDatasetName": "VS",
         "IsReferenceData": "No",
         "Purpose": "Tabulation"
     }
     igd = ODM.ItemGroupDef(**attrs)
     tt = ODM.TranslatedText(_content="this is the first test description",
                             lang="en")
     igd.Description = ODM.Description()
     igd.Description.TranslatedText = [tt]
     ir1 = ODM.ItemRef(ItemOID="IT.STUDYID",
                       Mandatory="Yes",
                       OrderNumber="1")
     ir2 = ODM.ItemRef(ItemOID="IT.VS.VSTEST",
                       Mandatory="No",
                       OrderNumber="2")
     igd.ItemRef = [ir1, ir2]
     igd_dict = igd.to_dict()
     print(igd_dict)
     is_valid = self.validator.verify_conformance(igd_dict, "ItemGroupDef")
     self.assertTrue(is_valid)
Esempio n. 6
0
 def test_FormDef(self):
     formdef = ODM.FormDef(OID="ODM.F.VS",
                           Name="Vital Signs Form",
                           Repeating="Yes")
     tt1 = ODM.TranslatedText(_content="this is the first test description",
                              lang="en")
     formdef.Description = ODM.Description()
     formdef.Description.TranslatedText = [tt1]
     igr = ODM.ItemGroupRef(ItemGroupOID="ODM.IG.COMMON",
                            Mandatory="Yes",
                            OrderNumber="1")
     formdef.ItemGroupRef.append(igr)
     igr = ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS_GENERAL",
                            Mandatory="Yes",
                            OrderNumber="2")
     formdef.ItemGroupRef.append(igr)
     igr = ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS",
                            Mandatory="Yes",
                            OrderNumber="3")
     formdef.ItemGroupRef.append(igr)
     formdef.Alias.append(ODM.Alias(Context="SDTMIG", Name="VS"))
     fd_dict = formdef.to_dict()
     print(fd_dict)
     is_valid = self.validator.verify_conformance(fd_dict, "FormDef")
     self.assertTrue(is_valid)
Esempio n. 7
0
 def test_add_description(self):
     tt1 = ODM.TranslatedText(_content="Age at Screening Date (Screening Date - Birth date)", lang="en")
     tt2 = ODM.TranslatedText(_content="For the complete algorithm see the referenced external document.", lang="fr")
     self.methoddef.Description = ODM.Description()
     self.methoddef.Description.TranslatedText = [tt1, tt2]
     self.assertEqual(len(self.methoddef.Description.TranslatedText), 2)
     self.assertEqual(self.methoddef.Description.TranslatedText[1]._content,
                      'For the complete algorithm see the referenced external document.')
Esempio n. 8
0
 def test_add_description(self):
     tt1 = ODM.TranslatedText(
         _content="Skip the BRTHMO field when BRTHYR length NE 4",
         lang="en")
     self.cond_def.Description = ODM.Description()
     self.cond_def.Description.TranslatedText = [tt1]
     self.assertEqual(len(self.cond_def.Description.TranslatedText), 1)
     self.assertEqual(self.cond_def.Description.TranslatedText[0]._content,
                      'Skip the BRTHMO field when BRTHYR length NE 4')
Esempio n. 9
0
 def add_CD(self):
     tt1 = ODM.TranslatedText(
         _content="Skip the BRTHMO field when BRTHYR length NE 4",
         lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1]
     cd = ODM.ConditionDef(OID="ODM.CD.BRTHMO",
                           Name="Skip BRTHMO when no BRTHYR")
     cd.Description = desc
     return [cd]
Esempio n. 10
0
 def test_to_xml_description(self):
     tt1 = ODM.TranslatedText(_content="this is the first test description",
                              lang="en")
     tt2 = ODM.TranslatedText(
         _content="this is the second test description", lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1, tt2]
     desc_xml = desc.to_xml()
     tts = desc_xml.findall("TranslatedText")
     self.assertEqual(tts[0].text, "this is the first test description")
Esempio n. 11
0
 def test_append_item_group_ref(self):
     fd = ODM.FormDef(OID="ODM.F.VS", Name="Vital Signs Form", Repeating="Yes")
     fd.Description = ODM.Description()
     fd.Description.TranslatedText.append(ODM.TranslatedText(_content="this is the first test description", lang="en"))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.COMMON", Mandatory="Yes", OrderNumber=1))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS_GENERAL", Mandatory="Yes", OrderNumber=2))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS", Mandatory="Yes", OrderNumber=3))
     self.assertEqual(fd.ItemGroupRef[0].ItemGroupOID, "ODM.IG.COMMON")
     self.assertEqual(fd.ItemGroupRef[2].OrderNumber, 3)
     self.assertEqual(fd.Description.TranslatedText[0]._content, "this is the first test description")
Esempio n. 12
0
 def test_to_dict(self):
     attrs = self.set_attributes()
     method = ODM.MethodDef(**attrs)
     desc = ODM.Description()
     tt1 = ODM.TranslatedText(_content="Age at Screening Date (Screening Date - Birth date)", lang="en")
     desc.TranslatedText = [tt1]
     method.Description = desc
     fex = ODM.FormalExpression(Context="Python 3.7", _content="print('hello world')")
     method.FormalExpression = [fex]
     method_dict = method.to_dict()
     self.assertEqual(method_dict["OID"], "ODM.MT.AGE")
     self.assertDictEqual(method_dict, self.expected_dict())
Esempio n. 13
0
 def add_MD(self):
     tt1 = ODM.TranslatedText(
         _content=
         "Concatenation of BRTHYR, BRTHMO, and BRTHDY in ISO 8601 format",
         lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1]
     md = ODM.MethodDef(OID="ODM.MT.DOB",
                        Name="Create BRTHDTC from date ELEMENTS",
                        Type="Computation")
     md.Description = desc
     return [md]
Esempio n. 14
0
 def test_to_dict(self):
     attrs = self.set_formdef_attributes()
     fd = ODM.FormDef(**attrs)
     fd.Description = ODM.Description()
     fd.Description.TranslatedText.append(ODM.TranslatedText(_content="this is the first test description", lang="en"))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.COMMON", Mandatory="Yes", OrderNumber=1))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS_GENERAL", Mandatory="Yes", OrderNumber=2))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS", Mandatory="Yes", OrderNumber=3))
     fd.Alias.append(ODM.Alias(Context="SDTMIG", Name="VS"))
     fd_dict = fd.to_dict()
     self.assertEqual(fd_dict["OID"], "ODM.F.VS")
     self.assertDictEqual(fd_dict, self.expected_dict())
Esempio n. 15
0
 def test_to_dict_description(self):
     tt1 = ODM.TranslatedText(_content="this is the first test description",
                              lang="en")
     tt2 = ODM.TranslatedText(
         _content="this is the second test description", lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1, tt2]
     desc_dict = desc.to_dict()
     print(desc_dict)
     self.assertDictEqual(desc_dict["TranslatedText"][1], {
         '_content': 'this is the second test description',
         'lang': 'en'
     })
Esempio n. 16
0
 def test_to_xml(self):
     attrs = self.set_formdef_attributes()
     fd = ODM.FormDef(**attrs)
     fd.Description = ODM.Description()
     fd.Description.TranslatedText.append(ODM.TranslatedText(_content="this is the first test description", lang="en"))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.COMMON", Mandatory="Yes", OrderNumber=1))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS_GENERAL", Mandatory="Yes", OrderNumber=2))
     fd.ItemGroupRef.append(ODM.ItemGroupRef(ItemGroupOID="ODM.IG.VS", Mandatory="Yes", OrderNumber=3))
     fd.Alias.append(ODM.Alias(Context="SDTMIG", Name="VS"))
     fd_xml = fd.to_xml()
     self.assertEqual(fd_xml.attrib["OID"], "ODM.F.VS")
     igr = fd_xml.findall("ItemGroupRef")
     self.assertEqual(len(igr), 3)
     self.assertEqual(igr[0].attrib, {"ItemGroupOID": "ODM.IG.COMMON", "Mandatory": "Yes", "OrderNumber": "1"})
Esempio n. 17
0
 def test_itemgroupdef_iterator(self):
     """ test the ability to reference a specific or slice of ItemRefs """
     attrs = self.set_itemgroupdef_attributes()
     igd = ODM.ItemGroupDef(**attrs)
     tt = ODM.TranslatedText(_content="Vital Signs", lang="en")
     igd.Description = ODM.Description()
     igd.Description.TranslatedText = [tt]
     item_refs = self.set_itemrefs()
     igd.ItemRef = item_refs
     parser = ODM_PARSER.ODMParser(self.odm_test_file)
     parser.parse()
     parser.MetaDataVersion()
     irs = [ir.ItemOID for ir in igd]
     self.assertEqual(len(irs), 13)
     self.assertEqual(len(igd), 13)
Esempio n. 18
0
 def test_to_dict(self):
     attrs = self.set_attributes()
     cd = ODM.ConditionDef(**attrs)
     cd.Description = ODM.Description()
     cd.Description.TranslatedText = [
         ODM.TranslatedText(
             _content="Skip the BRTHMO field when BRTHYR length NE 4",
             lang="en")
     ]
     cd.FormalExpression = [
         ODM.FormalExpression(Context="Python 3.7", _content="BRTHYR != 4")
     ]
     cd_dict = cd.to_dict()
     print(cd_dict)
     self.assertEqual(cd_dict["OID"], "ODM.CD.BRTHMO")
     self.assertDictEqual(cd_dict, self.expected_dict())
Esempio n. 19
0
 def test_ConditionDef(self):
     attrs = {"OID": "ODM.CD.BRTHMO", "Name": "Skip BRTHMO when no BRTHYR"}
     cd = ODM.ConditionDef(**attrs)
     cd.Description = ODM.Description()
     cd.Description.TranslatedText = [
         ODM.TranslatedText(
             _content="Skip the BRTHMO field when BRTHYR length NE 4",
             lang="en")
     ]
     cd.FormalExpression = [
         ODM.FormalExpression(Context="Python 3.7", _content="BRTHYR != 4")
     ]
     cd_dict = cd.to_dict()
     print(cd_dict)
     is_valid = self.validator.verify_conformance(cd_dict, "ConditionDef")
     self.assertTrue(is_valid)
Esempio n. 20
0
 def test_itemgroupdef_slice(self):
     """ test the ability to reference a specific or slice of ItemRefs """
     attrs = self.set_itemgroupdef_attributes()
     igd = ODM.ItemGroupDef(**attrs)
     tt = ODM.TranslatedText(_content="Vital Signs", lang="en")
     igd.Description = ODM.Description()
     igd.Description.TranslatedText = [tt]
     item_refs = self.set_itemrefs()
     igd.ItemRef = item_refs
     parser = ODM_PARSER.ODMParser(self.odm_test_file)
     parser.parse()
     parser.MetaDataVersion()
     self.assertEqual(len(igd), 13)
     self.assertEqual(igd.ItemRef[0].ItemOID, "IT.STUDYID")
     slice_itr = igd.ItemRef[1:5]
     self.assertEqual(slice_itr[1].ItemOID, "IT.VS.USUBJID")
Esempio n. 21
0
 def test_to_xml(self):
     attrs = self.set_attributes()
     cd = ODM.ConditionDef(**attrs)
     cd.Description = ODM.Description()
     cd.Description.TranslatedText = [
         ODM.TranslatedText(
             _content="Skip the BRTHMO field when BRTHYR length NE 4",
             lang="en")
     ]
     cd.FormalExpression = [
         ODM.FormalExpression(Context="Python 3.7", _content="BRTHYR != 4")
     ]
     cd_xml = cd.to_xml()
     self.assertEqual(cd_xml.attrib["OID"], "ODM.CD.BRTHMO")
     fex_xml = cd_xml.find("FormalExpression")
     self.assertEqual(fex_xml.attrib["Context"], "Python 3.7")
Esempio n. 22
0
 def test_to_json(self):
     attrs = self.set_itemgroupdef_attributes()
     igd = ODM.ItemGroupDef(**attrs)
     tt = ODM.TranslatedText(_content="this is the first test description",
                             lang="en")
     igd.Description = ODM.Description()
     igd.Description.TranslatedText = [tt]
     ir1 = ODM.ItemRef(ItemOID="IT.STUDYID", Mandatory="Yes", OrderNumber=1)
     ir2 = ODM.ItemRef(ItemOID="IT.VS.VSTEST",
                       Mandatory="No",
                       OrderNumber=2)
     igd.ItemRef = [ir1, ir2]
     igd_json = igd.to_json()
     igd_dict = json.loads(igd_json)
     print(igd_dict)
     self.assertEqual(igd_dict["OID"], "IG.VS")
     self.assertEqual(igd_dict["ItemRef"][1]["ItemOID"], "IT.VS.VSTEST")
Esempio n. 23
0
 def test_to_xml(self):
     attrs = self.set_itemgroupdef_attributes()
     igd = ODM.ItemGroupDef(**attrs)
     tt = ODM.TranslatedText(_content="this is the first test description",
                             lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt]
     igd.Description = desc
     ir1 = ODM.ItemRef(ItemOID="IT.STUDYID", Mandatory="Yes", OrderNumber=1)
     ir2 = ODM.ItemRef(ItemOID="IT.VS.VSTEST",
                       Mandatory="No",
                       OrderNumber=2)
     igd.ItemRef = [ir1, ir2]
     igd_xml = igd.to_xml()
     self.assertEqual(igd_xml.attrib["OID"], "IG.VS")
     self.assertListEqual(["Description", "ItemRef", "ItemRef"],
                          [e.tag for e in igd_xml.getchildren()])
Esempio n. 24
0
 def add_protocol(self):
     p = ODM.Protocol()
     tt = ODM.TranslatedText(_content="Trace-XML Test CDASH File",
                             lang="en")
     p.Description = ODM.Description()
     p.Description.TranslatedText = [tt]
     ser1 = ODM.StudyEventRef(StudyEventOID="BASELINE",
                              OrderNumber=1,
                              Mandatory="Yes")
     ser2 = ODM.StudyEventRef(StudyEventOID="FOLLOW-UP",
                              OrderNumber=2,
                              Mandatory="Yes")
     p.StudyEventRef = [ser1, ser2]
     p.Alias = [
         ODM.Alias(Context="ClinicalTrials.gov", Name="trace-protocol")
     ]
     return p
Esempio n. 25
0
 def test_to_dict(self):
     attrs = self.set_attributes()
     sed = ODM.StudyEventDef(**attrs)
     tt1 = ODM.TranslatedText(_content="this is the first test description",
                              lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1]
     sed.Description = desc
     fr1 = ODM.FormRef(FormOID="ODM.F.VS", Mandatory="Yes", OrderNumber=1)
     fr2 = ODM.FormRef(FormOID="ODM.F.DM", Mandatory="Yes", OrderNumber=2)
     fr3 = ODM.FormRef(FormOID="ODM.F.MH", Mandatory="Yes", OrderNumber=3)
     sed.FormRef = [fr1, fr2, fr3]
     a1 = ODM.Alias(Context="SDTMIG", Name="VS")
     sed.Alias = [a1]
     sed_dict = sed.to_dict()
     self.assertEqual(sed_dict["OID"], "ODM.SE.BASELINE")
     self.assertDictEqual(sed_dict, self.expected_dict())
Esempio n. 26
0
 def test_MethodDef(self):
     attrs = {
         "OID": "ODM.MT.AGE",
         "Name": "Algorithm to derive AGE",
         "Type": "Computation"
     }
     method = ODM.MethodDef(**attrs)
     method.Description = ODM.Description()
     method.Description.TranslatedText.append(
         ODM.TranslatedText(
             _content="Age at Screening Date (Screening Date - Birth date)",
             lang="en"))
     method.FormalExpression.append(
         ODM.FormalExpression(Context="Python 3.7",
                              _content="print('hello world')"))
     is_valid = self.validator.verify_conformance(method.to_dict(),
                                                  "MethodDef")
     self.assertTrue(is_valid)
Esempio n. 27
0
 def test_studyeventdef_slice(self):
     """ test the ability to reference a specific or slice of FormRefs """
     attrs = self.set_attributes()
     sed = ODM.StudyEventDef(**attrs)
     tt1 = ODM.TranslatedText(_content="this is the first test description",
                              lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1]
     sed.Description = desc
     fr1 = ODM.FormRef(FormOID="ODM.F.VS", Mandatory="Yes", OrderNumber=1)
     fr2 = ODM.FormRef(FormOID="ODM.F.DM", Mandatory="Yes", OrderNumber=2)
     fr3 = ODM.FormRef(FormOID="ODM.F.MH", Mandatory="Yes", OrderNumber=3)
     sed.FormRef = [fr1, fr2, fr3]
     self.assertEqual(len(sed.FormRef), 3)
     first_fr = sed[0]
     self.assertEqual(first_fr.FormOID, "ODM.F.VS")
     slice_fr = sed[1:3]
     self.assertEqual(slice_fr[1].FormOID, "ODM.F.MH")
Esempio n. 28
0
 def test_itemgroupdef_round_trip(self):
     """ system test to create and serialize an ItemGroupDef object """
     attrs = self.set_itemgroupdef_attributes()
     igd = ODM.ItemGroupDef(**attrs)
     tt = ODM.TranslatedText(_content="Vital Signs", lang="en")
     igd.Description = ODM.Description()
     igd.Description.TranslatedText = [tt]
     item_refs = self.set_itemrefs()
     igd.ItemRef = item_refs
     parser = ODM_PARSER.ODMParser(self.odm_test_file)
     parser.parse()
     mdv = parser.MetaDataVersion()
     igd_list = parser.ItemGroupDef(parent=mdv[0])
     igd_dict = igd_list[0]
     self.assertEqual(igd_dict["OID"], "IG.VS")
     ir_list = parser.ItemRef(parent=igd_dict["elem"])
     # tests the __len__ in ItemGroupDef as well as the add_item_ref
     self.assertEqual(len(ir_list), len(igd))
Esempio n. 29
0
 def test_MethodDef_missing_Description(self):
     attrs = {
         "OID": "MDV.TRACE-XML-ODM-01",
         "Name": "TRACE-XML MDV",
         "Description": "Trace-XML Example"
     }
     self.mdv = ODM.MetaDataVersion(**attrs)
     tt1 = ODM.TranslatedText(
         _content="Age at Screening Date (Screening Date - Birth date)",
         lang="en")
     desc1 = ODM.Description()
     desc1.TranslatedText.append(tt1)
     # MethodDef creation that includes the Description object
     md1 = ODM.MethodDef(OID="ODM.MT.AGE",
                         Name="Algorithm to dervive AGE",
                         Type="Computation",
                         Description=desc1)
     self.mdv.MethodDef.append(md1)
     # MethodDef creation succeeds without Description object
     md2 = ODM.MethodDef(OID="ODM.MT.DOB",
                         Name="Create BRTHDTC from date ELEMENTS",
                         Type="Computation")
     self.mdv.MethodDef.append(md2)
     # test that both MethodDefs were added to MDV
     self.assertEqual(len(self.mdv.MethodDef), 2)
     # test that the content of Description exists for the first MethodDef
     self.assertEqual(
         self.mdv.MethodDef[0].Description.TranslatedText[0]._content,
         "Age at Screening Date (Screening Date - Birth date)")
     validator = METADATA.MetadataSchema()
     # this is how you check conformance that includes required elements, not just attributes
     is_valid = self.mdv.MethodDef[0].verify_conformance(validator)
     # Test shows that MethodDef conforms to schema
     self.assertTrue(is_valid)
     print(self.mdv.MethodDef[0].to_dict())
     print(self.mdv.MethodDef[1].to_dict())
     with self.assertRaises(ValueError):
         # test shows that MethodDef two fails the schema check because it is missing the required Description object
         self.mdv.MethodDef[1].verify_conformance(validator)
Esempio n. 30
0
 def test_to_xml(self):
     attrs = self.set_attributes()
     sed = ODM.StudyEventDef(**attrs)
     tt1 = ODM.TranslatedText(_content="this is the first test description",
                              lang="en")
     desc = ODM.Description()
     desc.TranslatedText = [tt1]
     sed.Description = desc
     fr1 = ODM.FormRef(FormOID="ODM.F.VS", Mandatory="Yes", OrderNumber=1)
     fr2 = ODM.FormRef(FormOID="ODM.F.DM", Mandatory="Yes", OrderNumber=2)
     fr3 = ODM.FormRef(FormOID="ODM.F.MH", Mandatory="Yes", OrderNumber=3)
     sed.FormRef = [fr1, fr2, fr3]
     a1 = ODM.Alias(Context="SDTMIG", Name="VS")
     sed.Alias = [a1]
     sed_xml = sed.to_xml()
     self.assertEqual(sed_xml.attrib["OID"], "ODM.SE.BASELINE")
     fr = sed_xml.findall("FormRef")
     self.assertEqual(len(fr), 3)
     self.assertEqual(fr[0].attrib, {
         "FormOID": "ODM.F.VS",
         "Mandatory": "Yes",
         "OrderNumber": "1"
     })