def sendApproved(self, referralCode): tableReferral = self.db.table('Referral') tableOrganisation = self.db.table('Organisation') recReferral = self.db.getRecordEx(tableReferral, '*', tableReferral['netrica_id'].eq(referralCode)) # Авторизация auth = self.api.factory.create('credentials') auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken']) auth.Organization = forceString( self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(), tableOrganisation['netrica_Code'])) # Данные о направлении referral = self.api.factory.create('referral') referral.ReferralInfo.IdMq = forceString(recReferral.value('netrica_id')) referral.EventsInfo.Target.IsReferralReviwed = True referral.EventsInfo.Target.ReferralReviewDate = forceDateTime(QtCore.QDateTime.currentDateTime()).toPyDateTime() referral.Target.IsReferralReviewed = True referral.Target.ReferralReviewDate = forceDateTime(QtCore.QDateTime.currentDateTime()).toPyDateTime() try: responce = self.api.service.AgreedFromTargetMo(auth, referral) if responce: return responce except WebFault, err: print unicode(err)
def checkPrivilege(self, resp, query): documents = [] while query.next(): documentRecord = query.record() documents.append( CR23ClientPrivilege( forceString(documentRecord.value('serial')), forceString(documentRecord.value('number')), forceString(documentRecord.value('name')), forceString(documentRecord.value('code')), self.toCorrectBegDate( forceDateTime(documentRecord.value('begDate'))), self.toCorrectEndDate( forceDateTime(documentRecord.value('endDate'))))) if not hasattr(resp._PersonClientCheckResult._PersonClient[0], '_PrivilegeDocuments'): return False for documentResponse in resp._PersonClientCheckResult._PersonClient[ 0]._PrivilegeDocuments._PrivilegeDocumentClient: found = False for document in documents: if (not hasattr(documentResponse, '_PrivilegeDocumentSeria') or (documentResponse._PrivilegeDocumentSeria.decode('utf-8') == document.serial)) \ and documentResponse._PrivilegeDocumentNumber.decode('utf-8') == document.number \ and documentResponse._PrivilegeDocumentName.decode('utf-8') == document.name \ and documentResponse._PrivilegeCategoryCode.decode('utf-8') == document.code \ and documentResponse._PrivilegeDocumentStart[0:7] == document.begDate \ and documentResponse._PrivilegeDocumentEnd[0:7] == document.endDate: document.found = True found = True if not found: return False for document in documents: if not document.found: return False return True
def on_btnCreateVisitBeforeRecordClient_clicked(self): if self.clientId: beginDate = forceDateTime(self.edtBeginDateVisitBeforeRecordClient.date()) endDate = forceDateTime(self.edtEndDateVisitBeforeRecordClient.date()) orgStructureId = self.cmbOrgStructureVisitBeforeRecordClient.value() specialityId = self.cmbSpecialityVisitBeforeRecordClient.getValue() personId = self.cmbPersonVisitBeforeRecordClient.getValue() self.modelVisitByQueueTable.loadData(self.chkNoVisitBeforeRecordClient.isChecked(), self.clientId, beginDate, endDate, orgStructureId, specialityId, personId)
def writeOrderLeaveHospital(self, record, number): self.writeStartElement( 'l10_orcl') #детализированный список сведений о выбывших пациентах self.writeComment( u'детализированный список сведений о выбывших пациентах') self.writeTextElement( 'm10_nzap', forceString(number)) #номер записи, уникален в пределах пакета self.writeComment(u'номер записи, уникален в пределах пакета') self.writeTextElement( 'm11_ornm', forceString(record.value('referralNumber'))) #номер направления self.writeComment(u'номер направления') self.writeTextElement( 'm12_ordt', forceDate(record.value('referralDate')).toString('yyyy-MM-dd') + 'T00:00:00') #дата направления self.writeComment(u'дата направления') if forceInt(record.value('formMedicalCare')) == 1: self.writeTextElement('m13_ortp', '1') #форма оказания медицинской помощи elif forceInt(record.value('formMedicalCare')) == 6: self.writeTextElement('m13_ortp', '2') elif forceInt(record.value('formMedicalCare')) == 2: self.writeTextElement('m13_ortp', '3') self.writeComment(u'форма оказания медицинской помощи') # else: # self.writeTextElement('m13_ortp', '') #в качестве кодов организаций везде используется ИНФИС код self.writeTextElement('m14_modcd', self.orgCode) #код МО self.writeComment(u'код МО') self.writeTextElement('m15_dttmfh', forceDateTime(record.value('setDate')).toString( 'yyyy-MM-ddThh:mm:ss')) #дата госпитализации self.writeComment(u'дата госпитализации') self.writeTextElement('m16_dttmlv', forceDateTime( record.value('actLeavBegDate')).toString( 'yyyy-MM-ddThh:mm:ss')) #дата выбытия self.writeComment(u'дата выбытия') self.writePerson(17, record) #персональные данные пациента self.writeComment(u'персональные данные пациента') hospitalBedCode = forceString(record.value('hospitalBedCode')) if hospitalBedCode: self.writeTextElement('m18_kpkcd', hospitalBedCode) #код профиля койки self.writeComment(u'код профиля койки') orgStructureCode = forceString(record.value('orgStructureCode')) if orgStructureCode: self.writeTextElement('m19_sccd', orgStructureCode) #код отделения self.writeComment(u'код отделения') self.writeTextElement( 'm20_crdnum', forceString(record.value( 'externalId'))) #номер карты стационарного больного self.writeComment(u'номер карты стационарного больного') # self.writeTextElement('m21_zerr', '') #служебное поле self.writeEndElement()
def saveItems(self, masterId): if self._items is not None: db = QtGui.qApp.db table = self._table db.transaction() try: db.deleteRecord(table, table[self.masterIdFieldName].eq(masterId)) curDatetime = QtCore.QDateTime.currentDateTime() updateFields = [ 'createDatetime', 'createPerson_id', 'modifyDatetime', 'modifyPerson_id', 'master_id', 'userRight_id' ] fields = ['id'] + updateFields values = [ (forceRef(rec.value('id')), forceDateTime(rec.value('createDatetime')) or curDatetime, forceRef(rec.value('createPerson_id')) or QtGui.qApp.userId, curDatetime, QtGui.qApp.userId, masterId, forceRef(rec.value('userRight_id'))) for rec in self._items ] db.insertValues(table, fields, values, updateFields=updateFields) db.commit() except Exception: db.rollback() self.setDirty(False)
def _initByRecord(self, record): self._datetime = CDateTimeInfo(forceDateTime(record.value('datetime'))) self._idx = forceInt(record.value('idx')) self._jobType = self.getInstance(CJobTypeInfo, forceRef(record.value('jobType_id'))) self._orgStructure = self.getInstance( COrgStructureInfo, forceRef(record.value('orgStructure_id'))) self._status = forceInt(record.value('status')) self._label = forceString(record.value('label')) self._note = forceString(record.value('note')) self._begDateTime = CDateTimeInfo( forceDateTime(record.value('begDateTime'))) self._endDateTime = CDateTimeInfo( forceDateTime(record.value('endDateTime'))) self._eQueueTicket = self.getInstance( CEQTicketInfo, forceDateTime(record.value('eQueueTicket_id')))
def on_printSelected(self): items = self.model().items() rows = self.getSelectedRows() items = [(row, items[row]) for row in rows] temp = OrderedDict() for row, item in items: actionType = item[1]._actionType if not temp.has_key(actionType): temp[actionType] = [] temp[actionType].append( (row, forceDateTime(item[0].value('directionDate')))) data = OrderedDict() for actionType, actionData in temp.items(): data[actionType.id] = { 'name': actionType.name, 'actionData': actionData, 'templates': getPrintTemplates(actionType.context) } dlg = CActionTemplatePrintWidget() self.connect(dlg, QtCore.SIGNAL('printActionTemplateList'), self.on_printActionTemplateList) dlg.setItems( data, self._isDirty, forceBool( QtGui.qApp.preferences.appPrefs.get('groupPrintWithoutDialog', QtCore.QVariant()))) if dlg.model._items: dlg.exec_() else: dlg.printOnly()
def updReferral(self): refInfo = {} refInfo['type'] = self.cmbReferralType.value() refInfo['number'] = self.edtReferralNumber.text() refInfo['refDate'] = forceDateTime(self.edtReferralDate.date()).toPyDateTime() refInfo['MKB'] = forceString(self.cmbReferralMKB.text()) refInfo['plannedDate'] = forceDateTime(self.edtReferralPlanedDate.date()).toPyDateTime() refInfo['relegateMO'] = forceString(self.cmbRelegateMo.value()) refInfo['medProfile'] = forceString(self.cmbSpeciality.value()) refInfo['netrica_id'] = forceString(self.recReferral.value('netrica_id')) service = NetricaServices() responce = service.updateReferral(refInfo) if responce: return True else: return False
def _load(self): from Events.ActionInfo import CUnitInfo db = QtGui.qApp.db record = db.getRecord('TakenTissueJournal', '*', self.id) if self.id else None if record: self._client = self.getInstance( CClientInfo, forceRef(record.value('client_id'))) self._tissueType = self.getInstance( CTissueTypeInfo, forceRef(record.value('tissueType_id'))) self._externalId = forceString(record.value('externalId')) self._number = forceString(record.value('externalId')) self._amount = forceInt(record.value('amount')) self._unit = self.getInstance(CUnitInfo, forceRef(record.value('unit_id'))) self._datetimeTaken = CDateTimeInfo( forceDateTime(record.value('datetimeTaken'))) self._execPerson = self.getInstance( CPersonInfo, forceRef(record.value('execPerson_id'))) self._note = forceString(record.value('note')) return True else: self._client = self.getInstance(CClientInfo, None) self._tissueType = self.getInstance(CTissueTypeInfo, None) self._externalId = '' self._number = '' self._amount = 0 self._unit = self.getInstance(CUnitInfo, None) self._datetimeTaken = CDateTimeInfo() self._execPerson = self.getInstance(CPersonInfo, None) self._note = '' return False
def selectTasks(probeIdList): # возвращает список пар ( задание-на-исследование, список-исследуемых-параметров ) # где задание-на-исследование это кортеж ( id-оборудования, наклейка, id-пациента, время-забора) # а каждый исследуемый параметр характеризуется кортежем ( id-пробы, код-теста, имя-теста, код-метериала, имя-материала, признак-срочности) result = [] db = QtGui.qApp.db tableProbe = db.table('Probe') tableTissue = db.table('TakenTissueJournal') tableEqupmentTest = db.table('rbEquipment_Test') table = tableProbe.leftJoin( tableEqupmentTest, db.joinAnd([ tableEqupmentTest['id'].eq(tableProbe['workTest_id']), tableEqupmentTest['equipment_id'].eq(tableProbe['equipment_id']), ])) table = table.leftJoin( tableTissue, tableTissue['id'].eq(tableProbe['takenTissueJournal_id'])) stmt = db.selectStmt(table, [ tableProbe['equipment_id'], tableProbe['externalId'], tableProbe['id'].alias('probe_id'), tableProbe['isUrgent'], tableTissue['client_id'], tableTissue['datetimeTaken'], tableEqupmentTest['hardwareTestCode'], tableEqupmentTest['hardwareTestName'], tableEqupmentTest['hardwareSpecimenCode'], tableEqupmentTest['hardwareSpecimenName'], ], tableProbe['id'].inlist(probeIdList), [ tableProbe['equipment_id'].name(), tableTissue['client_id'].name(), tableTissue['datetimeTaken'].name(), tableProbe['externalId'].name(), tableProbe['id'].name() ]) query = db.query(stmt) prevKey = None while query.next(): record = query.record() equipmentId = forceRef(record.value('equipment_id')) externalId = forceString(record.value('externalId')) clientId = forceRef(record.value('client_id')) dateTime = forceDateTime(record.value('datetimeTaken')) probeId = forceRef(record.value('probe_id')) hardwareTestCode = forceString(record.value('hardwareTestCode')) hardwareTestName = forceString(record.value('hardwareTestName')) hardwareSpecimenCode = forceString( record.value('hardwareSpecimenCode')) hardwareSpecimenName = forceString( record.value('hardwareSpecimenName')) isUrgent = forceBool(record.value('isUrgent')) key = (equipmentId, clientId, dateTime.toPyDateTime(), externalId) if prevKey != key: result.append((key, [])) prevKey = key result[-1][1].append( (probeId, hardwareTestCode, hardwareTestName, hardwareSpecimenCode, hardwareSpecimenName, isUrgent)) return result
def loadData(self, clientId=None): etcQueue = 'queue' atcQueue = 'queue' if clientId: self.clientId = clientId currentDate = forceDateTime(QtCore.QDate.currentDate()) db = QtGui.qApp.db tableAction = db.table('Action') tableEvent = db.table('Event') tableActionProperty = db.table('ActionProperty') tableActionProperty_Action = db.table('ActionProperty_Action') tableActionProperty_rbReason = db.table( 'ActionProperty_rbReasonOfAbsence') tableReason = db.table('rbReasonOfAbsence') cols = [ tableAction['id'], tableAction['setPerson_id'], tableAction['person_id'], tableAction['status'], tableAction['office'], tableAction['directionDate'], tableAction['note'], tableActionProperty_Action['id'].alias('APAction_id'), tableAction['event_id'], tableReason['name'].alias('reason') ] actionType = CActionTypeCache.getByCode(atcQueue) actionTypeId = actionType.id eventType = getEventType(etcQueue) eventTypeId = eventType.eventTypeId cond = [ tableEvent['client_id'].eq(self.clientId), tableEvent['setDate'].ge(currentDate), tableEvent['deleted'].eq(0), tableAction['deleted'].eq(0), tableEvent['eventType_id'].eq(eventTypeId), tableAction['actionType_id'].eq(actionTypeId) ] tableQuery = tableAction tableQuery = tableQuery.innerJoin( tableEvent, tableEvent['id'].eq(tableAction['event_id'])) tableQuery = tableQuery.leftJoin( tableActionProperty, tableActionProperty['action_id'].eq(tableAction['id'])) tableQuery = tableQuery.innerJoin( tableActionProperty_Action, tableActionProperty_Action['value'].eq(tableAction['id'])) tableQuery = tableQuery.leftJoin( tableActionProperty_rbReason, tableActionProperty_rbReason['id'].eq( tableActionProperty['id'])) tableQuery = tableQuery.leftJoin( tableReason, tableReason['id'].eq(tableActionProperty_rbReason['value'])) records = db.getRecordList(tableQuery, cols, cond, 'Action.directionDate') self.setItems(records) else: self.clearItems()
def setup(self, cols, tableName, order, record, executionPlan, forSelect=False, filterClass=None): self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowMaximizeButtonHint | QtCore.Qt.WindowCloseButtonHint) self.forSelect = forSelect self.executionPlan = executionPlan self.record = record self.filterClass = filterClass self.props = {} self.order = order self.model = CExecutionPlanModel(self) self.tblExecutionPlan.setModel(self.model) self.btnEdit.setDefault(not self.forSelect) self.tblExecutionPlan.setFocus(QtCore.Qt.OtherFocusReason) directionDateTime = forceDateTime(record.value('directionDate')) self.edtDirectionDate.setDate(directionDateTime.date()) self.edtDirectionTime.setTime(directionDateTime.time()) self.cmbSetPerson.setValue(forceRef(record.value('setPerson_id'))) self.isEditor = False if forceDateTime(record.value('endDate')) else True self.specifiedName = forceString(record.value('specifiedName')) self.actionTypeId = forceRef(record.value('actionType_id')) begDateTime = forceDateTime(record.value('begDate')) begDate = begDateTime.date() self.edtBegDate.setDate(begDate) duration = forceInt(record.value('duration')) plannedEndDateTime = forceDateTime(record.value('plannedEndDate')) if not plannedEndDateTime: plannedEndDateTime = begDateTime.addDays(duration-1) plannedEndDate = plannedEndDateTime.date() self.edtEndDate.setDate(plannedEndDate) self.edtDuration.setValue(duration) self.actionId = forceRef(record.value('id')) begDateNext = begDate while begDateNext <= plannedEndDate: if begDateNext not in self.executionPlan.keys(): self.executionPlan[pyDate(begDateNext)] = {} begDateNext = begDateNext.addDays(1) self.model.loadData(self.executionPlan) self.label.setText(u'всего: %d' % len(self.model.items)) QtCore.QObject.connect( self.tblExecutionPlan.horizontalHeader(), QtCore.SIGNAL('sectionClicked(int)'), self.setSort)
def __init__(self, model, record=None): self._model = model # type: CJobTicketProbeModel self._record = record if record: self.tissueType = forceRef(record.value('tissueType_id')) self.externalID = forceString(record.value('externalId')) # self.unit = forceRef(record.value('unit_id')) self.datetimeTaken = forceDateTime(record.value('datetimeTaken')) self.execPerson = forceRef(record.value('execPerson_id')) else: self.tissueType = self.execPerson = None self.externalID = u''
def build(self, params): bf = QtGui.QTextCharFormat() bf.setFontWeight(QtGui.QFont.Bold) doc = QtGui.QTextDocument() cursor = QtGui.QTextCursor(doc) cursor.setBlockFormat(CReportBase.AlignLeft) cursor.setCharFormat(CReportBase.ReportTitle) cursor.insertText(self.title()) cursor.insertBlock() self.dumpParams(cursor, params) begDate = forceDate(params.get('begDate')) orgStructId = params.get('orgStructId') tableColumns = [ ('4%', [u'№'], CReportBase.AlignCenter), ('14%', [u'Код МО'], CReportBase.AlignCenter), ('6%', [u'Дата и время фактической госпитализации'], CReportBase.AlignCenter), ('20%', [u'Персональные данные пациента'], CReportBase.AlignCenter), ('14%', [u'Код профиля койки'], CReportBase.AlignCenter), ('14%', [u'Код отделения'], CReportBase.AlignCenter), ('14%', [u'Номер карты стационарного больного'], CReportBase.AlignCenter), ('14%', [u'Код МКБ приемного отделения'], CReportBase.AlignCenter) ] table = createTable(cursor, tableColumns) query = selectSendOrdersHospitalUrgently( getOrgStructureDescendants(orgStructId), begDate) number = 1 while query.next(): record = query.record() i = table.addRow() table.setText(i, 0, number) table.setText(i, 1, forceString(record.value('orgCurInfisCode'))) table.setText( i, 2, forceDateTime( record.value('setDate')).toString('yyyy-MM-ddThh:mm:ss')) table.setText(i, 3, getPersonInfo(record)) table.setText(i, 4, forceString(record.value('hospitalBedCode'))) table.setText(i, 5, forceString(record.value('orgStructureCode'))) table.setText(i, 6, forceString(record.value('externalId'))) table.setText(i, 7, '') number += 1 return doc
def updateMedServiceProfile(self, profileDict): tableOrganisation = self.db.table('Organisation') auth = self.api.factory.create('credentials') auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken']) auth.Organization = forceString( self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(), tableOrganisation['netrica_Code'])) profile = self.api.factory.create('profileMedService') profile.IdProfileMedService.Code = profileDict['profile'] profile.IdProfileMedService.System = '1.2.643.2.69.1.1.1.56' profile.StartDate = forceDateTime(profileDict['begDate']).toPyDateTime() profile.EndDate = forceDateTime(profileDict['endDate']).toPyDateTime() profile.Address = profileDict['address'] profile.ContactValue = profileDict['contacts'] profile.Comment = profileDict['comment'] try: responce = self.api.service.UpdateMedServiceProfile(auth, profile) if responce: return responce except WebFault, err: print unicode(err)
def dumpParams(self, cursor, params, charFormat = QtGui.QTextCharFormat()): description = self.getDescription(params) description.append(u'Тип финансирования: ДМС') description.append(u'Отделение: ' + getOrgStructureName(params.get('orgStructId', u'Все'))) description.append(u'За период: ' + forceDateTime(params.get('begDateTime')).toString('dd.MM.yyyy hh:mm') + u' по ' + forceDateTime(params.get('endDateTime')).toString('dd.MM.yyyy hh:mm')) 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 __init__(self, parent, eventId): QtCore.QObject.__init__(self, parent) db = QtGui.qApp.db self._parent = parent self._id = eventId self._record = db.getRecord('Event', '*', eventId) self.eventTypeId = forceRef(self._record.value('eventType_id')) self.eventSetDateTime = forceDateTime(self._record.value('setDate')) self.eventDate = forceDate(self._record.value('execDate')) self.personId = forceRef(self._record.value('setPerson_id')) orgId = forceRef(self._record.value('org_id')) self.orgId = orgId if orgId else QtGui.qApp.currentOrgId() self.personSpecialityId = forceRef(db.translate('Person', 'id', self.personId, 'speciality_id')) self.contractId = forceRef(self._record.value('contract_id')) if self.contractId: self.eventFinanceId = forceRef(db.translate('Contract', 'id', self.contractId, 'finance_id')) else: self.eventFinanceId = getEventFinanceId(self.eventTypeId) self.clientId = forceRef(self._record.value('client_id')) self.clientInfo = getClientInfo(self.clientId) try: clientKLADRCode = self.clientInfo.regAddressInfo.KLADRCode except: clientKLADRCode = '' if KLADRMatch(clientKLADRCode, QtGui.qApp.defaultKLADR()): self.clientType = CFakeEventEditor.ctLocal elif KLADRMatch(clientKLADRCode, QtGui.qApp.provinceKLADR()): self.clientType = CFakeEventEditor.ctProvince else: self.clientType = CFakeEventEditor.ctOther self.clientSex = self.clientInfo.sexCode self.clientBirthDate = self.clientInfo.birthDate self.clientAge = calcAgeTuple(self.clientBirthDate, self.eventDate) workRecord = getClientWork(self.clientId) self.clientWorkOrgId = forceRef(workRecord.value('org_id')) if workRecord else None self.clientPolicyInfoList = [] policyRecord = self.clientInfo.compulsoryPolicyRecord if policyRecord: self.clientPolicyInfoList.append(self.getPolicyInfo(policyRecord)) policyRecord = self.clientInfo.voluntaryPolicyRecord if policyRecord: self.clientPolicyInfoList.append(self.getPolicyInfo(policyRecord)) self.personCache = {} self.contractTariffCache = CContractTariffCache()
def applyAllUpdates(self, updatesDict): u""" Замена обновленных экшенов и добавление новых """ for record, action in self._items: actionId = forceInt(record.value('id')) if actionId in updatesDict.keys(): if forceDateTime(updatesDict[actionId][0].value( 'createDatetime')) < self.__openDatetime: idx = self._items.index((record, action)) self._items.remove((record, action)) self._items.insert(idx, updatesDict[actionId]) else: self._items.append(updatesDict[actionId])
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 setRecord(self, record): CItemEditorBaseDialog.setRecord(self, record) dt = forceDateTime(record.value('dateMessage')) self.edtDateMessage.setMinimumDateTime(dt) self.edtDateMessage.setDateTime(dt) self.cmbAgreementType.setValue( forceInt(record.value('agreementType_id'))) self.cmbResponsiblePerson.setValue( forceInt(record.value('responsiblePerson_id'))) self.edtCosignatory.setText(forceString(record.value('cosignatory'))) self.edtCosignatoryPost.setText( forceString(record.value('cosignatoryPost'))) self.edtCosignatoryName.setText( forceString(record.value('cosignatoryName'))) self.edtRemark.setPlainText(forceString(record.value('remark')))
def loadData(self, orgStructureId, jobTypeId, date): self.items = [] try: #FIXME: atronah: tableItems.changed - это функция (CJobPlanItem.changed()), а не атрибут типа bool if self.tableItems.changed() or (self.tableItems and (not self.tableItems.record or not self.tableItems.tickets)): self.tableItems.updateRecord(orgStructureId, jobTypeId, date) for ticket in self.tableItems.tickets: dateTime = forceDateTime(ticket.value('datetime')) item = [ dateTime.time(), forceBool(ticket.value('status')), forceRef(ticket.value('id')), forceRef(ticket.value('master_id')), dateTime.date() ] self.items.append(item) finally: self.reset()
def getData(self, query, params): data = {} while query.next(): record = query.record() clientId = forceInt(record.value('client_id')) eventId = forceInt(record.value('event_id')) isPrimary = forceInt(record.value('isPrimary')) orgStructureId = forceInt(record.value('orgStructure_id')) execDate = forceDateTime(record.value('execDate')) MKB = forceString(record.value('MKB'))[:3] data.setdefault(clientId, []).append({ 'eventId': eventId, 'isPrimary': isPrimary, 'orgStructureId': orgStructureId, 'execDate': execDate, 'MKB': MKB }) sortedData = {} for clientId, eventList in data.iteritems(): primaryFound = False for event in eventList: if not event.get('isPrimary') in [1, 2]: continue if event.get('isPrimary') == 2 and not event.get('MKB'): continue if primaryFound and event.get('isPrimary') == 1: continue if not primaryFound and event.get('isPrimary') == 1: primaryFound = True sortedData.setdefault(clientId, {}).setdefault( event.get('MKB'), event) if event.get('isPrimary') == 2: sortedData.setdefault(clientId, {}).setdefault( event.get('MKB'), event) for clientId in sortedData.iterkeys(): if u'' in sortedData[clientId] and len(sortedData[clientId]) > 2: sortedData[clientId].pop(u'') if u'' in sortedData[clientId] and len(sortedData[clientId]) == 2: sortedData[clientId][u'']['MKB'] = sortedData[clientId][ sortedData[clientId].keys()[1]]['MKB'] sortedData[clientId][u'']['isPrimary'] = 2 sortedData[clientId].pop(sortedData[clientId].keys()[1]) self.createTempTable(sortedData) hospitalData = self.getHospitalData(params) return hospitalData
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 getQueueInfo(self, profileCode): tableOrganisation = self.db.table('Organisation') auth = self.api.factory.create('credentials') auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken']) auth.Organization = forceString( self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(), tableOrganisation['netrica_Code'])) options = self.api.factory.create('options') options.ReferralInfo.ProfileMedService.Code = profileCode options.ReferralInfo.ProfileMedService.System = '1.2.643.2.69.1.1.1.56' options.DateReport = forceDateTime(QtCore.QDate.currentDate()).toPyDateTime() try: responce = self.api.service.GetQueueInfo(auth, options) if responce: return responce except WebFault, err: print unicode(err)
def sendCancellation(self, referralCode): errors = ErrorList() if referralCode: tableReferral = self.db.table('Referral') tableOrganisation = self.db.table('Organisation') recReferral = self.db.getRecordEx(tableReferral, '*', tableReferral['netrica_id'].eq(referralCode)) recOrganisation = self.db.getRecordEx(tableOrganisation, '*', tableOrganisation['id'].eq(QtGui.qApp.currentOrgId())) if not forceInt(recOrganisation.value('isMedical')) in (1, 2): errors.addError(u'У выбраной в умолчаниях организации поле isMedical должно быть 1 или 2') if errors.getErrors(): errors.showError() return # Авторизация auth = self.api.factory.create('credentials') auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken']) auth.Organization = forceString( self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(), tableOrganisation['netrica_Code'])) # Данные о аннулировании referral = self.api.factory.create('referral') referral.EventsInfo.Cancellation.Date = forceDateTime(QtCore.QDateTime.currentDateTime()).toPyDateTime() referral.EventsInfo.Cancellation.CancellationReason.Code = '5' referral.EventsInfo.Cancellation.CancellationReason.System = '1.2.643.2.69.1.1.1.60' if forceInt(recOrganisation.value('isMedical') == 1): referral.EventsInfo.Cancellation.CancellationSource.Code = '3' elif forceInt(recOrganisation.value('isMedical') == 2): referral.EventsInfo.Cancellation.CancellationSource.Code = '2' referral.EventsInfo.Cancellation.CancellationSource.System = '1.2.643.2.69.1.1.1.49' referral.ReferralInfo.IdMq = forceString(recReferral.value('netrica_id')) try: responce = self.api.service.Cancellation(auth, referral) if responce: return responce except WebFault, err: print unicode(err) except:
def writeOrderHospitalUrgently(self, record, number): self.writeStartElement( 'l10_orcl' ) #детализированный список сведений об экстренных госпитализациях self.writeComment( u'детализированный список сведений об экстренных госпитализациях') self.writeTextElement( 'm10_nzap', forceString(number)) #номер записи, уникален в пределах пакета self.writeComment(u'номер записи, уникален в пределах пакета') #в качестве кодов организаций везде используется ИНФИС код self.writeTextElement('m11_modcd', self.orgCode) #код МО self.writeComment(u'код МО') self.writeTextElement( 'm12_dttmfh', forceDateTime( record.value('setDate')).toString('yyyy-MM-ddThh:mm:ss') ) #дата и время фактической госпитализации self.writeComment(u'дата и время фактической госпитализации') self.writePerson(13, record) #персональные данные пациента self.writeComment(u'персональные данные пациента') hospitalBedCode = forceString(record.value('hospitalBedCode')) if hospitalBedCode: self.writeTextElement('m14_kpkcd', hospitalBedCode) #код профиля койки self.writeComment(u'код профиля койки') orgStructureCode = forceString(record.value('orgStructureCode')) if orgStructureCode: self.writeTextElement('m15_sccd', orgStructureCode) #код отделения self.writeComment(u'код отделения') self.writeTextElement( 'm16_crdnum', forceString(record.value( 'externalId'))) #номер карты стационарного больного self.writeComment(u'номер карты стационарного больного') self.writeTextElement('m17_mkbcd ', '') #код МКБ приемного отделения self.writeComment(u'код МКБ приемного отделения') # self.writeTextElement('m18_zerr', '') #служебное поле self.writeComment(u'служебное поле') self.writeEndElement()
def getItemFromRecord(self, record): begDate = forceDateTime(record.value('begDate')) endDate = forceDateTime(record.value('endDate')) bedCodeName = forceString(record.value('bedCodeName')).split(" ") directionDate = forceDateTime(record.value('directionDate')) statusObservation = forceString(record.value('statusObservation')).split(" ") statusObservationCode = forceString(statusObservation[0]) if len(statusObservation)>=1 else '' statusObservationName = forceString(statusObservation[1]) if len(statusObservation)>=2 else '' statusObservationColor = forceString(statusObservation[2]) if len(statusObservation)>=3 else '' comfortable = forceString(record.value('comfortable')) comfortableList = [] if comfortable: comfortableList = comfortable.split(" ") comfortableDate = forceDateTime(QtCore.QVariant(comfortableList[0])) if len(comfortableList)>=1 else '' comfortableStatus = forceInt(QtCore.QVariant(comfortableList[1])) if len(comfortableList)>=2 else 0 if comfortableStatus: comfortablePayStatus = getRealPayed(comfortableStatus) else: comfortablePayStatus = False birthDate = forceDate(record.value('birthDate')) ageString = forceString(calcAge(birthDate, forceDate(endDate))) ageInYears = forceInt(calcAgeInYears(birthDate, forceDate(QtCore.QDate().currentDate()))) sex = forceInt(record.value('sex')) item = {'statusObservationCode' : statusObservationCode, 'nameFinance' : forceString(record.value('nameFinance')), 'codeFinance' : forceString(record.value('codeFinance')), 'feed' : forceBool(record.value('countEventFeedId')), 'physicalActivityName' : forceString(record.value('physicalActivityName')), 'clientId' : forceRef(record.value('client_id')), 'contractInfo': '%s %s %s' % tuple(map(lambda f: forceStringEx(record.value(f)), ['contract_number', 'contract_date', 'contract_resolution'])), 'externalId' : forceString(record.value('externalId')), 'clientName' : forceString(record.value('lastName')) + u' ' + forceString(record.value('firstName')) + u' ' + forceString(record.value('patrName')), 'sex' : self.sex[sex], 'birthDateRaw' : birthDate, 'birthDate' : forceString(birthDate), 'age' : ageString, 'employable': self.employableCheck(sex, ageInYears), 'plannedEndDate' : forceDate(record.value('plannedEndDate')), 'MKB' : forceString(record.value('MKB')), 'quota': forceString(record.value('quotaCode')),#quotaTypeClassItems[forceInt(record.value('class'))][0] if forceRef(record.value('class')) >= 0 else u'', 'codeBed' : forceString(bedCodeName[0]) if len(bedCodeName)>=1 else '' + forceString(bedCodeName[2]) if len(bedCodeName)>=3 else '', 'nameBed' : forceString(bedCodeName[1]) if len(bedCodeName)>=2 else '', 'profileBed': forceString(record.value('bedProfile')), 'nameOS' : forceString(record.value('nameOS')), 'codeOS' : forceString(record.value('codeOS')), 'idOS' : forceRef(record.value('idOS')), 'namePerson' : forceString(record.value('namePerson')), 'eventId' : forceRef(record.value('eventId')), 'statusObservationName' : statusObservationName, 'actionId' : forceRef(record.value('actionId')), 'actionTypeId' : forceRef(record.value('actionType_id')), 'statusObservationColor' : statusObservationColor, 'begDate' : begDate, 'endDate' : endDate, 'begDateString' : begDate.toString('dd.MM.yyyy hh:mm'), 'endDateString' : endDate.toString('dd.MM.yyyy hh:mm'), 'begDateReceived' : forceDateTime(record.value('setDate')).toString('dd.MM.yyyy hh:mm'), 'waitingDays': directionDate.daysTo(QtCore.QDateTime.currentDateTime()) if not directionDate.date().isNull() else u'', 'isHasNotPayedActions' : forceBool(record.value('isExistsNotPayedActions')), #Определение наличия в событии клиента действий, имеющих тип финансирования ПМУ и без состояния "Оплачено" (задача 482, atronah) 'comfortableDate' : comfortableDate, 'comfortablePayStatus' : comfortablePayStatus, 'patronage': u'да' if forceBool(record.value('patronage')) else u'', 'currentCommonOSName' : forceStringEx(record.value('currentCommonOSName')), 'isUnconscious': forceInt(record.value('isUnconscious')), 'isVIP': forceInt(record.value('isVIP')), 'vipColor': forceInt(record.value('vipColor')), 'snils': formatSNILS(forceString(record.value('SNILS'))), 'directionDate': forceDate(record.value('directionDate')) } return item
def build(self, params): def selectData(params): begDate = params.get('begDate', None).toString(QtCore.Qt.ISODate) endDate = params.get('endDate', None).toString(QtCore.Qt.ISODate) db = QtGui.qApp.db tableClientVIP = db.table('ClientVIP') cond = [ tableClientVIP['createDatetime'].dateLe(endDate), tableClientVIP['createDatetime'].dateGe(begDate) ] stmt = u''' SELECT Client.clientName, ClientVIP.createDatetime, Person.name, ClientVIP.comment, 'ВЫСТАВЛЕН' AS status FROM vrbClientInfo AS Client INNER JOIN ClientVIP ON Client.id = ClientVIP.client_id AND ClientVIP.deleted = 0 INNER JOIN vrbPersonWithSpeciality AS Person ON Person.id = ClientVIP.createPerson_id WHERE %s ''' % db.joinAnd(cond) return db.query(stmt) # detailPerson = params.get('detailPerson', False) query = selectData(params) 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() tableColumns = [ ('%2', [u'№ п/п'], CReportBase.AlignRight), ('%30', [u'Фамилия, Имя, Отчество'], CReportBase.AlignLeft), ('%5', [u'VIP'], CReportBase.AlignLeft), ('%5', [u'Проставивший статус'], CReportBase.AlignLeft), ('%5', [u'Дата проставления'], CReportBase.AlignLeft), ('%5', [u'Комментарий'], CReportBase.AlignLeft) ] table = createTable(cursor, tableColumns) while query.next(): record = query.record() clientName = forceString(record.value('clientName')) createDatetime = forceDateTime(record.value('createDatetime')).toString('dd.MM.yyyy hh:mm') personName = forceString(record.value('name')) comment = forceString(record.value('comment')) status = forceString(record.value('status')) i = table.addRow() table.setText(i, 0, i) table.setText(i, 1, clientName) table.setText(i, 2, status) table.setText(i, 3, personName) table.setText(i, 4, createDatetime) table.setText(i, 5, comment) return doc
def build(self, params): def getUserIdList(params): begDate = params.get('begDate', None).toString(QtCore.Qt.ISODate) endDate = params.get('endDate', None).toString(QtCore.Qt.ISODate) db = QtGui.qApp.db tableClientVIP = db.table('ClientVIP') cond = [ tableClientVIP['createDatetime'].dateLe(endDate), tableClientVIP['createDatetime'].dateGe(begDate) ] stmt = u''' SELECT Client.clientName, ClientVIP.createDatetime, Person.name, ClientVIP.comment, 'ВЫСТАВЛЕН' AS status FROM vrbClientInfo AS Client INNER JOIN ClientVIP ON Client.id = ClientVIP.client_id INNER JOIN vrbPersonWithSpeciality AS Person ON Person.id = ClientVIP.createPerson_id WHERE %s ''' % db.joinAnd(cond) return db.query(stmt) def selectData(params): begDate = params.get('begDate', None).toString(QtCore.Qt.ISODate) endDate = params.get('endDate', None).toString(QtCore.Qt.ISODate) db = QtGui.qApp.db tableClientVIP = db.table('ClientVIP') cond = [ tableClientVIP['createDatetime'].dateLe(endDate), tableClientVIP['createDatetime'].dateGe(begDate) ] stmt = u''' SELECT Client.id AS clientId, Client.clientName, ClientVIP.createDatetime, Person.name, ClientVIP.comment, IF(ClientVIP.deleted = 0, 'ВЫСТАВЛЕН', 'СНЯТ') AS status FROM vrbClientInfo AS Client INNER JOIN ClientVIP ON Client.id = ClientVIP.client_id INNER JOIN vrbPersonWithSpeciality AS Person ON Person.id = ClientVIP.createPerson_id WHERE %s ''' % db.joinAnd(cond) return db.query(stmt) query = selectData(params) 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() tableColumns = [ ('%2', [u'№ п/п'], CReportBase.AlignRight), ('%30', [u'Фамилия, Имя, Отчество'], CReportBase.AlignLeft), ('%5', [u'VIP'], CReportBase.AlignLeft), ('%5', [u'Проставивший статус'], CReportBase.AlignLeft), ('%5', [u'Дата проставления'], CReportBase.AlignLeft), ('%5', [u'Комментарий'], CReportBase.AlignLeft) ] table = createTable(cursor, tableColumns) prevRecord = { 'prevClientId': None, 'row': None } rowNumber = 1 insertMainData = True while query.next(): record = query.record() if prevRecord['prevClientId'] is None: prevRecord['prevClientId'] = forceInt(record.value('clientId')) prevRecord['row'] = 1 currentClientId = forceInt(record.value('clientId')) clientName = forceString(record.value('clientName')) createDatetime = forceDateTime(record.value('createDatetime')).toString('dd.MM.yyyy hh:mm') personName = forceString(record.value('name')) comment = forceString(record.value('comment')) status = forceString(record.value('status')) i = table.addRow() if prevRecord['prevClientId'] != currentClientId: table.mergeCells(prevRecord['row'], 1, i - prevRecord['row'], 1) table.mergeCells(prevRecord['row'], 0, i - prevRecord['row'], 1) prevRecord['prevClientId'] = currentClientId prevRecord['row'] = i rowNumber += 1 insertMainData = True if insertMainData: table.setText(i, 0, rowNumber) table.setText(i, 1, clientName) insertMainData = False table.setText(i, 2, status) table.setText(i, 3, personName) table.setText(i, 4, createDatetime) table.setText(i, 5, comment) return doc
def setRecord(self, record): annoyingWidgets = [ self.cmbDrug, self.edtDosage, self.spbQnt, self.spbNumPerDay, self.spbDuration, self.cmbSocCodes ] for widget in annoyingWidgets: widget.blockSignals(True) # self.disconnect(self.cmbDrug, QtCore.SIGNAL('currentIndexChanged(int)'), self.drugSelected) self.edtDate.setDate(forceDateTime(record.value('dateTime')).date()) socCode = forceString(record.value('socCode')) i = self.cmbSocCodes.findData(socCode) self.cmbSocCodes.setCurrentIndex(i) pregCard = forceInt(record.value('pregCard')) if pregCard > 0: self.edtPregCard.setText(QString.number(pregCard)) #mdldml: см. i2446 financeId = forceRef(record.value('finance_id')) self.cmbFinance.setValue(financeId) if financeId: db = QtGui.qApp.db counterRecord = db.getRecordEx( 'rbCounter', '`id`', "`code`='%s'" % getBookkeeperCode(self.personId)) if not counterRecord: self.cmbFinance.setEnabled(False) self.cmbMKB.setText(forceString(record.value('mkb'))) setLineEditValue(self.edtDosage, record, 'dosage') setSpinBoxValue(self.spbQnt, record, 'qnt') setLineEditValue(self.edtSigna, record, 'signa') setSpinBoxValue(self.spbDuration, record, 'duration') setSpinBoxValue(self.spbNumPerDay, record, 'numPerDay') formularyFilter = 'master_id = %d AND isSprPC = 1' % forceInt( self.drugMasterId) if forceInt(record.value('isVk')) == 1: self.rbtnVkYes.setChecked(True) else: self.rbtnVkNo.setChecked(True) formularyFilter += ' AND federalCode IS NOT NULL' if forceInt(record.value('printMnn')) == 1: self.rbtnPrintMNN.setChecked(True) else: self.rbtnPrintTradeName.setChecked(True) self.cmbDrug.setFilter(formularyFilter, order='`name` ASC') setRBComboBoxValue(self.cmbDrug, record, 'formularyItem_id') context = CInfoContext() formularyItem = context.getInstance( CDloDrugFormularyItemInfo, forceRef(record.value('formularyItem_id'))) self.rbtnPrintMNN.setEnabled(not formularyItem.mnn.code == u'1') if forceInt(record.value('percentage')) == 50: self.rbtn50proc.setChecked(True) else: self.rbtn100proc.setChecked(True) setComboBoxValue(self.cmbTerm, record, 'term') self.cmbStatus.setCurrentIndex( self.modelRecipeStatus.getIndex(forceInt(record.value('status')))) # self.connect(self.cmbDrug, QtCore.SIGNAL('currentIndexChanged(int)'), self.drugSelected) for widget in annoyingWidgets: widget.blockSignals(False)