예제 #1
0
 def _enableUpgradeFlag(self):
     """Setup upgrade flag to application config
     """
     AppConfigurationService().add("Temp")
     AppConfigurationService().set("Temp", "isUpgrading", str(True))
     AppConfigurationService().set("Temp", "upgradeFinished", str(False))
     AppConfigurationService().saveConfiguration()
예제 #2
0
def startup():
    """Start the updater
    """
    logger = logging.getLogger(__name__)
    logging.config.fileConfig("logging.ini", disable_existing_loggers=False)

    logger.info("Updater folder contains: ")
    logger.info(os.listdir("./"))

    appConfig = None
    # Running from source or packed executable
    if (os.path.isfile("mainClient.py")
            or os.path.isfile("RadPlanBio-client.exe")):
        appConfig = AppConfigurationService("radplanbio-client.cfg")
    else:
        appConfig = AppConfigurationService("../radplanbio-client.cfg")

    section = "Temp"
    if appConfig.hasSection(section):
        isUpgrading = appConfig.get(section)["isupgrading"]
        upgradeFinished = appConfig.get(section)["upgradefinished"]

        app = QtGui.QApplication(sys.argv)

        # Startup
        if isUpgrading == "False":
            # Exit updater
            app.quit()
        else:
            # Start upgrade procedure
            svcUpgrade = UpgradeService()
            svcUpgrade.upgrade()

            # Start client (RadPlanBio-client.exe)
            if platform.system() == "Windows":
                if os.path.isfile("../RadPlanBio-client.exe"):
                    QtCore.QProcess.startDetached("../RadPlanBio-client.exe")
                elif os.path.isfile("RadPlanBio-client.exe"):
                    QtCore.QProcess.startDetached("RadPlanBio-client.exe")
                else:
                    QtCore.QProcess.startDetached("python mainClient.py")
            elif platform.system() == "Linux":
                if os.path.isfile("../RadPlanBio-client"):
                    QtCore.QProcess.startDetached("../RadPlanBio-client")
                else:
                    QtCore.QProcess.startDetached("python mainClient.py")
            else:
                QtCore.QProcess.startDetached("python mainClient.py")

            # Exit updater
            app.quit()
def configure():
    """Read configuration settings from config file
    """
    appConfig = AppConfigurationService(ConfigDetails().configFileName)
    
    section = "OpenClinica"
    if appConfig.hasSection(section):
        option = "host"
        if appConfig.hasOption(section, option):
            ConfigDetails().ocHost = appConfig.get(section)[option]
        option = "port"
        if appConfig.hasOption(section, option):
            ConfigDetails().ocPort = appConfig.get(section)[option]

    section = "OpenClinica-ws"
    if appConfig.hasSection(section):
        option = "host"
        if appConfig.hasOption(section, option):
            ConfigDetails().ocWsHost = appConfig.get(section)[option]
        option = "port"
        if appConfig.hasOption(section, option):
            ConfigDetails().ocWsPort = appConfig.get(section)[option]

    section = "Proxy"
    if appConfig.hasSection(section):
        option = "enabled"
        if appConfig.hasOption(section, option):
            ConfigDetails().proxyEnabled = appConfig.getboolean(section, option)
        option = "host"
        if appConfig.hasOption(section, option):
            ConfigDetails().proxyHost = appConfig.get(section)[option]
        option = "port"
        if appConfig.hasOption(section, option):
            ConfigDetails().proxyPort = appConfig.get(section)[option]
        option = "noproxy"
        if appConfig.hasOption(section, option):
            ConfigDetails().noProxy = appConfig.get(section)[option]

    section = "Proxy-auth"
    if appConfig.hasSection(section):
        option = "enabled"
        if appConfig.hasOption(section, option):
            ConfigDetails().proxyAuthEnabled = appConfig.getboolean(section, option)
        option = "login"
        if appConfig.hasOption(section, option):
            ConfigDetails().proxyAuthLogin = appConfig.get(section)[option]
        option = "password"
        if appConfig.hasOption(section, option):
            ConfigDetails().proxyAuthPassword = appConfig.get(section)[option]

    section = "GUI"
    if appConfig.hasSection(section):
        option = "main.width"
        if appConfig.hasOption(section, option):
            ConfigDetails().width = int(appConfig.get(section)[option])
        option = "main.height"
        if appConfig.hasOption(section, option):
            ConfigDetails().height = int(appConfig.get(section)[option])
