Пример #1
0
    def __init__(self,
                 parent,
                 name=None,
                 appname="the application",
                 filename='preferences.txt'):

        # Load the XRC file for our gui resources
        res = XmlResource(util.GetResourcePath('preferences.xrc'))
        self.dlgPreferences = res.LoadDialog(None, "PreferencesDialog")
        self.dlgPreferences.Init(name, appname)

        # Setup internal pubsub methods
        pub.subscribe(self.SetPreferenceTemplate,
                      'preferences.updated.template')
        pub.subscribe(self.SavePreferenceValues, 'preferences.updated.values')

        # Setup user pubsub methods
        pub.subscribe(self.GetPreferenceValue, 'preferences.requested.value')
        pub.subscribe(self.GetPreferenceValues, 'preferences.requested.values')
        pub.subscribe(self.SetPreferenceValue, 'preferences.updated.value')

        # Initialize variables
        self.preftemplate = []
        self.values = {}
        self.filename = os.path.join(guiutil.get_data_dir(), filename)
        self.LoadPreferenceValues()
Пример #2
0
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, 'patient.updated.raw_data')

        # Load the XRC file for our gui resources
        self.res = XmlResource(util.GetBasePluginsPath('anonymize.xrc'))
Пример #3
0
def pluginLoader(parent):
    """Function to load the plugin."""

    # Load the XRC file for our gui resources
    res = XmlResource(util.GetBasePluginsPath('treeview.xrc'))

    panelTreeView = res.LoadPanel(parent, 'pluginTreeView')
    panelTreeView.Init(res)
    
    return panelTreeView
Пример #4
0
def get_progress_dialog(parent, title="Loading..."):
    """Function to load the progress dialog."""

    # Load the XRC file for our gui resources
    res = XmlResource(util.GetResourcePath('guiutil.xrc'))

    dialogProgress = res.LoadDialog(parent, 'ProgressDialog')
    dialogProgress.Init(res, title)

    return dialogProgress
Пример #5
0
def pluginLoader(parent):
    """Function to load the plugin."""

    # Load the XRC file for our gui resources
    res = XmlResource(util.GetBasePluginsPath("dvh.xrc"))

    panelDVH = res.LoadPanel(parent, "pluginDVH")
    panelDVH.Init(res)

    return panelDVH
Пример #6
0
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, 'patient.updated.parsed_data')

        # Load the XRC file for our gui resources
        xrc = os.path.join(os.path.dirname(__file__), 'Analysis.xrc')
        self.res = XmlResource(xrc)
Пример #7
0
def PluginManager(parent, plugins, pluginsDisabled):
    """Prepare to show the plugin manager dialog."""

    # Load the XRC file for our gui resources
    res = XmlResource(util.GetResourcePath('plugin.xrc'))

    dlgPluginManager = res.LoadDialog(parent, "PluginManagerDialog")
    dlgPluginManager.Init(plugins, pluginsDisabled)

    # Show the dialog
    dlgPluginManager.ShowModal()
Пример #8
0
class plugin:
    """Analyzes DVH."""
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, 'patient.updated.parsed_data')

        # Load the XRC file for our gui resources
        xrc = os.path.join(os.path.dirname(__file__), 'Analysis.xrc')
        self.res = XmlResource(xrc)

    def OnUpdatePatient(self, msg):
        """Update and load the patient data."""

        self.data = msg.data

    def pluginMenu(self, evt):
        """Method called after the panel has been initialized."""

        panelAnalysis = self.res.LoadDialog(self.parent, "AnalysisPanel")
        panelAnalysis.SetTitle("TG-101 Stereotactic Plan Analysis")
        panelAnalysis.Init(self.data['structures'], self.data['dvhs'])
        panelAnalysis.ShowModal()
        return panelAnalysis

    def OnDestroy(self, evt):
        """Unbind to all events before the plugin is destroyed."""

        pub.unsubscribe(self.OnUpdatePatient)
