Пример #1
0
    def setPreferences(self, preferences):
        operatorPassword = forceString(
            getPref(preferences, 'operatorPassword', u''))
        self.setPassword(operatorPassword)
        self.chkRemeberPassword.setChecked(bool(operatorPassword))

        self.chkAutoExportDuringZReport.setChecked(
            forceBool(getPref(preferences, 'isAutoExportDuringZReport', True)))
        self.edtExportDir.setText(
            forceString(
                getPref(preferences, 'exportDir', QtCore.QDir.homePath())))
        exportEncoding = forceString(
            getPref(preferences, 'exportEncoding', 'utf8'))
        self.cmbExportFileEncoding.setCurrentIndex(
            self.cmbExportFileEncoding.findText(exportEncoding,
                                                flags=QtCore.Qt.MatchExactly))
        exportFormat = forceString(getPref(preferences, 'exportFormat', 'txt'))
        self.cmbExportFormat.setCurrentIndex(
            self.cmbExportFormat.findText(exportFormat,
                                          flags=QtCore.Qt.MatchExactly))
        self.chkFillPersonDocument.setChecked(
            forceBool(getPref(preferences, 'fillPersonDocument', False)))

        fileNameLangCode = forceString(
            getPref(preferences, 'fileNameLangCode', u'ru'))
        fileNameLangIdx = 0
        if fileNameLangCode in self.fileNameLanguages['codes']:
            fileNameLangIdx = self.fileNameLanguages['codes'].index(
                fileNameLangCode)
        self.cmbFileNameLanguage.setCurrentIndex(fileNameLangIdx)

        self.chkDoublePrintCheck.setChecked(
            forceBool(getPref(preferences, 'doublePrintCheck', False)))
Пример #2
0
 def _initByRecord(self, record):
     self._temporary = forceBool(record.value('temporary'))
     self._outcome = forceBool(record.value('outcome'))
     self._grp = forceInt(record.value('grp'))
     from Events.EventInfo import CFinanceInfo
     self._finance = self.getInstance(CFinanceInfo,
                                      forceRef(record.value('finance_id')))
Пример #3
0
 def setParams(self, params):
     self.edtBegDate.setDate(
         params.get('begDate', QtCore.QDate.currentDate()))
     self.edtEndDate.setDate(
         params.get('endDate', QtCore.QDate.currentDate()))
     self.cmbEventType.setValue(params.get('eventTypeId', None))
     self.cmbOrgStructure.setValue(params.get('orgStructureId', None))
     self.cmbFinance.setValue(params.get('financeId', None))
     self.cmbDiagnosisType.setValue(params.get('diagnosisType', None))
     MKBFilter = params.get('MKBFilter', 0)
     self.cmbMKBFilter.setCurrentIndex(MKBFilter if MKBFilter else 0)
     self.edtMKBFrom.setText(params.get('MKBFrom', 'A00'))
     self.edtMKBTo.setText(params.get('MKBTo', 'Z99.9'))
     MESFilter = params.get('MESFilter', 0)
     self.cmbMES.setCurrentIndex(MESFilter)
     self.edtMESFrom.setText(params.get('MESFrom', ''))
     self.edtMESTo.setText(params.get('MESTo', ''))
     self.cmbResult.setCurrentIndex(params.get('result', 0))
     arg = params.get('outputColumns', False)
     if type(arg) == QtCore.QVariant:
         arg = arg.toPyObject()
     if set(columns.keys()) == set(arg.keys()):
         for key in columns.keys():
             try:
                 self.callObjectAtributeMethod(
                     'chk%s' % key, 'setChecked',
                     forceBool(arg[key.lower()]) if arg else True)
             except KeyError:
                 self.callObjectAtributeMethod(
                     'chk%s' % key, 'setChecked',
                     forceBool(arg[key]) if arg else True)
Пример #4
0
    def processRecord(self, record, reportData, forcekeyVal, rowSize):
        rowKey = forcekeyVal(record.value('rowKey'))
        clientAge = forceInt(record.value('clientAge'))
        isVillager = forceBool(record.value('isVillager'))
        category = forceInt(record.value('category'))
        hasActionByIllness = forceBool(record.value('hasActionByIllness'))
        cnt = forceInt(record.value('cnt'))

        row = reportData.setdefault(rowKey, [0] * rowSize)
        if category in [2, 3, 4, 5]:
            row[0] += cnt
            if isVillager:
                row[1] += cnt
            if clientAge < 18:
                row[2] += cnt
            if category == 2 and hasActionByIllness:
                if isVillager:
                    row[3] += cnt
                if clientAge >= 18:
                    row[4] += cnt
                else:
                    row[5] += cnt
        elif category in [6, 7, 8]:
            row[6] += cnt
            if isVillager:
                row[7] += cnt
            if clientAge < 18:
                row[9] += cnt
            if category in [6, 7] and hasActionByIllness:
                row[8] += cnt
                if clientAge < 18:
                    row[10] += cnt