예제 #4
0
    def __init__(self, parent=None):
        """Constructor of ExportModule View
        """
        QWidget.__init__(self, parent)
        self.parent = parent

        #-----------------------------------------------------------------------
        #----------------------- Logger ----------------------------------------
        self.logger = logging.getLogger(__name__)
        logging.config.fileConfig('logging.ini',
                                  disable_existing_loggers=False)
        #-----------------------------------------------------------------------
        #---------------------- App config --------------------------------------
        self.appConfig = AppConfigurationService()
        #-----------------------------------------------------------------------
        #--------------------- Create Module UI --------------------------------
        self.setupUi(self)
        #-----------------------------------------------------------------------
        #----------------------- Services --------------------------------------
        # There are two http services, one for communicating with my own
        # site server/database
        section = "RadPlanBioServer"
        hostname = self.appConfig.get(section)["host"]
        port = self.appConfig.get(section)["port"]
        self.svcHttp = HttpConnectionService(hostname, port, UserDetails())

        #TODO: SiteName according to user account
        self.mySite = self.svcHttp.getPartnerSiteByName("DKTK-DRESDEN")
        baseUrl = self.mySite.edc.soapbaseurl

        # Create connection artefact to OC
        self.ocConnectInfo = OCConnectInfo(baseUrl, OCUserDetails().username)
        self.ocConnectInfo.setPassword(OCUserDetails().password)
        self.ocWebServices = OCWebServices(self.ocConnectInfo)

        # Create REST mainzellieste
        userName = self.mySite.pidg.adminusername
        password = self.mySite.pidg.adminpassword
        baseUrl = self.mySite.pidg.generatorbaseurl
        apiKey = self.mySite.pidg.apikey

        connectInfo = MainzellisteConnectInfo(baseUrl, userName, password,
                                              apiKey)
        self.svcPseudonymisation = PseudonymisationService(connectInfo)
        #-----------------------------------------------------------------------
        #----------------------- On Create -------------------------------------
        self.reloadSites()
        #-----------------------------------------------------------------------
        #---------- Load modules buttons - events definitions ------------------
        self.btnNew.clicked.connect(self.btnNewClicked)
        self.btnReload.clicked.connect(self.btnReloadClicked)
        self.tvStudies.selectionModel().currentChanged.connect(
            self.tvStudyChanged)
예제 #5
0
 def _disableUpgradeFlag(self):
     """Remove upgrade flag from application config
     """
     AppConfigurationService().remove("Temp")
     AppConfigurationService().saveConfiguration()
예제 #6
0
 def _enableUpgradeFinishedFlag(self):
     """
     """
     AppConfigurationService().set("Temp", "isUpgrading", str(False))
     AppConfigurationService().set("Temp", "upgradeFinished", str(True))
     AppConfigurationService().saveConfiguration()
