def selectEventsList(begDate, endDate, protocolNumber, isValid, clientId = None): db = QtGui.qApp.db stmt = u""" SELECT cl.id AS clientId, cl.lastName, cl.firstName, cl.patrName, e.id AS EventId, ps.begDate AS begDate, ps.endDate AS endDate, psi.id AS protocolId, psi.name AS protocolName, s.name AS serviceName, ct.price AS price, ct.amount AS amount, SUM(ct.price) AS sumUsl, IF (a.account = 1, SUM(ct.price), 0) AS sumAcc, IF (a.account = 0, SUM(ct.price), 0) AS sumNotAcc, IF (a.payStatus = 3, SUM(ct.price), 0) AS sumPayed FROM PaymentScheme ps INNER JOIN PaymentSchemeItem psi ON psi.paymentScheme_id = ps.id INNER JOIN Contract c ON psi.contract_id = c.id AND c.deleted = 0 INNER JOIN Event e ON e.contract_id = c.id AND e.deleted = 0 INNER JOIN Client cl ON e.client_id = cl.id INNER JOIN Action a ON a.event_id = e.id AND a.deleted = 0 INNER JOIN ActionType at ON at.id = a.actionType_id AND at.deleted = 0 INNER JOIN ActionType_Service ats ON ats.master_id = at.id INNER JOIN rbService s ON ats.service_id = s.id INNER JOIN Contract_Tariff ct ON c.id = ct.master_id AND ct.service_id = s.id AND ct.deleted = 0 WHERE ps.begDate > \'%s\' AND ps.begDate < \'%s\' AND ps.deleted = 0 AND ps.numberProtocol = \'%s\' """ % (begDate.toString('yyyy-MM-dd'), endDate.toString('yyyy-MM-dd'), protocolNumber) if isValid: stmt += u' AND ps.endDate >= \'%s\'' % QtCore.QDate.currentDate().toString('yyyy-MM-dd') if clientId: stmt += u' AND cl.id = %s' % forceString(clientId) return db.query(stmt)
def __init__(self, parent=None): db = QtGui.qApp.db QtGui.QDialog.__init__(self, parent) self.patientRequired = False self.setupUi(self) self.cmbEventType.setTable('EventType', True) self.edtBegPayDate.setDate(QtCore.QDate()) self.edtEndPayDate.setDate(QtCore.QDate()) self.cmbPermanentAttach.addItem(u'не задано', toVariant(None)) self.cmbPermanentAttach.addItem(u'без прикрепления', toVariant(-1)) query = db.query( 'SELECT id, shortName FROM Organisation WHERE exists (select * from ClientAttach where ClientAttach.LPU_id=Organisation.id) order by shortName' ) while query.next(): record = query.record() id = record.value(0).toInt()[0] shortName = forceString(record.value(1)) self.cmbPermanentAttach.addItem(shortName, toVariant(id)) self.cmbRaion.addItem(u'Иногородние', toVariant(u'Иногородние')) self.cmbRaion.addItem(u'Неидентифицированные', toVariant(u'Неидентифицированные')) self.cmbRaion.addItem(u'Ленинградская обл.', toVariant(u'Ленинградская обл.')) query = db.query( 'SELECT NAME FROM kladr.OKATO WHERE P1<>" " and P2=" "' ) # районы Петербурга и Лен. области while query.next(): record = query.record() NAME = record.value(0).toString() self.cmbRaion.addItem(NAME, toVariant(NAME)) YearDD = u'' curDate = QtCore.QDate.currentDate() curYear = curDate.toString('yy') YearDD = u'ДД-' + curYear self.ledtYearForDD.setText(YearDD)
def build(self, params): begDate = params.get('begDate') endDate = params.get('endDate') grouping = params.get('grouping') query = selectData(begDate, endDate, grouping) self.setQueryText(forceString(query.lastQuery())) doc = QtGui.QTextDocument() cursor = QtGui.QTextCursor(doc) cursor.setCharFormat(CReportBase.ReportTitle) cursor.insertText(self.title()) cursor.insertBlock() self.dumpParams(cursor, params) cursor.insertBlock() if grouping: self.build_R1(cursor, query) else: self.build_R2(cursor, query) return doc
def dumpParamsTraumaType(self, cursor, params): description = [] traumaTypeId = params.get('traumaTypeId', None) chkTraumaTypeAny = params.get('chkTraumaTypeAny', False) if chkTraumaTypeAny: nameTraumaType = u'любой' elif traumaTypeId: nameTraumaType = forceString( QtGui.qApp.db.translate('rbTraumaType', 'id', traumaTypeId, 'name')) else: nameTraumaType = u'не определен' description.append(u'Тип травмы: ' + nameTraumaType) columns = [('100%', [], CReportBase.AlignLeft)] table = createTable(cursor, columns, headerRowCount=len(description), border=0, cellPadding=2, cellSpacing=0) for i, row in enumerate(description): table.setText(i, 0, row) cursor.movePosition(QtGui.QTextCursor.End)
def build(self, params): date = forceDate(params.get('date', QtCore.QDate())) financeSource = forceRef(params.get('financeSource', None)) payStatus = forceInt(params.get('payStatus', 0)) doc = QtGui.QTextDocument() cursor = QtGui.QTextCursor(doc) cursor.setCharFormat(CReportBase.ReportTitle) cursor.insertText(self.title()) cursor.insertBlock() self.dumpParams(cursor, params) cursor.insertBlock() tableColumns = [ ('20%', [u'ФИО пациента'], CReportBase.AlignRight), ('20%', [u'Услуга'], CReportBase.AlignRight), ('20%', [u'Дата и время'], CReportBase.AlignRight), ('10%', [u'Источник финансирования'], CReportBase.AlignRight), ('10%', [u'Отметка об оплате'], CReportBase.AlignRight), ('20%', [u'Регистратор'], CReportBase.AlignRight), ] table = createTable(cursor, tableColumns) query = selectData(date, financeSource, payStatus) self.setQueryText(forceString(query.lastQuery())) while query.next(): record = query.record() clientName = forceString(record.value('clientName')) serviceName = forceString(record.value('serviceName')) serviceDate = forceDateTime( record.value('serviceDate')).toString('dd.MM.yyyy hh:mm') financeSource = forceString(record.value('financeSource')) payStatus = forceString(record.value('payStatus')) registrar = forceString(record.value('registrar')) i = table.addRow() table.setText(i, 0, clientName) table.setText(i, 1, serviceName) table.setText(i, 2, serviceDate) table.setText(i, 3, financeSource) table.setText(i, 4, payStatus) table.setText(i, 5, registrar) return doc
def __init__(self, orgId, orgStructureId, emptyRootName, purpose, filter=None): if emptyRootName is None: emptyRootName = u'ЛПУ' COrgStructureTreeItem.__init__( self, None, # parent orgStructureId, # id # atronah: почему-то не получилось импортировать from Orgs.Utils import getOrgStructureName emptyRootName if not orgStructureId else forceString(QtGui.qApp.db.translate( 'OrgStructure', 'id', orgStructureId, 'code' )), False, False ) self.orgId = orgId self.emptyRootName = emptyRootName self.purpose = purpose self.filter = filter self.timestamp = None self.checkSum = None
def rbInfo(self, rbName, version): file = TemporaryFile() data = forceString({ "resourceType": "Parameters", "parameter": [{ "name": "system", "valueString": rbName }, { "name": "version", "valueString": version }] }) file.write(data) file.seek(0) resp = requests.post(url=(config.termUrl + 'ValueSet/$expand'), data=file.read(), headers=self.headers) file.close() if resp.status_code == 200: data = json.loads(resp.text) for par in data['parameter']: return par['resource']['expansion']['contains']
def makeFormatTable(self, query, groupByArea): attachD = {} attachK = {} prevOrgStructure = '' attachDInOrgStructure = [] attachKInOrgStructure = [] self.client = {} #clientInfo = [] orgStructure = None while query.next(): record = query.record() id = forceRef(record.value('id')) client = forceString(record.value('lastName')) + ' ' + forceString( record.value('firstName')) + ' ' + forceString( record.value('patrName')) birthDate = forceString(record.value('birthDate')) age = forceString(record.value('age')) address = forceString(record.value('address')) diagnosis = forceString(record.value('diagnosis')) attachType = forceBool(record.value('attach')) orgStructure = forceRef(record.value('orgStructure_id')) self.client[id] = [client, birthDate, age, address, diagnosis] if not orgStructure: orgStructure = 0 if prevOrgStructure and prevOrgStructure != orgStructure and groupByArea: attachD[prevOrgStructure] = attachDInOrgStructure attachK[prevOrgStructure] = attachKInOrgStructure attachDInOrgStructure = [] attachKInOrgStructure = [] if prevOrgStructure != orgStructure and groupByArea: prevOrgStructure = orgStructure if attachType: attachDInOrgStructure.append(id) else: attachKInOrgStructure.append(id) if orgStructure: attachD[orgStructure] = attachDInOrgStructure if orgStructure: attachK[orgStructure] = attachKInOrgStructure return attachD, attachK
def getKsgIdList(self, showAll): db = QtGui.qApp.db tblActionType = db.table('ActionType') tblEventType = db.table('EventType') tblRbEventProfile = db.table('rbEventProfile') tblQ = tblEventType.innerJoin( tblRbEventProfile, tblEventType['eventProfile_id'].eq(tblRbEventProfile['id'])) code = forceString(db.translate(tblQ, tblEventType['id'], self._eventTypeId, tblRbEventProfile['regionalCode'])) return getCsgIdListByCond( sex=self._clientSex, age=self._clientAge, mkb=self._MKB, mkb2List=self._MKB2List, actionTypeCodesList=db.getColumnValues( tblActionType, column=tblActionType['code'], where=[tblActionType['id'].inlist(self._actionTypeIdList)] ), code=getCSGDepartmentMaskByRegionalCode(code), date=self._endDate if self._endDate else self._begDate, duration=self._begDate.daysTo(self._endDate) if self._begDate and self._endDate else None, weakSelection=showAll )
def processRecord(self, record): MKB = forceString(record.value('MKB')) sex = forceInt(record.value('sex')) count = forceInt(record.value('count')) age = forceInt(record.value('clientAge')) stage = forceInt(record.value('stage_id')) additionalDiagInfo = forceBool(record.value( 'diagnosticResultId')) if self.diseaseCharacterCodes == [ 5 ] else forceBool(record.value('dispanserCode')) MKBfound = False for rowInfo in self.resultSet[:-1]: # Итог здесь учитывать не надо row, checkStage = rowInfo if MKBinString(MKB, row[2]): MKBfound = True if not checkStage or stage in [1, 2]: self.processRow(row, sex, age, additionalDiagInfo, count) if not MKBfound: self.processRow(self.resultSet[-2][0], sex, age, additionalDiagInfo, count) self.processRow(self.resultSet[-1][0], sex, age, additionalDiagInfo, count)
def getOrgDetails(orgId): db = QtGui.qApp.db tableOrganisation = db.table('Organisation') tableOrgAccount = db.table('Organisation_Account') tableBank = db.table('Bank') table = tableOrganisation.leftJoin(tableOrgAccount, tableOrgAccount['organisation_id'].eq(tableOrganisation['id'])) table = table.leftJoin(tableBank, tableBank['id'].eq(tableOrgAccount['bank_id'])) cond = [tableOrganisation['id'].eq(orgId)] cols = [tableOrganisation['fullName'], tableOrganisation['Address'], tableOrganisation['INN'], tableOrganisation['KPP'], tableOrgAccount['name'].alias('accountName'), tableBank['name'].alias('bankName'), tableBank['BIK']] record = db.getRecordEx(table, cols, cond) if record: orgName = forceString(record.value('fullName')) orgAddress = forceString(record.value('address')) orgINN = forceString(record.value('INN')) orgKPP = forceString(record.value('KPP')) orgAccount = forceString(record.value('accountName')) bankName = forceString(record.value('bankName')) bankBIK = forceString(record.value('BIK')) return {'orgName': orgName, 'orgAddress': orgAddress, 'orgINN': orgINN, 'orgKPP': orgKPP, 'orgAccount': orgAccount, 'bankName': bankName, 'bankBIK': bankBIK} else: return {'orgName': '', 'orgAddress': '', 'orgINN': '', 'orgKPP': '', 'orgAccount': '', 'bankName': '', 'bankBIK': ''}
def dumpParams(self, cursor, params, charFormat=QtGui.QTextCharFormat()): description = self.getDescription(params) query = self.getServiceParams(params) while query.next(): record = query.record() description.append( u'Подразделение: ' + getOrgStructureFullName(record.value('orgStructId'))) description.append(u'Услуга: ' + forceString(record.value('serviceName'))) columns = [('100%', [], CReportBase.AlignLeft)] table = createTable(cursor, columns, headerRowCount=len(description), border=0, cellPadding=2, cellSpacing=0) for i, row in enumerate(description): table.setText(i, 0, row, charFormat=charFormat) cursor.movePosition(QtGui.QTextCursor.End) cursor.insertBlock()
def processPers(self, pers): id_pac = forceString(pers.firstChildElement('ID_PAC').text()) lastName = pers.firstChildElement('FAM').text() firstName = pers.firstChildElement('IM').text() patrName = pers.firstChildElement('OT').text() sex = pers.firstChildElement('W').text() birthDate = QtCore.QDate.fromString( pers.firstChildElement('DR').text(), QtCore.Qt.ISODate) tblClient = self.db.table('Client') cond = [ tblClient['lastName'].eq(lastName if lastName else ''), tblClient['firstName'].eq(firstName if firstName else ''), tblClient['patrName'].eq(patrName if patrName else ''), tblClient['sex'].eq(sex), tblClient['birthDate'].eq(birthDate) ] clientRecord = self.db.getRecordEx(tblClient, 'id', cond) if not clientRecord: self.err2log(u'Не удалось найти пациента, ID_PAC = %s' % id_pac) self.mapIdPacToClientId[id_pac] = None return False self.mapIdPacToClientId[id_pac] = forceRef(clientRecord.value('id')) return True
def build(self, params): doc = QtGui.QTextDocument() cursor = QtGui.QTextCursor(doc) cursor.setCharFormat(CReportBase.ReportTitle) cursor.insertText(u'Количество записей в журнале отложенного спроса') cursor.insertBlock() self.dumpParams(cursor, params) cursor.setCharFormat(CReportBase.ReportBody) cursor.insertBlock() tableColumns = [('10%', [u'№ п/п'], CReportBase.AlignRight), ('30%', [u'Должность врача'], CReportBase.AlignLeft), ('30%', [u'Записаны в журнал отложенного спроса'], CReportBase.AlignCenter), ('30%', [u'Обеспечены консультацией'], CReportBase.AlignCenter)] table = createTable(cursor, tableColumns) sumAllRecording = 0 sumConsultationRecording = 0 query = selectData(params) self.setQueryText(forceString(query.lastQuery())) while query.next(): record = query.record() name = forceString(record.value('name')) allRecording = forceInt(record.value('allRecording')) consultationRecording = forceInt( record.value('consultationRecording')) sumAllRecording += allRecording sumConsultationRecording += consultationRecording i = table.addRow() table.setText(i, 0, forceString(i)) table.setText(i, 1, name) table.setText(i, 2, forceString(allRecording)) table.setText(i, 3, forceString(consultationRecording)) i = table.addRow() table.setText(i, 1, u'Итого:') table.setText(i, 2, forceString(sumAllRecording)) table.setText(i, 3, forceString(sumConsultationRecording)) return doc
def flags(self, index=QtCore.QModelIndex()): result = CInDocTableModel.flags(self, index) row = index.row() if row < len(self._items): column = index.column() if self.isManualSwitchDiagnosis and index.isValid(): if column == self.columnHandleDiagnosis: characterId = forceRef( self.items()[row].value('character_id')) if characterId != self.characterIdForHandleDiagnosis: result = (result & ~QtCore.Qt.ItemIsUserCheckable) # return result if self.isMKBMorphology and index.isValid(): if column == self._mapFieldNameToCol.get('morphologyMKB'): mkb = forceString(self.items()[row].value('MKB')) if not (bool(mkb) and mkb[0] in CF106DiagnosticsModel.MKB_allowed_morphology): result = (result & ~QtCore.Qt.ItemIsEditable) if QtGui.qApp.isPNDDiagnosisMode() and ( row == len(self.items()) or index.column() != self._mapFieldNameToCol.get('result_id')): result = (result & ~QtCore.Qt.ItemIsEditable) return result
def getDescription(self, params): date = params.get('begDate', QtCore.QDate()) mode = params.get('mode', 0) orgStructureId = params.get('orgStructureId', None) times = u'' if mode == 0: times = u'00.00 - 23.59' elif mode == 1: times = u'07.00 - 15.00' elif mode == 2: times = u'15.00 - 07.00' elif mode == 3: times = u'07.00 - 07.00' rows = [] if date: rows.append(u'дата: ' + forceString(date)) if times: rows.append(u'временной отрезок: ' + times) if orgStructureId: rows.append(u'подразделение: ' + getOrgStructureFullName(orgStructureId)) return rows
def setRecord(self, record): CItemEditorBaseDialog.setRecord(self, record) self.setGroupId(forceRef(record.value('group_id'))) setLineEditValue(self.edtName, record, 'name') setComboBoxValue(self.cmbSex, record, 'sex') (begUnit, begCount, endUnit, endCount) = parseAgeSelector(forceString(record.value('age'))) self.cmbBegAgeUnit.setCurrentIndex(begUnit) self.edtBegAgeCount.setText(str(begCount)) self.cmbEndAgeUnit.setCurrentIndex(endUnit) self.edtEndAgeCount.setText(str(endCount)) ownerId = forceRef(record.value('owner_id')) specialityId = forceRef(record.value('speciality_id')) if ownerId: self.rbVisibleToOwner.setChecked(True) self.cmbOwner.setValue(ownerId) elif specialityId: self.rbVisibleToSpeciality.setChecked(True) self.cmbSpeciality.setValue(specialityId) else: self.rbVisibleToAll.setChecked(True) self.setActionId(forceRef(record.value('action_id'))) self.setIsDirty(False)
def __init__(self, clientId): QtGui.QDialog.__init__(self) Ui_VIPStatusComment.__init__(self) self.setupUi(self) # self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint) self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowSystemMenuHint) self.clientId = clientId self.isVIP = False self.saved = False colorList = [ forceString(x.value('color')).upper() for x in QtGui.qApp.db.getRecordList(table='rbVIPColor', cols='color') ] self.cmbColor.model().changeColorList(colorList) self.setData() if QtGui.qApp.userHasRight( urSetVIPComment ) and not QtGui.qApp.userHasRight(urEditSetVIPStatus): self.btnStatus.setEnabled(False)
def exportInt(self): dbf, query = self.prepareToExport() lpuCode = forceString(self.edtOrgCode.text()) self.log(u'ЛПУ: код инфис: "%s".' % lpuCode) if not lpuCode: self.log( u'<b><font color=red>ОШИБКА</font></b>:' u'Для текущего ЛПУ не задан код инфис', True) self.exportedClients = set() # Составляем множество событий, содержащих услуги с модернизацией query.exec_() # встаем перед первой записью while query.next(): QtGui.qApp.processEvents() if self.aborted: break self.progressBar.step() self.process(dbf, query.record(), lpuCode) dbf.close()
def getRegion(clientId): # if clientId == 2930: # pass clientAddressRecord = getClientAddress(clientId, 0) if clientAddressRecord: address = getAddress(clientAddressRecord.value('address_id')) # if not addressInfo: # pass area, region, npunkt, street, streettype = getInfisCodes( address.KLADRCode, address.KLADRStreetCode, address.number, address.corpus) # if not area: # pass region = forceString( QtGui.qApp.db.translate('kladr.OKATO', 'infis', area, 'NAME')) if area == u'ЛО': region = u'Ленинградская обл.' # if not region: # pass return region else: return ''
def params(self): params = {} params['contractId'] = self.cmbContract.value() params['contractText'] = forceString(self.cmbContract.currentText()) params['financeId'] = self.cmbFinance.value() params['financeText'] = self.cmbFinance.currentText() params['begDate'] = self.edtBegDate.date() params['endDate'] = self.edtEndDate.date() params['detailContracts'] = self.chkDetailContracts.isChecked() params['printPayerResult'] = self.chkPrintPayerResult.isChecked() params['clientOrganisationId'] = self.cmbClientOrganisation.value() params['insurerId'] = self.cmbInsurer.value() params['specialityId'] = self.cmbSpeciality.value() params['personSpecText'] = self.cmbSpeciality.currentText() params['freeInputWork'] = self.chkFreeInputWork.isChecked() params['freeInputWorkValue'] = forceStringEx( self.edtFreeInputWork.text()) return params
def setRecord(self, record): CItemEditorBaseDialog.setRecord(self, record) self.setJobInfo(forceRef(record.value('master_id'))) dateTime = forceDateTime(record.value('datetime')) begDateTime = forceDateTime(record.value('begDateTime')) self.lblDatetimeValue.setText(forceString(dateTime)) setDatetimeEditValue(self.edtBegDate, self.edtBegTime, record, 'begDateTime') setDatetimeEditValue(self.edtEndDate, self.edtEndTime, record, 'endDateTime') setComboBoxValue(self.cmbStatus, record, 'status') if self.cmbStatus.currentIndex() == 2: self.modelJobTicketProbe.setEditable(False) self.edtBegDate.setEnabled(False) self.edtBegTime.setEnabled(False) self.edtEndDate.setEnabled(False) self.edtEndTime.setEnabled(False) self.btnSetBegDateTime.setEnabled(False) self.btnSetEndDateTime.setEnabled(False) self.cmbStatus.setEnabled(False) self.date = dateTime.date() self.datetime = begDateTime if begDateTime.date().isValid() else dateTime clients, actions = self.getActions() self.modelJobTicketProbe.setActionIdList(actions) self.cmbStatus.setCurrentIndex(max(self.jobStatusModifier, self.cmbStatus.currentIndex())) if clients: self.setClientId(clients[0]) self.setIsDirty(False) self.isPostUISet = True
def outOrgStructureTable(self, cursor, orgStructureData, mapPersonIdToName): cursor.movePosition(QtGui.QTextCursor.End) # cursor.setCharFormat(CReportBase.ReportTitle) # cursor.insertText(personName) # cursor.insertBlock() tableColumns = [('5%', [u'Кабинет'], CReportBase.AlignLeft)] for weekDay in xrange(7): name = forceString(QtCore.QDate.longDayName(weekDay + 1)).capitalize() tableColumns.append(('5%', [name, u'Приём'], CReportBase.AlignLeft)) tableColumns.append(('8%', ['', u'Врач'], CReportBase.AlignLeft)) table = createTable(cursor, tableColumns) table.mergeCells(0, 0, 2, 1) for weekDay in xrange(7): table.mergeCells(0, weekDay * 2 + 1, 1, 2) dateList = orgStructureData.keys() dateList.sort() prevIsoWeek = None week = [None] * 7 officesSet = set() for date in dateList: isoYear, isoWeek, isoWeekDay = date.isocalendar() if prevIsoWeek != isoWeek: if prevIsoWeek: self.outWeek(table, week, officesSet, mapPersonIdToName) week = [None] * 7 officesSet = set() prevIsoWeek = isoWeek dateData = orgStructureData[date] officesSet.update(dateData.keys()) week[isoWeekDay - 1] = date, dateData self.outWeek(table, week, officesSet, mapPersonIdToName)
def processTable(self, tableName, fields, rows): db = QtGui.qApp.db table = db.table(tableName) tableInfo = self.tables[tableName] matchFields = tableInfo['matchFields'] for row in rows: cond = [] for field in matchFields: index = fields.index(tableInfo[field]) if 0 <= index < len(row): cond.append(table[field].eq(row[index])) records = db.getRecordList(table, where=db.joinOr(cond)) bestRecord = None bestScore = 0 for record in records: score = 0 for field in matchFields: index = fields.index(tableInfo[field]) if 0 <= index < len(row): if forceString(record.value(field)).lower() == row[ fields.index(tableInfo[field])].lower(): score += 1 if score > bestScore: bestRecord = record bestScore = score if bestRecord is not None: bestRecord.setValue( 'miacCode', toVariant(row[fields.index(tableInfo['miacCode'])])) db.updateRecord(table, bestRecord) self.nUpdated += 1 self.nProcessed += 1 self.progressBar.setValue(self.progressBar.value() + 1) QtGui.qApp.processEvents()
def setRecord(self, record): CRCReportEditorBase.setRecord(self, record) setLineEditValue(self.edtReportName, record, 'name') queryId = forceRef(record.value('query_id')) self.modelParams.loadItems(self.itemId()) self.setQueryRecord(queryId) if not self._recordQuery: return self.cmbMainTable.setValue( forceInt(self._recordQuery.value('mainTable_id'))) self.modelTree.setMainTableId(self.cmbMainTable.value()) self.modelTree.setState('') self.modelCols.loadItems(queryId) self.modelGroups.loadItems(queryId) self.modelOrders.loadItems(queryId) self.modelConditions.loadItems(queryId) self.modelTree.setState( forceString(self._recordQuery.value('stateTree'))) self.modelTableCapGroups.loadItems(self.itemId()) self.modelTableCap.loadItems(self.itemId()) self.treeConds.expandAll()
def getOrgStructures(self, profileId=None): db = QtGui.qApp.db OrgStructure = db.table('OrgStructure') cols = [OrgStructure['id'], OrgStructure['code'], OrgStructure['type']] cond = [OrgStructure['deleted'].eq(0)] if profileId: OSHB = db.table('OrgStructure_HospitalBed') cond.extend([ OrgStructure['id'].inlist( getOrgStructureDescendants(profileId)), db.existsStmt(OSHB, [ OSHB['master_id'].eq(OrgStructure['id']), OSHB['isPermanent'].eq(1) ]), OrgStructure['infisCode'].ne(u'') ]) else: cond.extend([ OrgStructure['parent_id'].isNull(), OrgStructure['deleted'].eq(0) ]) return dict([(forceRef(rec.value('id')), { 'code': forceString(rec.value('code')), 'type': forceInt(rec.value('type')) }) for rec in self.db.getRecordList(OrgStructure, cols, cond)])
def printOrder(widget, clientId, toHome, date, office, personId, eventId, num, time, timeRange): if toHome: contextName = 'orderHome' typeText = u'Вызов на дом' else: contextName = 'orderAmb' typeText = u'Направление на приём к врачу' visitInfo = { 'clientId': clientId, 'type': typeText, 'date': forceString(date), 'office': office, 'personId': personId, 'num': num, 'time': time.toString('H:mm') if time else '--:--', 'timeRange': timeRange, } clientInfo = getClientInfo2(clientId) personInfo = clientInfo.getInstance(CPersonInfo, personId) eventInfo = clientInfo.getInstance(CEventInfo, eventId) data = { 'event': eventInfo, 'client': clientInfo, 'person': personInfo, 'visit': visitInfo } templates = getPrintTemplates(contextName) if templates: templateId = templates[0][1] QtGui.qApp.call(widget, applyTemplate, (widget, templateId, data)) else: orderTemplate = getOrderTemplate() QtGui.qApp.call(widget, applyTemplateInt, (widget, visitInfo['type'], orderTemplate, data))
def _getOrgSections(self): u""" Список всех подразделений, являющихся участками, либо содержащих участки в своей структуре """ if self._orgSections is None: tableOrgStructure = self.db.table('OrgStructure') cols = [ tableOrgStructure['id'], self.db.func.getOrgStructurePath( tableOrgStructure['id']).alias('path') ] cond = [ tableOrgStructure['organisation_id'].eq( QtGui.qApp.currentOrgId()), tableOrgStructure['isArea'].ne(COrgStructureAreaInfo.No), tableOrgStructure['deleted'].eq(0), ] sections = set() for rec in self.db.iterRecordList(tableOrgStructure, cols, cond): sections.add(forceRef(rec.value('id'))) sections |= set( int(id_str) for id_str in forceString(rec.value('path')).split('.') if id_str) self._orgSections = list(sections) return self._orgSections
def parseQueryInfo(self, query, writtenFromZhos): recordList = self.makeNeedfulDicts(query) for record in recordList: actionNote = forceString(record.value('actionNote')) personId = forceInt(record.value('id')) fromZhos = forceRef(record.value('zhos')) name = None if not personId: name = self.getincognitoName(actionNote, writtenFromZhos, fromZhos) personId = 0 if not name: name = formatName(record.value('lastName'), record.value('firstName'), record.value('patrName')) setPersonId = forceRef(record.value('setPerson_id')) key = name + '%d' % personId afore = self.doctorsDict.get(key, None) if afore: self.addInfo(record, key) else: self.doctorsDict[key] = [name] + ([0] * 6) self.addInfo(record, key)
def getDescription(self, params): date = params.get('date', QtCore.QDate.currentDate()) financeId = params.get('financeId', None) class_ = params.get('class', None) actionTypeGroupId = params.get('actionTypeGroupId', None) status = params.get('status', None) orgStructureId = params.get('orgStructureId', None) personId = params.get('personId', None) assistantId = params.get('assistantId', None) tissueTypeId = params.get('tissueTypeId', None) rows = [u'Год: %d'%date.year(), u'Месяц: %s'%[u'январь', u'февраль', u'март', u'апрель', u'май', u'июнь', u'июль', u'август', u'сентябрь', u'октябрь', u'ноябрь', u'декабрь'][date.month()-1]] db = QtGui.qApp.db if financeId: rows.append(u'Тип финансирования: %s'%forceString(db.translate('rbFinance', 'id', financeId, 'name'))) if not class_ is None: rows.append(u'Класс типов действия: %s'%[u'статус', u'диагностика', u'лечение', u'прочие мероприятия'][class_]) if actionTypeGroupId: rows.append(u'Группа типов действий: %s'%forceString(db.translate('ActionType', 'id', actionTypeGroupId, 'CONCAT(code, \' | \', name)'))) if not status is None: rows.append(u'Статус: %s' % CActionType.retranslateClass(False).statusNames[status]) if orgStructureId: rows.append(u'Подразделение: %s'%forceString(db.translate('OrgStructure', 'id', orgStructureId, 'name'))) if personId: rows.append(u'Назначивший: %s'%forceString(db.translate('vrbPersonWithSpeciality', 'id', personId, 'name'))) if assistantId: rows.append(u'Ассистент: %s'%forceString(db.translate('vrbPersonWithSpeciality', 'id', assistantId, 'name'))) if tissueTypeId: rows.append(u'Тип биоматериала: %s'%forceString(db.translate('rbTissueType', 'id', tissueTypeId, 'CONCAT(code, \' | \', name)'))) return rows