Пример #9
0
class plugin:
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, 'patient.updated.raw_data')

        # Load the XRC file for our gui resources
        xrc = os.path.join(os.path.dirname(__file__), 'scaledose.xrc')
        self.res = XmlResource(xrc)

    def OnUpdatePatient(self, msg):
        """Update and load the patient data."""

        self.data = msg.data

    def pluginMenu(self, evt):
        """Scale DICOM RT dose data."""

        dlgScaleDose = self.res.LoadDialog(self.parent, "ScaleDoseDialog")
        dlgScaleDose.Init(self.data['rxdose'])

        if dlgScaleDose.ShowModal() == wx.ID_OK:
            oldRxDose = dlgScaleDose.oldRxDose
            newRxDose = dlgScaleDose.newRxDose

            # Initialize and start the scale dose thread
            self.t = threading.Thread(target=self.ScaleDoseDataThread,
                                      args=(self.data, oldRxDose, newRxDose,
                                            self.UpdateData))
            self.t.start()

        else:
            pass
        dlgScaleDose.Destroy()
        return

    def ScaleDoseDataThread(self, data, oldRxDose, newRxDose, finishedFunc):
        """Scale the DICOM RT dose data."""

        dosescale = float(newRxDose) / float(oldRxDose)
        # Scale the Rx dose
        data['rxdose'] = int(data['rxdose'] * dosescale)
        rtdose = data['rtdose']
        # Scale the Dose grid data
        rtdose.DoseGridScaling = rtdose.DoseGridScaling * dosescale
        # Scale the DVH data
        if "DVHs" in rtdose:
            for item in rtdose.DVHs:
                item.DVHDoseScaling = item.DVHDoseScaling * dosescale
        wx.CallAfter(finishedFunc, data)

    def UpdateData(
        self,
        data,
    ):
        """Publish the updated patient data."""

        pub.sendMessage('patient.updated.raw_data', data)
class plugin:
    """Calculates conformality of an isodose line to a structure."""
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, 'patient.updated.parsed_data')

        # Load the XRC file for our gui resources
        xrc = os.path.join(os.path.dirname(__file__), 'Conformality.xrc')
        self.res = XmlResource(xrc)

    def OnUpdatePatient(self, msg):
        """Update and load the patient data."""

        self.data = msg.data

    def pluginMenu(self, evt):
        """Method called after the panel has been initialized."""

        panelConformality = self.res.LoadDialog(self.parent,
                                                "ConformalityPanel")
        panelConformality.SetTitle("SRS Conformality")
        panelConformality.Init(self.data['structures'], self.data['dose'],
                               self.data['plan'], self.data['dvhs'])
        panelConformality.ShowModal()
        return panelConformality
Пример #11
0
def ImportDicom(parent):
    """Prepare to show the dialog that will Import DICOM and DICOM RT files."""

    # Load the XRC file for our gui resources
    res = XmlResource(util.GetResourcePath('dicomgui.xrc'))

    dlgDicomImporter = res.LoadDialog(parent, "DicomImporterDialog")
    dlgDicomImporter.Init(res)

    # Show the dialog and return the result
    if (dlgDicomImporter.ShowModal() == wx.ID_OK):
        value = dlgDicomImporter.GetPatient()
        #pub.sendMessage('patient.updated.raw_data', value)
    else:
        value = {}
    # Block until the thread is done before destroying the dialog
    if dlgDicomImporter:
        dlgDicomImporter.t.join()
        dlgDicomImporter.Destroy()

    return value
Пример #12
0
    def OnInit(self):
        # no-op in wxPython2.8 and later: wx.InitAllImageHandlers()
        wx.GetApp().SetAppName("dicompyler")

        # Load the XRC file for our gui resources
        self.res = XmlResource(util.GetResourcePath('main.xrc'))

        # Use the native listctrl on Mac OS X
        if guiutil.IsMac():
            wx.SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", 0)

        dicompylerFrame = MainFrame(None, -1, "dicompyler", self.res)
        self.SetTopWindow(dicompylerFrame)
        dicompylerFrame.Show()
        return 1
Пример #13
0
    def open(self, sum):
        """
        Start progress handler, set the number of steps, the operation will
        take in sum. Will be called once before update()
        is called several times
        """
        if self.progDlg is None:
            res = XmlResource.Get()
            self.progDlg = res.LoadDialog(self.parent, "ProgressDialog")
            self.progDlg.ctrls = XrcControls(self.progDlg)
            self.progDlg.SetTitle(self.title)

        self.currYieldStep = 1

        self.progDlg.ctrls.text.SetLabel(self.msg)
        self.progDlg.ctrls.gauge.SetRange(sum + self.addsteps)
        self.progDlg.ctrls.gauge.SetValue(0)
        self.progDlg.Show()