Пример #5
0
 def setParams(self):
     currentDate = QtCore.QDate().currentDate()
     month = currentDate.month()
     year = currentDate.year()
     begDate = forceDate(
         getVal(QtGui.qApp.preferences.appPrefs, 'begDate', None))
     if not begDate:
         begDate = QtCore.QDate(year, month, 1)
     self.edtBegDate.setDate(begDate)
     endDate = forceDate(
         getVal(QtGui.qApp.preferences.appPrefs, 'endDate', None))
     if not endDate:
         endDate = QtCore.QDate(year, month, 15)
     self.edtEndDate.setDate(endDate)
     self.chkTemperature.setChecked(
         forceBool(
             getVal(QtGui.qApp.preferences.appPrefs, 'chkTemperature',
                    False)))
     self.chkPulse.setChecked(
         forceBool(
             getVal(QtGui.qApp.preferences.appPrefs, 'chkPulse', False)))
     self.chkAPMax.setChecked(
         forceBool(
             getVal(QtGui.qApp.preferences.appPrefs, 'chkAPMax', False)))
     self.chkAPMin.setChecked(
         forceBool(
             getVal(QtGui.qApp.preferences.appPrefs, 'chkAPMin', False)))
     multipleDimension = forceInt(
         getVal(QtGui.qApp.preferences.appPrefs, 'multipleDimension', 0))
     if not multipleDimension:
         multipleDimension = 2
     self.edtMultipleDimension.setValue(multipleDimension)
Пример #6
0
 def on_cmbMes_editTextChanged(self, text):
     mesId = forceRef(self.cmbMes.value())
     if forceBool(mesId):
         pass
         # self.chkHTG.setEnabled(True)
     self.btnCheckMes.setEnabled(forceBool(mesId))
     self.btnShowMes.setEnabled(forceBool(mesId))
Пример #7
0
 def loadPreferences(self, preferences):
     CDialogBase.loadPreferences(self, preferences)
     self.rbByPeriod.setChecked(
         forceBool(getPref(preferences, 'byPeriod', False)))
     self.edtLeavedDate.setDate(
         forceDate(
             getPref(preferences, 'leavedDate',
                     QtCore.QDate.currentDate())))
     self.chkByReceivedDate.setChecked(
         forceBool(getPref(preferences, 'byReceivedDate', False)))
     self.edtReceivedBegDate.setDate(
         forceDate(
             getPref(preferences, 'receivedBegDate',
                     QtCore.QDate.currentDate())))
     self.edtReceivedEndDate.setDate(
         forceDate(
             getPref(preferences, 'receivedEndDate',
                     QtCore.QDate.currentDate())))
     self.chkByLeavedDate.setChecked(
         forceBool(getPref(preferences, 'byLeavedDate', True)))
     self.edtLeavedBegDate.setDate(
         forceDate(
             getPref(preferences, 'leavedBegDate',
                     QtCore.QDate.currentDate())))
     self.edtLeavedEndDate.setDate(
         forceDate(
             getPref(preferences, 'leavedEndDate',
                     QtCore.QDate.currentDate())))
     self.cmbOrgStructure.setValue(
         forceRef(
             getPref(preferences, 'orgStructureId',
                     QtGui.qApp.currentOrgStructureId())))
Пример #8
0
 def setRecord(self, record):
     CItemEditorBaseDialog.setRecord(self, record)
     self.edtCode.setText(forceString(record.value(rbCode)))
     self.edtName.setText(forceString(record.value(rbName)))
     self.chkAllowMeals.setChecked(forceBool(record.value('allow_meals')))
     self.chkNoCourting.setChecked(
         forceBool(record.value('noCourtingAtReanimation')))
    def loadPreferences(self, preferences):
        self.chkActionType.setChecked(
            forceBool(getPref(preferences, 'chkActionType', True))
            and self.chkActionType.isEnabled())
        self.chkBarCode.setChecked(
            forceBool(getPref(preferences, 'chkBarCode', True))
            and self.chkBarCode.isEnabled())
        self.chkClientBirthday.setChecked(
            forceBool(getPref(preferences, 'chkClientBirthday', True))
            and self.chkClientBirthday.isEnabled())
        self.chkClientName.setChecked(
            forceBool(getPref(preferences, 'chkClientName', True))
            and self.chkClientName.isEnabled())
        self.chkClientSex.setChecked(
            forceBool(getPref(preferences, 'chkClientSex', True))
            and self.chkClientSex.isEnabled())
        self.chkDatetime.setChecked(
            forceBool(getPref(preferences, 'chkDatetime', True))
            and self.chkDatetime.isEnabled())
        self.chkLabel.setChecked(
            forceBool(getPref(preferences, 'chkLabel', True))
            and self.chkLabel.isEnabled())
        self.chkNotes.setChecked(
            forceBool(getPref(preferences, 'chkNotes', True))
            and self.chkNotes.isEnabled())
        self.chkRowNumber.setChecked(
            forceBool(getPref(preferences, 'chkRowNumber', True))
            and self.chkRowNumber.isEnabled())
        self.chkSetPerson.setChecked(
            forceBool(getPref(preferences, 'chkSetPerson', True))
            and self.chkSetPerson.isEnabled())

        CDialogBase.loadPreferences(self, preferences)
