def openDB(self): ''' Открыть БД и отобразить список пациентов ''' # Подчищаем старые данные self.closeDB() # Создаём новый список экспортных пациентов self.patLst = pr.ExportProbes() # Получаем имя базы в системной кодировке filename = pu.convert(QtGui.QFileDialog.getOpenFileName(self, u'Выберете файл базы данных', QtCore.QDir.homePath(), u"Базы данных (*.gdb *.GDB)")) if filename != '': # Подключаемся к базе global base try: base = db.DBAccess(filename) # Получаем список пациентов patients = base.getAllPatients() # Выводим его for id in patients.keys(): # Порядок полей: ID, ФИО, дата рождения, пол item = QtGui.QTreeWidgetItem([ str(id), patients[id][0], str(patients[id][1]), patients[id][2] ]) item.setCheckState(0, QtCore.Qt.Unchecked) self.ui.trePatients.addTopLevelItem(item) self.statusBar().showMessage(u'База данных загружена. Найдено ' + str(len(patients)) + u' пациентов.') except UnicodeDecodeError: self.statusBar().showMessage(u'Ошибка: слишком длинный путь до базы данных.')
def exportProbes(self): ''' Экспортирование съемов ''' # Запрашиваем дирректорию сохраниения съемов в системной кодировке dirName = pu.convert(QtGui.QFileDialog.getExistingDirectory(self, u'Выберете дирректорию сохранения')) if dirName != '': # Получаем список съемов, приготовленнных к экспорту exportLst = self.patLst.getAllProbes() # Для каждого пациента в списке экспортных съемов for patient in exportLst.keys(): # Для каждого съема конкретного пациента for date in exportLst[patient].keys(): # Получаем дату съема trueDate = datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S') # преобразуем её в строку особого вида dateStr = trueDate.strftime('%Y-%m-%d-%H-%M-%S') # Получаем Ф.И.О пациента в нужной кодировке patientName = pu.convert(base.getPatientName(patient)) # Суммируем полученные ранее переменные в полное имя файла fileName = os.path.join(dirName, patientName + '_' + dateStr + '.txt') # Открываем файл на запись tmpFile = open(fileName, "w") # Получаем матрицы съема lMatr, rMatr = base.getMatrix(patient, date) # Пишем матрицы по очереди в файл (Формат Новосибирска) for i in xrange(35): for j in xrange(24): tmpFile.write(str(lMatr[i][j])) tmpFile.write('; ') tmpFile.write('\n') for i in xrange(35): for j in xrange(24): tmpFile.write(str(rMatr[i][j])) tmpFile.write('; ') tmpFile.write('\n') # Закрываем файл tmpFile.close() # Информируем пользователя self.statusBar().showMessage(u'Экспорт прошёл успешно')