Пример #14
0
class plugin:
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, 'patient.updated.raw_data')

        # Load the XRC file for our gui resources
        self.res = XmlResource(util.GetBasePluginsPath('anonymize.xrc'))

    def OnUpdatePatient(self, msg):
        """Update and load the patient data."""

        self.data = msg.data

    def pluginMenu(self, evt):
        """Anonymize DICOM / DICOM RT data."""

        dlgAnonymize = self.res.LoadDialog(self.parent, "AnonymizeDialog")
        dlgAnonymize.Init()

        if dlgAnonymize.ShowModal() == wx.ID_OK:
            path = dlgAnonymize.path
            name = str(dlgAnonymize.name)
            patientid = str(dlgAnonymize.patientid)
            privatetags = dlgAnonymize.privatetags

            # If the path doesn't exist, create it
            if not os.path.exists(path):
                os.mkdir(path)

            # Initialize the progress dialog
            dlgProgress = guiutil.get_progress_dialog(
                wx.GetApp().GetTopWindow(), "Anonymizing DICOM data...")
            # Initialize and start the anonymization thread
            self.t = threading.Thread(target=self.AnonymizeDataThread,
                                      args=(self.data, path, name, patientid,
                                            privatetags,
                                            dlgProgress.OnUpdateProgress))
            self.t.start()
            # Show the progress dialog
            dlgProgress.ShowModal()
            dlgProgress.Destroy()

        else:
            pass
        dlgAnonymize.Destroy()
        return

    def AnonymizeDataThread(self, data, path, name, patientid, privatetags,
                            progressFunc):
        """Anonmyize and save each DICOM / DICOM RT file."""

        length = 0
        for key in ['rtss', 'rtplan', 'rtdose']:
            if data.has_key(key):
                length = length + 1
        if data.has_key('images'):
            length = length + len(data['images'])

        i = 1
        if data.has_key('rtss'):
            rtss = data['rtss']
            wx.CallAfter(progressFunc, i, length,
                         'Anonymizing file ' + str(i) + ' of ' + str(length))
            self.updateCommonElements(rtss, name, patientid, privatetags)
            self.updateElement(rtss, 'SeriesDescription', 'RT Structure Set')
            self.updateElement(rtss, 'StructureSetDate', '19010101')
            self.updateElement(rtss, 'StructureSetTime', '000000')
            if rtss.has_key('RTROIObservations'):
                for item in rtss.RTROIObservations:
                    self.updateElement(item, 'ROIInterpreter', 'anonymous')
            rtss.save_as(os.path.join(path, 'rtss.dcm'))
            i = i + 1
        if data.has_key('rtplan'):
            rtplan = data['rtplan']
            wx.CallAfter(progressFunc, i, length,
                         'Anonymizing file ' + str(i) + ' of ' + str(length))
            self.updateCommonElements(rtplan, name, patientid, privatetags)
            self.updateElement(rtplan, 'SeriesDescription', 'RT Plan')
            self.updateElement(rtplan, 'RTPlanName', 'plan')
            self.updateElement(rtplan, 'RTPlanDate', '19010101')
            self.updateElement(rtplan, 'RTPlanTime', '000000')
            if rtplan.has_key('ToleranceTables'):
                for item in rtplan.ToleranceTables:
                    self.updateElement(item, 'ToleranceTableLabel',
                                       'tolerance')
            if rtplan.has_key('Beams'):
                for item in rtplan.Beams:
                    self.updateElement(item, 'Manufacturer', 'manufacturer')
                    self.updateElement(item, 'InstitutionName', 'institution')
                    self.updateElement(item, 'InstitutionAddress', 'address')
                    self.updateElement(item, 'InstitutionalDepartmentName',
                                       'department')
                    self.updateElement(item, 'ManufacturersModelName', 'model')
                    self.updateElement(item, 'TreatmentMachineName',
                                       'txmachine')
            if rtplan.has_key('TreatmentMachines'):
                for item in rtplan.TreatmentMachines:
                    self.updateElement(item, 'Manufacturer', 'manufacturer')
                    self.updateElement(item, 'InstitutionName', 'vendor')
                    self.updateElement(item, 'InstitutionAddress', 'address')
                    self.updateElement(item, 'InstitutionalDepartmentName',
                                       'department')
                    self.updateElement(item, 'ManufacturersModelName', 'model')
                    self.updateElement(item, 'DeviceSerialNumber', '0')
                    self.updateElement(item, 'TreatmentMachineName',
                                       'txmachine')
            if rtplan.has_key('Sources'):
                for item in rtplan.Sources:
                    self.updateElement(item, 'SourceManufacturer',
                                       'manufacturer')
                    self.updateElement(item, 'SourceIsotopeName', 'isotope')
            rtplan.save_as(os.path.join(path, 'rtplan.dcm'))
            i = i + 1
        if data.has_key('rtdose'):
            rtdose = data['rtdose']
            wx.CallAfter(progressFunc, i, length,
                         'Anonymizing file ' + str(i) + ' of ' + str(length))
            self.updateCommonElements(rtdose, name, patientid, privatetags)
            self.updateElement(rtdose, 'SeriesDescription', 'RT Dose')
            rtdose.save_as(os.path.join(path, 'rtdose.dcm'))
            i = i + 1
        if data.has_key('images'):
            images = data['images']
            for n, image in enumerate(images):
                wx.CallAfter(
                    progressFunc, i, length,
                    'Anonymizing file ' + str(i) + ' of ' + str(length))
                self.updateCommonElements(image, name, patientid, privatetags)
                self.updateElement(image, 'SeriesDate', '19010101')
                self.updateElement(image, 'ContentDate', '19010101')
                self.updateElement(image, 'SeriesTime', '000000')
                self.updateElement(image, 'ContentTime', '000000')
                self.updateElement(image, 'InstitutionName', 'institution')
                self.updateElement(image, 'InstitutionAddress', 'address')
                self.updateElement(image, 'InstitutionalDepartmentName',
                                   'department')
                modality = image.SOPClassUID.name.partition(
                    ' Image Storage')[0]
                image.save_as(
                    os.path.join(path,
                                 modality.lower() + '.' + str(n) + '.dcm'))
                i = i + 1

        wx.CallAfter(progressFunc, length - 1, length, 'Done')

    def updateElement(self, data, element, value):
        """Updates the element only if it exists in the original DICOM data."""

        if element in data:
            data.update({element: value})

    def updateCommonElements(self, data, name, patientid, privatetags):
        """Updates the element only if it exists in the original DICOM data."""

        if len(name):
            self.updateElement(data, 'PatientsName', name)
        if len(patientid):
            self.updateElement(data, 'PatientID', patientid)
        if privatetags:
            data.remove_private_tags()
        self.updateElement(data, 'OtherPatientIDs', patientid)
        self.updateElement(data, 'OtherPatientNames', name)
        self.updateElement(data, 'InstanceCreationDate', '19010101')
        self.updateElement(data, 'InstanceCreationTime', '000000')
        self.updateElement(data, 'StudyDate', '19010101')
        self.updateElement(data, 'StudyTime', '000000')
        self.updateElement(data, 'AccessionNumber', '')
        self.updateElement(data, 'Manufacturer', 'manufacturer')
        self.updateElement(data, 'ReferringPhysiciansName', 'physician')
        self.updateElement(data, 'StationName', 'station')
        self.updateElement(data, 'NameofPhysiciansReadingStudy', 'physician')
        self.updateElement(data, 'OperatorsName', 'operator')
        self.updateElement(data, 'PhysiciansofRecord', 'physician')
        self.updateElement(data, 'ManufacturersModelName', 'model')
        self.updateElement(data, 'PatientsBirthDate', '')
        self.updateElement(data, 'PatientsSex', 'O')
        self.updateElement(data, 'PatientsAge', '000Y')
        self.updateElement(data, 'PatientsWeight', 0)
        self.updateElement(data, 'PatientsSize', 0)
        self.updateElement(data, 'PatientsAddress', 'address')
        self.updateElement(data, 'AdditionalPatientHistory', '')
        self.updateElement(data, 'EthnicGroup', 'ethnicity')
        self.updateElement(data, 'StudyID', '1')
        self.updateElement(data, 'DeviceSerialNumber', '0')
        self.updateElement(data, 'SoftwareVersions', '1.0')
        self.updateElement(data, 'ReviewDate', '19010101')
        self.updateElement(data, 'ReviewTime', '000000')
        self.updateElement(data, 'ReviewerName', 'anonymous')