Пример #10
0
    def loadChildren(self):
        self.timestamp = QtCore.QDateTime.currentDateTime()
        self.checkSum = self.getCheckSum()

        if not self.orgId:
            self._items = []
            return self._items

        db = QtGui.qApp.db
        table = db.table('OrgStructure')
        #        if self.purpose == COrgStructureTreePurpose.areaSelector:

        if self.filter:
            cond = self.filter
        else:
            cond = [
                table['deleted'].eq(0), table['organisation_id'].eq(self.orgId)
            ]

        if not isinstance(cond, list):
            cond = [cond]
        cond.append(table['type'].ne(99))

        mapIdToNodes = {None: (self.emptyRootName, False, False, u'')}
        mapParentIdToIdList = {}
        query = db.query(
            db.selectStmt(
                table,
                'parent_id, id, code, isArea, hasStocks, bookkeeperCode',
                where=cond,
                order='code'))
        while query.next():
            record = query.record()
            parentId = forceRef(record.value('parent_id'))
            id = forceInt(record.value('id'))
            code = forceString(record.value('code'))
            isArea = forceBool(record.value('isArea'))
            hasStocks = forceBool(record.value('hasStocks'))
            bookkeeperCode = forceString(record.value('bookkeeperCode'))
            mapIdToNodes[id] = code, isArea, hasStocks, bookkeeperCode
            idList = mapParentIdToIdList.setdefault(parentId, [])
            idList.append(id)

        if self.purpose == COrgStructureTreePurpose.areaSelector:
            filter = lambda node: node[1]
        elif self.purpose == COrgStructureTreePurpose.storageSelector:
            filter = lambda node: node[2]
        else:
            filter = None

        if filter:
            self._filterNodes(mapIdToNodes, mapParentIdToIdList, self._id,
                              filter, set())
        self._code, self._isArea, self._hasStocks, self._bookkeeperCode = mapIdToNodes[
            self._id]
        self._generateItems(mapIdToNodes, mapParentIdToIdList, self, set())
        return self._items
Пример #11
0
 def setParams(self, params):
     self.cmbEventType.setValue(params.get('eventTypeId', None))
     self.cmbOrgStructure.setValue(params.get('orgStructureId', None))
     self.lstEventType.setValues(params.get('eventTypeIdMulti', []))
     self.lstOrgStructure.setValues(params.get('orgStructureIdMulti', []))
     self.chkEventTypeMulti.setChecked(forceBool(params.get('chkEventType', False)))
     self.chkOrgStructureMulti.setChecked(forceBool(params.get('chkOrgStructure', False)))
     self.edtDays.setText(params.get('days', ''))
     self.on_chkEventTypeMulti_clicked(self.chkEventTypeMulti.isChecked())
     self.on_chkOrgStructureMulti_clicked(self.chkOrgStructureMulti.isChecked())
Пример #12
0
 def updateTotalSum(self):
     s = 0.0
     for item in self.modelDiagnostics.items():
         if forceBool(item.value('include')) and forceBool(
                 item.value('cash')):
             s += forceDouble(item.value('sum'))
     for item in self.modelActions.items():
         if forceBool(item.value('include')) and forceBool(
                 item.value('cash')):
             s += forceDouble(item.value('sum'))
     self.lblSumValue.setText('%.2f' % s)
Пример #13
0
 def on_selectionModelItems_currentChanged(self, current, previous):
     row = self.tblItems.currentIndex().row()
     items = self.tblItems.model().items()
     self.actEdit.setEnabled(
         row >= 0 and row != len(items)
         and (items[row].value('id').isNull()
              or not forceBool(items[row].value('sentToMiac'))))
     self.actDelete.setEnabled(
         row >= 0 and row != len(items)
         and not forceBool(items[row].value('sentToMiac')))
     self.actPrint.setEnabled(row != len(items))
