예제 #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
파일: Utils.py 프로젝트: dio4/vista_1
 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
파일: RBDiet.py 프로젝트: dio4/vista_1
 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
파일: MKB.py 프로젝트: dio4/vista_1
    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
파일: Preferences.py 프로젝트: dio4/vista_1
 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
파일: RBMenu.py 프로젝트: dio4/vista_1
    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]