Пример #15
0
class plugin:
    def __init__(self, parent):

        self.parent = parent

        # Set up pubsub
        pub.subscribe(self.OnUpdatePatient, "patient.updated.raw_data")

        # Load the XRC file for our gui resources
        self.res = XmlResource(util.GetBasePluginsPath("anonymize.xrc"))

    def OnUpdatePatient(self, msg):
        """Update and load the patient data."""

        self.data = msg

    def pluginMenu(self, evt):
        """Anonymize DICOM / DICOM RT data."""

        dlgAnonymize = self.res.LoadDialog(self.parent, "AnonymizeDialog")
        dlgAnonymize.Init()

        if dlgAnonymize.ShowModal() == wx.ID_OK:
            path = dlgAnonymize.path
            name = str(dlgAnonymize.name)
            patientid = str(dlgAnonymize.patientid)
            privatetags = dlgAnonymize.privatetags

            # If the path doesn't exist, create it
            if not os.path.exists(path):
                os.mkdir(path)

            # Initialize the progress dialog
            dlgProgress = guiutil.get_progress_dialog(
                wx.GetApp().GetTopWindow(), "Anonymizing DICOM data..."
            )
            # Initialize and start the anonymization thread
            self.t = threading.Thread(
                target=self.AnonymizeDataThread,
                args=(
                    self.data,
                    path,
                    name,
                    patientid,
                    privatetags,
                    dlgProgress.OnUpdateProgress,
                ),
            )
            self.t.start()
            # Show the progress dialog
            dlgProgress.ShowModal()
            dlgProgress.Destroy()

        else:
            pass
        dlgAnonymize.Destroy()
        return

    def AnonymizeDataThread(
        self, data, path, name, patientid, privatetags, progressFunc
    ):
        """Anonmyize and save each DICOM / DICOM RT file."""

        length = 0
        for key in ["rtss", "rtplan", "rtdose"]:
            if key in data:
                length = length + 1
        if "images" in data:
            length = length + len(data["images"])

        i = 1
        if "rtss" in data:
            rtss = data["rtss"]
            wx.CallAfter(
                progressFunc,
                i,
                length,
                "Anonymizing file " + str(i) + " of " + str(length),
            )
            self.updateCommonElements(rtss, name, patientid, privatetags)
            self.updateElement(rtss, "SeriesDescription", "RT Structure Set")
            self.updateElement(rtss, "StructureSetDate", "19010101")
            self.updateElement(rtss, "StructureSetTime", "000000")
            if "RTROIObservations" in rtss:
                for item in rtss.RTROIObservations:
                    self.updateElement(item, "ROIInterpreter", "anonymous")
            rtss.save_as(os.path.join(path, "rtss.dcm"))
            i = i + 1
        if "rtplan" in data:
            rtplan = data["rtplan"]
            wx.CallAfter(
                progressFunc,
                i,
                length,
                "Anonymizing file " + str(i) + " of " + str(length),
            )
            self.updateCommonElements(rtplan, name, patientid, privatetags)
            self.updateElement(rtplan, "SeriesDescription", "RT Plan")
            self.updateElement(rtplan, "RTPlanName", "plan")
            self.updateElement(rtplan, "RTPlanDate", "19010101")
            self.updateElement(rtplan, "RTPlanTime", "000000")
            if "ToleranceTables" in rtplan:
                for item in rtplan.ToleranceTables:
                    self.updateElement(item, "ToleranceTableLabel", "tolerance")
            if "Beams" in rtplan:
                for item in rtplan.Beams:
                    self.updateElement(item, "Manufacturer", "manufacturer")
                    self.updateElement(item, "InstitutionName", "institution")
                    self.updateElement(item, "InstitutionAddress", "address")
                    self.updateElement(
                        item, "InstitutionalDepartmentName", "department"
                    )
                    self.updateElement(item, "ManufacturersModelName", "model")
                    self.updateElement(item, "TreatmentMachineName", "txmachine")
            if "TreatmentMachines" in rtplan:
                for item in rtplan.TreatmentMachines:
                    self.updateElement(item, "Manufacturer", "manufacturer")
                    self.updateElement(item, "InstitutionName", "vendor")
                    self.updateElement(item, "InstitutionAddress", "address")
                    self.updateElement(
                        item, "InstitutionalDepartmentName", "department"
                    )
                    self.updateElement(item, "ManufacturersModelName", "model")
                    self.updateElement(item, "DeviceSerialNumber", "0")
                    self.updateElement(item, "TreatmentMachineName", "txmachine")
            if "Sources" in rtplan:
                for item in rtplan.Sources:
                    self.updateElement(item, "SourceManufacturer", "manufacturer")
                    self.updateElement(item, "SourceIsotopeName", "isotope")
            rtplan.save_as(os.path.join(path, "rtplan.dcm"))
            i = i + 1
        if "rtdose" in data:
            rtdose = data["rtdose"]
            wx.CallAfter(
                progressFunc,
                i,
                length,
                "Anonymizing file " + str(i) + " of " + str(length),
            )
            self.updateCommonElements(rtdose, name, patientid, privatetags)
            self.updateElement(rtdose, "SeriesDescription", "RT Dose")
            rtdose.save_as(os.path.join(path, "rtdose.dcm"))
            i = i + 1
        if "images" in data:
            images = data["images"]
            for n, image in enumerate(images):
                wx.CallAfter(
                    progressFunc,
                    i,
                    length,
                    "Anonymizing file " + str(i) + " of " + str(length),
                )
                self.updateCommonElements(image, name, patientid, privatetags)
                self.updateElement(image, "SeriesDate", "19010101")
                self.updateElement(image, "ContentDate", "19010101")
                self.updateElement(image, "SeriesTime", "000000")
                self.updateElement(image, "ContentTime", "000000")
                self.updateElement(image, "InstitutionName", "institution")
                self.updateElement(image, "InstitutionAddress", "address")
                self.updateElement(image, "InstitutionalDepartmentName", "department")
                modality = image.SOPClassUID.name.partition(" Image Storage")[0]
                image.save_as(
                    os.path.join(path, modality.lower() + "." + str(n) + ".dcm")
                )
                i = i + 1

        wx.CallAfter(progressFunc, length - 1, length, "Done")

    def updateElement(self, data, element, value):
        """Updates the element only if it exists in the original DICOM data."""

        if element in data:
            data.update({element: value})

    def updateCommonElements(self, data, name, patientid, privatetags):
        """Updates the element only if it exists in the original DICOM data."""

        if len(name):
            self.updateElement(data, "PatientsName", name)
        if len(patientid):
            self.updateElement(data, "PatientID", patientid)
        if privatetags:
            data.remove_private_tags()
        self.updateElement(data, "OtherPatientIDs", patientid)
        self.updateElement(data, "OtherPatientNames", name)
        self.updateElement(data, "InstanceCreationDate", "19010101")
        self.updateElement(data, "InstanceCreationTime", "000000")
        self.updateElement(data, "StudyDate", "19010101")
        self.updateElement(data, "StudyTime", "000000")
        self.updateElement(data, "AccessionNumber", "")
        self.updateElement(data, "Manufacturer", "manufacturer")
        self.updateElement(data, "ReferringPhysiciansName", "physician")
        self.updateElement(data, "StationName", "station")
        self.updateElement(data, "NameofPhysiciansReadingStudy", "physician")
        self.updateElement(data, "OperatorsName", "operator")
        self.updateElement(data, "PhysiciansofRecord", "physician")
        self.updateElement(data, "ManufacturersModelName", "model")
        self.updateElement(data, "PatientsBirthDate", "")
        self.updateElement(data, "PatientsSex", "O")
        self.updateElement(data, "PatientsAge", "000Y")
        self.updateElement(data, "PatientsWeight", 0)
        self.updateElement(data, "PatientsSize", 0)
        self.updateElement(data, "PatientsAddress", "address")
        self.updateElement(data, "AdditionalPatientHistory", "")
        self.updateElement(data, "EthnicGroup", "ethnicity")
        self.updateElement(data, "StudyID", "1")
        self.updateElement(data, "DeviceSerialNumber", "0")
        self.updateElement(data, "SoftwareVersions", "1.0")
        self.updateElement(data, "ReviewDate", "19010101")
        self.updateElement(data, "ReviewTime", "000000")
        self.updateElement(data, "ReviewerName", "anonymous")
Пример #16
0
def get_resource():
    filename = os.path.join(os.getcwd(), os.path.dirname(__file__),
                            'hachoir_wx.xrc')
    return XmlResource(filename)