Пример #14
0
 def setParams(self, params):
     date = QtCore.QDate.currentDate()
     self.edtReportDate.setDate(params.get('reportDate', date))
     self.edtReportDate.setMaximumDate(date)
     self.edtConfirmDate.setDate(params.get('confirmEISDate', QtCore.QDate()))
     self.cmbInsurerDoctors.setValue(params.get('insurerId', None))
     self.edtAgeFrom.setValue(params.get('ageFrom', 0))
     self.edtAgeTo.setValue(params.get('ageTo', 150))
     self.cmbSex.setCurrentIndex(params.get('sex', 0))
     self.cmbAttachmentOrgStructureId.setValue(params.get('attachmentOrgStructureId', None))
     self.chkShowRegAddress.setChecked(forceBool(params.get('isShowRegAddress', False)))
     self.chkShowLocAddress.setChecked(forceBool(params.get('isShowLocAddress', False)))
Пример #15
0
    def checkMKBCode(self, code, parentCode):
        db = QtGui.qApp.db
        error = u'Введённый код МКБ %s не входит в группу %s' % (code,
                                                                 parentCode)
        duplicate = u'Ведённый код МКБ уже существует'
        success = u'Ok'

        if not forceBool(
                db.translate('MKB_Tree', 'DiagID', parentCode, 'parent_code')):
            if code[1:4] > code[1:8]:
                return u'%s должно быть меньше чем %s' % (code[1:4], code[1:8])

            conds = ["parent_code = '%s'" % parentCode]
            if self.itemId():
                conds.append("not id = '%s'" % forceString(self.itemId()))
            recordList = db.getRecordList('MKB_Tree', [
                'Right(Left(DiagID, 4), 3) as min',
                'Left(Right(DiagID, 4), 3) as max'
            ], db.joinAnd(conds))
            if forceString(
                    recordList[0].value('min')) > code[1:4] or forceString(
                        recordList[-1].value('max')) < code[5:8]:
                return u"Ведённый диапазон %s входит в диапазон данного класса с %s-%s" % (
                    code, forceString(recordList[0].value('min')),
                    forceString(recordList[-1].value('max')))
            for record in recordList:
                minCode = forceString(record.value('min'))
                maxCode = forceString(record.value('max'))
                if not ((minCode < code[1:4] and maxCode < code[1:4]) or
                        (minCode > code[5:8] and maxCode > code[5:8])):
                    return u"Ведённый диапазон %s прересекается с (%s-%s)" % (
                        code, minCode, maxCode)
            return success

        cond = ["DiagID = '%s'" % code]
        if self.itemId():
            cond.append("not id = '%s'" % forceString(self.itemId()))
        if forceBool(
                QtGui.qApp.db.getRecordEx('MKB_Tree', 'DiagID',
                                          db.joinAnd(cond))):
            return duplicate

        if len(code) == 3:
            if parentCode[1] == code[0] \
                    and forceInt(parentCode[2:4]) <= forceInt(code[1:3]) \
                    and forceInt(parentCode[6:8]) >= forceInt((code[1:3])):
                return success

        elif len(code) > 3:
            if parentCode in code:
                return success
            return error
        return error
Пример #16
0
 def __init__(self):
     preferences = getPref(QtGui.qApp.preferences.appPrefs,
                           'MIACExchange_Stattalons', {})
     self.address = forceString(getPref(
         preferences, 'address',
         '')) or FileServiceLocator.BasicHttpBinding_IFileService_address
     self.postBoxName = forceString(
         getPref(preferences, 'postBoxName',
                 '')) or CMIACExchangePreferences.defaultPostBoxName
     self.compress = forceBool(getPref(preferences, 'compress', True))
     self.sendByDefault = forceBool(
         getPref(preferences, 'sendByDefault', False))
Пример #17
0
    def processRecord(self, record, reportData, forceKeyVal, rowSize,
                      financeIndexes):
        rowKey = forceKeyVal(record.value('rowKey'))
        cnt = forceInt(record.value('cnt'))
        atAmbulance = forceBool(record.value('atAmbulance'))
        atHome = forceBool(record.value('atHome'))
        eventGoalCode = forceString(record.value('eventGoalCode'))
        clientAge = forceInt(record.value('clientAge'))
        clientVillager = forceBool(record.value('clientVillager'))
        financeId = forceInt(record.value('financeId'))

        prophylaxy = eventGoalCode == self.prophylaxyEventGoalCode

        row = reportData.setdefault(rowKey, [0] * rowSize)

        if atAmbulance:
            row[0] += cnt
            if clientVillager:
                row[1] += cnt
            if clientAge <= 17:
                row[2] += cnt
            elif clientAge >= 60:
                row[3] += cnt
            for k in self.cureEventGoalCode:
                if eventGoalCode == k:
                    row[4] += cnt
                    if clientAge <= 17:
                        row[5] += cnt
                    elif clientAge >= 60:
                        row[6] += cnt
            if prophylaxy:
                row[7] += cnt

        elif atHome:
            row[8] += cnt
            for k in self.cureEventGoalCode:
                if eventGoalCode == k:
                    row[9] += cnt
                    if clientAge <= 1:
                        row[10] += cnt
                        row[11] += cnt
                    elif clientAge <= 17:
                        row[10] += cnt
                    elif clientAge >= 60:
                        row[12] += cnt
                elif prophylaxy:
                    if clientAge <= 17:
                        row[13] += cnt
                    elif clientAge >= 60:
                        row[14] += cnt
        if financeId in financeIndexes:
            row[15 + financeIndexes[financeId]] += cnt