예제 #7
0
    def __init__(self, parent=None):
        """Constructor of ExportModule View
        """
        QWidget.__init__(self, parent)
        self.parent = parent

        #-----------------------------------------------------------------------
        #----------------------- Logger ----------------------------------------
        self.logger = logging.getLogger(__name__)
        logging.config.fileConfig('logging.ini',
                                  disable_existing_loggers=False)
        #-----------------------------------------------------------------------
        #---------------------- App config --------------------------------------
        self.appConfig = AppConfigurationService()
        #-----------------------------------------------------------------------
        #--------------------- Create Module UI --------------------------------
        self.setupUi(self)
        #-----------------------------------------------------------------------
        #---------- Load modules buttons - events definitions ------------------
        self.btnReload.clicked.connect(self.btnReloadClicked)

        self.btnMapExportField.clicked.connect(self.btnMapExportFieldClicked)

        self.btnLocateDataFilename.clicked.connect(
            self.btnLocateDataFilenameClicked)
        self.btnLocateMetaDataFilename.clicked.connect(
            self.btnLocateMetaDataFilenameClicked)
        self.btnValidateMapping.clicked.connect(
            self.btnValidateDataTransformationClicked)
        self.btnLoadMapping.clicked.connect(self.btnLoadMappingClicked)

        self.cmbStudyEvent.currentIndexChanged['QString'].connect(
            self.cmbStudyEventChanged)
        self.cmbEventForm.currentIndexChanged['QString'].connect(
            self.cmbEventFormChanged)
        #-----------------------------------------------------------------------
        # Domain model
        self.__study = None
        self.__studyEvents = []
        self.__selectedStudyEvent = None
        self.__studyEventCrfs = []
        self.__selectedEventCrf = None

        #-----------------------------------------------------------------------
        #----------------------- Services --------------------------------------
        # There are two http services, one for communicating with my own
        # site server/database
        section = "MySiteServer"
        hostname = self.appConfig.get(section)["host"]
        port = self.appConfig.get(section)["port"]
        self.svcHttp = HttpConnectionService(hostname, port, UserDetails())

        self.reload()

        #-----------------------------------------------------------------------
        # TODO: make it a Stragety desing pattern later
        self.fileDataService = CsvFileDataService()
        self.fileMetaDataService = OdmFileDataService()
        self.exportMapping = []

        # Just for testing to have guick access to files
        self.dataFilename = "/mnt/edv/skripcakt/ulice/branches/radplanbio/data/radiochemotherapy.csv"
        self.metaDataFilename = "/mnt/edv/skripcakt/ulice/branches/radplanbio/data/HNSCCStudyMetadata.xml"

        #-----------------------------------------------------------------------
        # Create REST mainzellieste
        userName = "******"
        password = "******"
        baseUrl = "http://g89rtpsrv.med.tu-dresden.de:8080/mainzelliste-1.1-SNAPSHOT/"
        apiKey = "mdatdd"

        connectInfo = MainzellisteConnectInfo(baseUrl, userName, password,
                                              apiKey)
        self.svcPseudonymisation = PseudonymisationService(connectInfo)
