示例#1
0
    def getSeriesRecord ( self, recordID=None, seriesUID=None, accessionNumber=None, patientID=None ):
        whereClause = None
        queryArg = None

        # set SQL where clause to search database
        if recordID is not None:
            whereClause = " WHERE id = ? "
            queryArg = recordID

        elif seriesUID is not None:
            whereClause = " WHERE SeriesInstanceUID = ? "
            queryArg = seriesUID

        elif accessionNumber is not None:
            whereClause = " WHERE AccessionNumber = ? "
            queryArg = accessionNumber

        elif patientID is not None:
            whereClause = " WHERE PatientID = ? "
            queryArg = patientID

        else:
            return None

        # get series record from database
        qFind = "SELECT * FROM %s %s LIMIT 1" % (self.settings.dbTblSeries, whereClause)
        series = None
        with self.dbCon:
            dbCur = self.dbCon.cursor()
            dbCur.execute( qFind, (queryArg,) )
            series = dbCur.fetchone()

        # check record exists
        if series is None:
            print "Can't get series record with given arg: %s" % str(queryArg)
            return None

        # create new DICOM object
        dcm = FileDataset(None,{},None)

        # fill object from record
        for dcmHeaderTag in self.settings.tagsToRecord:
            tagName = DicomDictionary[dcmHeaderTag][4]
            if series[tagName]:
                setattr( dcm, tagName, series[tagName] )

        # add record ID
        dcm.recordID = series['id']

        return dcm