Пример #18
0
    def loadItems(self):
        u"""
        Загрузка данных в модель
         _tables - данные о таблицах
         _items - данные о полях с сылкой на таблицы
        """
        self._items = {}
        self._tables = {}
        db = QtGui.qApp.db
        tableTable = db.table(self.tableTableName)
        tableField = db.table(self.tableFieldName)

        cond = []
        if tableField.hasField('deleted'):
            cond.append(tableField['deleted'].eq(0))

        cols = [
            'id', 'name', 'field', 'rcTable_id', 'ref_id', 'description',
            'visible'
        ]

        recordList = db.getRecordList(tableField, cols, cond, order=self.order)
        for record in recordList:
            visible = forceBool(record.value('visible'))
            if not visible:
                continue
            self._items[forceString(record.value('id'))] = {
                'name': forceString(record.value('name')),
                'field': forceString(record.value('field')),
                'tableId': forceRef(record.value('rcTable_id')),
                'refId': forceString(record.value('ref_id')),
                'description': forceString(record.value('description')),
                'visible': forceBool(record.value('visible'))
            }

        cond = []
        if tableTable.hasField('deleted'):
            cond.append(tableTable['deleted'].eq(0))
        cols = [
            tableTable['id'], tableTable['name'], tableTable['table'],
            tableTable['group']
        ]
        recordList = db.getRecordList(tableTable, cols, cond)
        for record in recordList:
            self._tables[forceRef(record.value('id'))] = {
                'table': forceString(record.value('table')),
                'tableName': forceString(record.value('name')),
                'group': forceString(record.value('group')),
            }
Пример #19
0
 def _initByRecord(self, record):
     self._groupId = forceRef(record.value('group_id'))
     self._eisLegacy = forceBool(record.value('eisLegacy'))
     self._license = forceBool(record.value('license'))
     self._infis = forceString(record.value('infis'))
     self._begDate = CDateInfo(record.value('begDate'))
     self._endDate = CDateInfo(record.value('endDate'))
     self._qualityLevel = forceInt(record.value('qualityLevel'))
     self._medicalAidProfile = self.getInstance(
         CMedicalAidProfileInfo,
         forceRef(record.value('medicalAidProfile_id')))
     self._medicalAidKind = self.getInstance(
         CMedicalAidKindInfo, forceRef(record.value('medicalAidKind_id')))
     self._medicalAidType = self.getInstance(
         CMedicalAidTypeInfo, forceRef(record.value('medicalAidType_id')))
Пример #20
0
        def processReceived(record):
            orgStructureId = forceRef(record.value('orgStructureId'))
            financeCode = forceString(record.value('financeCode'))
            isUrgent = forceBool(record.value('isUrgent'))
            deliveredBy = forceInt(record.value('deliveredBy'))
            isMoscowResident = forceBool(record.value('isMoscowResident'))
            received = forceInt(record.value('received'))
            veterans = forceInt(record.value('veterans'))

            dataRow = reportData[orgStructureId]

            dataRow[columnIndex['received']] += received
            if not isMoscowResident:
                dataRow[columnIndex['receivedNonMoscow']] += received

            if isUrgent:
                dataRow[columnIndex['isUrgent']] += received
                if not isMoscowResident:
                    dataRow[columnIndex['isUrgentNonMoscow']] += received

            if deliveredBy:
                dataRow[deliveredByIndex[deliveredBy]] += received
                if not isMoscowResident:
                    dataRow[deliveredByIndex[deliveredBy]] += received

            dataRow[columnIndex['veterans']] += veterans

            if financeCode in nonBudgetFinanceCodes:
                financeDataRow = reportFinanceData[financeCode]

                financeDataRow[columnIndex['received']] += received
                if not isMoscowResident:
                    financeDataRow[
                        columnIndex['receivedNonMoscow']] += received

                if isUrgent:
                    financeDataRow[columnIndex['isUrgent']] += received
                    if not isMoscowResident:
                        financeDataRow[
                            columnIndex['isUrgentNonMoscow']] += received

                if deliveredBy:
                    financeDataRow[deliveredByIndex[deliveredBy]] += received
                    if not isMoscowResident:
                        financeDataRow[
                            deliveredByIndex[deliveredBy]] += received

                financeDataRow[columnIndex['veterans']] += veterans