예제 #8
0
def configure():
    """Read configuration settings from config file
    """
    appConfig = AppConfigurationService(ConfigDetails().configFileName)

    section = "RadPlanBioServer"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "host"):
            ConfigDetails().rpbHost = appConfig.get(section)["host"]
        if appConfig.hasOption(section, "port"):
            ConfigDetails().rpbHostPort = appConfig.get(section)["port"]
        if appConfig.hasOption(section, "application"):
            ConfigDetails().rpbApplication = appConfig.get(
                section)["application"]

    section = "Proxy"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "enabled"):
            ConfigDetails().proxyEnabled = appConfig.getboolean(
                section, "enabled")
        if appConfig.hasOption(section, "host"):
            ConfigDetails().proxyHost = appConfig.get(section)["host"]
        if appConfig.hasOption(section, "port"):
            ConfigDetails().proxyPort = appConfig.get(section)["port"]
        if appConfig.hasOption(section, "noproxy"):
            ConfigDetails().noProxy = appConfig.get(section)["noproxy"]

    section = "Proxy-auth"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "enabled"):
            ConfigDetails().proxyAuthEnabled = appConfig.getboolean(
                section, "enabled")
        if appConfig.hasOption(section, "login"):
            ConfigDetails().proxyAuthLogin = appConfig.get(section)["login"]
        if appConfig.hasOption(section, "password"):
            ConfigDetails().proxyAuthPassword = appConfig.get(
                section)["password"]

    section = "GUI"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "main.width"):
            ConfigDetails().width = int(appConfig.get(section)["main.width"])
        if appConfig.hasOption(section, "main.height"):
            ConfigDetails().height = int(appConfig.get(section)["main.height"])

    section = "DICOM"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "replacepatientnamewith"):
            ConfigDetails().replacePatientNameWith = appConfig.get(
                section)["replacepatientnamewith"]
        if appConfig.hasOption(section, "constpatientname"):
            ConfigDetails().constPatientName = appConfig.get(
                section)["constpatientname"]
        if appConfig.hasOption(section, "allowmultiplepatientids"):
            ConfigDetails().allowMultiplePatientIDs = appConfig.getboolean(
                section, "allowmultiplepatientids")
        if appConfig.hasOption(section, "retainpatientcharacteristicsoption"):
            ConfigDetails(
            ).retainPatientCharacteristicsOption = appConfig.getboolean(
                section, "retainpatientcharacteristicsoption")
        if appConfig.hasOption(section, "retainstudydate"):
            ConfigDetails().retainStudyDate = appConfig.getboolean(
                section, "retainstudydate")
        if appConfig.hasOption(section, "retainstudytime"):
            ConfigDetails().retainStudyTime = appConfig.getboolean(
                section, "retainstudytime")
        if appConfig.hasOption(section, "retainseriesdate"):
            ConfigDetails().retainSeriesDate = appConfig.getboolean(
                section, "retainseriesdate")
        if appConfig.hasOption(section, "retainseriestime"):
            ConfigDetails().retainSeriesTime = appConfig.getboolean(
                section, "retainseriestime")
        if appConfig.hasOption(section, "retainstudyseriesdescriptions"):
            ConfigDetails(
            ).retainStudySeriesDescriptions = appConfig.getboolean(
                section, "retainstudyseriesdescriptions")
        if appConfig.hasOption(section, "autortstructmatch"):
            ConfigDetails().autoRTStructMatch = appConfig.getboolean(
                section, "autortstructmatch")
        if appConfig.hasOption(section, "autortstructref"):
            ConfigDetails().autoRTStructRef = appConfig.getboolean(
                section, "autortstructref")
        if appConfig.hasOption(section, "downloaddicompatientfoldername"):
            ConfigDetails().downloadDicomPatientFolderName = appConfig.get(
                section)["downloaddicompatientfoldername"]
        if appConfig.hasOption(section, "downloaddicomstudyfoldername"):
            ConfigDetails().downloadDicomStudyFolderName = appConfig.get(
                section)["downloaddicomstudyfoldername"]

    section = "AE"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "name"):
            ConfigDetails().rpbAE = appConfig.get(section)["name"]
        if appConfig.hasOption(section, "port"):
            ConfigDetails().rpbAEport = int(appConfig.get(section)["port"])
        if appConfig.hasOption(section, "aetsuffix"):
            ConfigDetails().rpbAETsuffix = appConfig.get(section)["aetsuffix"]

        if not ApplicationEntityService().isReady:
            if ConfigDetails(
            ).rpbAE is not None and ConfigDetails().rpbAE != "":

                # Consider AET suffix option when creating AE for client
                AET = ConfigDetails().rpbAE

                if ConfigDetails().rpbAETsuffix == "host":
                    AET += str(QtNetwork.QHostInfo.localHostName())
                elif ConfigDetails().rpbAETsuffix == "fqdn":
                    AET += str(
                        QtNetwork.QHostInfo.localHostName()) + "." + str(
                            QtNetwork.QHostInfo.localDomainName())

                ApplicationEntityService().init(AET, ConfigDetails().rpbAEport)

    aeCount = 0
    section = "RemoteAEs"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "count"):
            aeCount = int(appConfig.get(section)["count"])

    for i in range(0, aeCount):
        section = "RemoteAE" + str(i)
        if appConfig.hasSection(section):
            address = ""
            if appConfig.hasOption(section, "address"):
                address = appConfig.get(section)["address"]
            port = -1
            if appConfig.hasOption(section, "port"):
                port = int(appConfig.get(section)["port"])
            aet = ""
            if appConfig.hasOption(section, "aet"):
                aet = appConfig.get(section)["aet"]

            ConfigDetails().remoteAEs.append(
                dict(Address=address, Port=port, AET=aet))

    section = "SanityTests"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "patientgendermatch"):
            ConfigDetails().patientGenderMatch = appConfig.getboolean(
                section, "patientGenderMatch")
        if appConfig.hasOption(section, "patientdobmatch"):
            ConfigDetails().patientDobMatch = appConfig.getboolean(
                section, "patientDobMatch")

    section = "General"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "startupupdatecheck"):
            ConfigDetails().startupUpdateCheck = appConfig.getboolean(
                section, "startupupdatecheck")

    section = "Temp"
    if appConfig.hasSection(section):
        if appConfig.hasOption(section, "isupgrading"):
            ConfigDetails().isUpgrading = appConfig.get(section)["isupgrading"]
        if appConfig.hasOption(section, "upgradefinished"):
            ConfigDetails().upgradeFinished = appConfig.get(
                section)["upgradefinished"]