Пример #21
0
 def initByRecord(self, record):
     self._begPerson = self.getInstance(
         CPersonInfo, forceRef(record.value('begPerson_id')))
     self._begDate = CDateInfo(forceDate(record.value('begDate')))
     self._endPerson = self.getInstance(
         CPersonInfo, forceRef(record.value('endPerson_id')))
     self._endDate = CDateInfo(forceDate(record.value('endDate')))
     self._numberPermit = forceString(record.value('numberPermit'))
     self._begDatePermit = CDateInfo(
         forceDate(record.value('begDatePermit')))
     self._endDatePermit = CDateInfo(
         forceDate(record.value('endDatePermit')))
     self._isExternal = forceBool(record.value('isExternal'))
     self._regime = self.getInstance(CTempInvalidRegimeInfo,
                                     forceRef(record.value('regime_id')))
     self._break = self.getInstance(CTempInvalidBreakInfo,
                                    forceRef(record.value('break_id')))
     self._breakDate = CDateInfo(forceDate(record.value('breakDate')))
     self._note = forceString(record.value('note'))
     self._result = self.getInstance(CTempInvalidResultInfo,
                                     forceRef(record.value('result_id')))
     self._directDateOnKAK = CDateInfo(
         forceDate(record.value('directDateOnKAK')))
     self._expert = self.getInstance(CPersonInfo,
                                     forceRef(record.value('expert_id')))
     self._dateKAK = CDateInfo(forceDate(record.value('dateKAK')))
     self._begDateHospital = CDateInfo(
         forceDate(record.value('begDateHospital')))
     self._endDateHospital = CDateInfo(
         forceDate(record.value('endDateHospital')))
Пример #22
0
    def loadLogicalDeviceInfo(self):
        if not self._ecrDriver:
            return

        deviceSettings = self._ecrDriver.DevicesSettings
        deviceSettingsInfo = dict(re.findall(ur'(?P<name>[\w0-9]+)=(?P<value>[\w0-9]+)', deviceSettings))

        countDevices = forceInt(deviceSettingsInfo.get('Count', 0))
        currentDeviceNumber = forceInt(deviceSettingsInfo.get('CurrentDeviceNumber', -1))
        if currentDeviceNumber not in xrange(countDevices):
            return

        for deviceIndex in xrange(countDevices):
            if forceInt(deviceSettingsInfo.get('DeviceNumber%d' % deviceIndex, -1)) != currentDeviceNumber:
                continue
            self._ecrDriver.CurrentDeviceIndex = deviceIndex
            self._ecrDriver.CurrentDeviceNumber = currentDeviceNumber
            if deviceSettingsInfo.has_key('MachineNumber%d' % deviceIndex):
                self._ecrDriver.MachineName = forceString(deviceSettingsInfo['MachineNumber%d' % deviceIndex])
            if deviceSettingsInfo.has_key('PortNumber%d' % deviceIndex):
                self._ecrDriver.PortNumber = forceInt(deviceSettingsInfo['PortNumber%d' % deviceIndex])
            if deviceSettingsInfo.has_key('BaudRate%d' % deviceIndex):
                self._ecrDriver.BaudRate = forceInt(deviceSettingsInfo['BaudRate%d' % deviceIndex])
            if deviceSettingsInfo.has_key('Model%d' % deviceIndex):
                self._ecrDriver.Model = forceString(deviceSettingsInfo['Model%d' % deviceIndex])
            if deviceSettingsInfo.has_key('AccessPassword%d' % deviceIndex):
                self._ecrDriver.AccessPassword = forceString(deviceSettingsInfo['AccessPassword%d' % deviceIndex])
            if deviceSettingsInfo.has_key('UseAccessPassword%d' % deviceIndex):
                self._ecrDriver.UseAccessPassword = forceBool(deviceSettingsInfo['UseAccessPassword%d' % deviceIndex])
            if deviceSettingsInfo.has_key('WriteLogFile%d' % deviceIndex):
                self._ecrDriver.WriteLogFile = forceInt(deviceSettingsInfo['WriteLogFile%d' % deviceIndex])
Пример #23
0
    def exportInt(self):
        dbf, query = self.prepareToExport()

        insurerCode = forceString(
            QtGui.qApp.db.translate('Organisation', 'id',
                                    self.cmbInsurer.value(), 'infisCode'))

        self.log(u'ЛПУ: код инфис: "%s".' % insurerCode)

        if not insurerCode:
            self.log(u'<b><font color=red>ОШИБКА</font></b>:'
                     u'Для текущего ЛПУ не задан код инфис')

        self.exportedClients = set()

        # Составляем множество событий, содержащих услуги с модернизацией
        query.exec_()  # встаем перед первой записью

        while query.next():
            QtGui.qApp.processEvents()
            record = query.record()
            if self.aborted:
                break
            if not forceBool(record.value('bookkeeperCode')):
                self.log(
                    u'<b><font color=red>ОШИБКА</font></b>:'
                    u'Для подразделения %s не указан код бухгалтерии. Данные выгружены не будут.'
                    % forceString(record.value('orgStructureName')))
                continue
            self.progressBar.step()
            self.process(dbf, record, insurerCode)
        dbf.close()
Пример #24
0
    def loadData(self):
        def addGap(gapList, record):
            bTime = forceTime(record.value('begTime'))
            eTime = forceTime(record.value('endTime'))
            if bTime < eTime:
                gapList.append((bTime, eTime))
            elif bTime > eTime:
                gapList.append((bTime, QtCore.QTime(23, 59, 59, 999)))
                gapList.append((QtCore.QTime(0, 0), eTime))

        db = QtGui.qApp.db
        orgStructureBaseId = self.orgStructureId
        result = []
        orgStructureId = orgStructureBaseId
        while orgStructureId:
            recordsOrgStructureGap = db.getRecordList('OrgStructure_Gap', 'begTime, endTime',  'master_id=%d' %(orgStructureId), 'begTime, endTime')
            for record in recordsOrgStructureGap:
                addGap(result, record)
            recordInheritGaps = db.getRecordEx('OrgStructure', 'inheritGaps', 'id=%d'%(orgStructureId))
            inheritGaps = forceBool(recordInheritGaps.value(0)) if recordInheritGaps else (False if recordsOrgStructureGap else True)
            if not inheritGaps:
                break
            orgStructureId = forceRef(db.translate('OrgStructure', 'id', orgStructureId, 'parent_id'))
        result.sort()
        for begTimeGap, endTimeGap in result:
            item = [  begTimeGap,
                      endTimeGap
                   ]
            self.items.append(item)
        self.reset()
Пример #25
0
    def __init__(self, parent):
        CItemEditorBaseDialog.__init__(self, parent, 'rbMenu')
        self.addModels('MenuContent', CMenuContent(self))
        self.setupUi(self)
        self.setWindowFlags(QtCore.Qt.Dialog
                            | QtCore.Qt.WindowMaximizeButtonHint
                            | QtCore.Qt.WindowCloseButtonHint)
        self.setWindowTitleEx(u'Шаблон питания')
        self.setModels(self.tblMenuContent, self.modelMenuContent,
                       self.selectionModelMenuContent)
        self.setupDirtyCather()
        self.cmbDiet.setTable('rbDiet')
        self.cmbCourtingDiet.setTable('rbDiet')

        # self.addObject('actDelRows', QtGui.QAction(u'Удалить выделенные строки', self))
        # self.addObject('mnuMenuContent', QtGui.QMenu(self))
        # self.mnuMenuContent.addAction(self.actDelRows)
        # self.tblMenuContent.setPopupMenu(self.mnuMenuContent)
        db = QtGui.qApp.db
        tableRBDiet = db.table('rbDiet')
        records = db.getRecordList(tableRBDiet)
        self.dietMap = {}
        for record in records:
            dietId = forceInt(record.value('id'))
            dietCode = forceString(record.value('code'))
            dietName = forceString(record.value('name'))
            allowMeals = forceBool(record.value('allow_meals'))
            self.dietMap[dietId] = {
                'code': dietCode,
                'name': dietName,
                'allow_meals': allowMeals
            }
        self.tblMenuContent.addPopupDelRow()
Пример #26
0
 def on_actDelete_triggered(self):
     row = self.tblItems.selectionModel().currentIndex().row()
     if row < self.tblItems.model().rowCount() - 1:
         item = self.tblItems.model().items()[row]
         if not forceBool(item.value('sentToMiac')):
             self.tblItems.model().removeRows(row, 1)
             self.tblItems.model().reset()
Пример #27
0
    def setRecord(self, record):
        CItemEditorBaseDialog.setRecord(self, record)
        setLineEditValue(self.edtCode, record, 'code')
        setLineEditValue(self.edtName, record, 'name')
        setRBComboBoxValue(self.cmbUnit, record, 'unit_id')
        setRBComboBoxValue(self.cmbGroup, record, 'group_id')

        if self.otherTable:
            setLineEditValue(self.edtMnn, record, 'MNN')
            setLineEditValue(self.edtMnnLat, record, 'latinMNN')
        else:
            setLineEditValue(self.edtMnn, record, 'mnn')
            setLineEditValue(self.edtMnnLat, record, 'latinMnn')

        setLineEditValue(self.edtTradeName, record, 'tradeName')
        setLineEditValue(self.edtIssueForm, record, 'issueForm')
        setLineEditValue(self.edtIssueFormLat, record, 'latinIssueForm')
        setLineEditValue(self.edtConcentration, record, 'concentration')
        if forceBool(record.value('isDrugs')):
            self.rbtnIsDrugYes.setChecked(True)
        else:
            self.rbtnIsDrugNo.setChecked(True)
        setRBComboBoxValue(self.cmbBaseUnit, record, 'baseUnit_id')
        setRBComboBoxValue(self.cmbMinIndivUnit, record,
                           'minIndivisibleUnit_id')
        setLineEditValue(self.edtBaseUnitsInMinIndiv, record,
                         'baseUnitsInMinIndivisibleUnit')
        setLineEditValue(self.edtMinIndivInPacking, record,
                         'minIndivisibleUnitsInPackingUnit')
        setRBComboBoxValue(self.cmbPackingUnit, record, 'packingUnit_id')
Пример #28
0
    def setClientId(self, clientId):
        self.clientId = clientId
        if clientId:
            if u'онко' in forceString(QtGui.qApp.db.translate('Organisation', 'id', QtGui.qApp.currentOrgId(), 'infisCode')):
                vipRecord = QtGui.qApp.db.getRecordEx(
                    QtGui.qApp.db.table('ClientVIP'),
                    [
                        QtGui.qApp.db.table('ClientVIP')['client_id'],
                        QtGui.qApp.db.table('ClientVIP')['color']
                    ],
                    [
                        QtGui.qApp.db.table('ClientVIP')['deleted'].eq(0),
                        QtGui.qApp.db.table('ClientVIP')['client_id'].eq(self.clientId)
                    ]
                )

                self.isVipClient = forceBool(vipRecord);
                if self.isVipClient:
                    self.vipColor = forceString(vipRecord.value('color'))

            self.txtClientInfoBrowser.setHtml(getClientBanner(clientId))
            self.checkVipPerson(self.txtClientInfoBrowser)
            db = QtGui.qApp.db
            table = db.table('Client')
            record = db.getRecord(table, 'sex, birthDate', clientId)
            if record:
                self.clientSex = forceInt(record.value('sex'))
                self.clientBirthDate = forceDate(record.value('birthDate'))
                self.clientAge = calcAgeTuple(self.clientBirthDate, self.date)
        else:
            self.txtClientInfoBrowser.setText('')
Пример #29
0
    def __init__(self, parent, idList):
        CDialogBase.__init__(self, parent)
        self.setupUi(self)

        db = QtGui.qApp.db

        self._syncDatetime = None
        self._deathAttachTypeId = forceRef(db.translate('rbAttachType', 'code', '8', 'id'))

        self._attachedIdList = []
        self._deattachedIdList = []
        if idList:
            tableACI = db.table('AttachedClientInfo')
            cols = [
                tableACI['id'],
                db.makeField(tableACI['endDate'].isNull()).alias('toAttach')
            ]
            for rec in db.iterRecordList(tableACI, cols, tableACI['id'].inlist(idList)):
                id = forceRef(rec.value('id'))
                if forceBool(rec.value('toAttach')):
                    self._attachedIdList.append(id)
                else:
                    self._deattachedIdList.append(id)

        self.edtSelectedA.setText(str(len(self._attachedIdList)))
        self.edtSelectedD.setText(str(len(self._deattachedIdList)))

        self.resetProgressBar()

        self.setWindowTitle(u'Синхронизация с ТФОМС')
Пример #30
0
    def getReportData(self, orgStructureIdList):
        db = self.db
        tableOrgStructure = db.table('OrgStructure')

        orgStructurePath = db.func.getOrgStructurePath(tableOrgStructure['id'])
        cols = [
            tableOrgStructure['id'], tableOrgStructure['name'],
            db.makeField(tableOrgStructure['isArea'].ne(
                COrgStructureAreaInfo.No)).alias('isArea'),
            orgStructurePath.alias('path')
        ]
        cond = [tableOrgStructure['id'].inlist(orgStructureIdList)]
        order = [orgStructurePath.desc(), tableOrgStructure['name']]

        isArea = {}
        name = {}
        count = {}
        path = {}
        for rec in db.iterRecordList(tableOrgStructure,
                                     cols,
                                     cond,
                                     order=order):
            orgStructureId = forceRef(rec.value('id'))
            path[orgStructureId] = forceString(rec.value('path'))
            isArea[orgStructureId] = forceBool(rec.value('isArea'))
            name[orgStructureId] = forceString(rec.value('name'))
            count[orgStructureId] = getAttachedCount(orgStructureId)

        idList = sorted(
            count.keys(),
            key=lambda orgStructureId:
            (-path[orgStructureId].count('.'), name[orgStructureId]))
        return [(isArea[orgStructureId], name[orgStructureId],
                 count[orgStructureId]) for orgStructureId in idList]