コード例 #1
0
ファイル: ImportEISOMS_SMP.py プロジェクト: dio4/vista_1
 def addVisit(self, record):
     db = QtGui.qApp.db
     try:
         visit = db.table('Visit').newRecord()
         eventId = self.addIfNotExistEvent(record)
         visit.setValue('event_id', eventId)
         self.addDiagnostic(record, eventId)
         self.addIfNotExistEmergencyCall(record, eventId)
         visit.setValue('date', toVariant(forceDate(record['begDate'])))
         visit.setValue('visitType_id', self.visitTypeId)
         visit.setValue('person_id', forceRef(record['personId']))
         visit.setValue('scene_id', self.sceneId)
         visit.setValue('finance_id', CFinanceType.getId(CFinanceType.CMI))
         visit.setValue('service_id', self.getServiceId(record))
         self.visits += 1
         return forceRef(db.insertRecord(db.table('Visit'), visit))
     except Exception as ex:
         self.logBrowser.append(u'<b><font color=red>ОШИБКА:</b> ' +
                                u'\nСтрока: {0:d} ФИО: {1:s} \n'.format(
                                    self.i,
                                    forceString(record['lastName']) + u' ' +
                                    forceString(record['firstName']) +
                                    u' ' + forceString(record['patrName']) +
                                    u' ' + forceDate(record['birthDate']).
                                    toString(QtCore.Qt.ISODate)) +
                                ex.message + u'\n')
         self.btnImport.setEnabled(True)
         db.rollback()
         raise
コード例 #2
0
ファイル: ReportLeavedMovedDead.py プロジェクト: dio4/vista_1
 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())))
コード例 #3
0
ファイル: TempInvalidInfo.py プロジェクト: dio4/vista_1
 def initByRecord(self, record):
     self._type = forceInt(record.value('type'))
     self._doctype = self.getInstance(CTempInvalidDocTypeInfo,
                                      forceRef(record.value('doctype_id')))
     self._reason = self.getInstance(
         CTempInvalidReasonInfo,
         forceRef(record.value('tempInvalidReason_id')))
     self._extraReason = self.getInstance(
         CTempInvalidExtraReasonInfo,
         forceRef(record.value('tempInvalidExtraReason_id')))
     self._busyness = forceInt(record.value('busyness'))
     self._placeWork = forceString(record.value('placeWork'))
     self._serial = forceString(record.value('serial'))
     self._number = forceString(record.value('number'))
     self._sex = formatSex(forceInt(record.value('sex')))
     self._age = forceInt(record.value('age'))
     self._employmentService = forceBool(record.value('employmentService'))
     self._duration = forceInt(record.value('duration'))
     self._externalDuration = 0
     self._begDate = CDateInfo(forceDate(record.value('begDate')))
     self._endDate = CDateInfo(forceDate(record.value('endDate')))
     self._person = self.getInstance(CPersonInfo,
                                     forceRef(record.value('person_id')))
     self._closed = forceInt(record.value('closed'))
     self._MKB = self.getInstance(CMKBInfo,
                                  forceString(record.value('MKB')))
     self._MKBEx = self.getInstance(CMKBInfo,
                                    forceString(record.value('MKBEx')))
     prev_id = forceRef(record.value('prev_id'))
     if prev_id:
         self._prev = self.getInstance(CTempInvalidInfo, prev_id)
     self._periods = self.getInstance(CTempInvalidPeriodInfoList, self.id)
コード例 #4
0
ファイル: ImportEISOMS_SMP.py プロジェクト: dio4/vista_1
 def addIfNotExistEvent(self, record):
     db = QtGui.qApp.db
     id = forceRef(
         db.translateEx('Event', 'externalId', record['externalId'], 'id'))
     if id:
         self.clientId = forceRef(
             db.translateEx('Event', 'id', id, 'client_id'))
         return id
     else:
         event = db.table('Event').newRecord()
         event.setValue('externalId', record['externalId'])
         event.setValue('eventType_id', self.eventTypeId)
         event.setValue('org_id', self.getOrganisationId(record))
         self.clientId = self.addIfNotExistClient(record)
         event.setValue('client_id', self.clientId)
         # event.setValue('contract_id', ) #Нет
         event.setValue('setDate', toVariant(forceDate(record['begDate'])))
         event.setValue('execDate', toVariant(forceDate(record['endDate'])))
         event.setValue('execPerson_id', forceRef(record['personId']))
         event.setValue('createPerson_id', forceRef(record['personId']))
         event.setValue('result_id', self.getEventResultId(record))
         event.setValue('littleStranger_id',
                        self.addEventLittleStranger(record))
         event.setValue('goal_id', self.getGoalId(record))
         self.events += 1
         return forceRef(db.insertRecord(db.table('Event'), event))
コード例 #5
0
    def loadData(self, clientId, showAccomp, showModified):
        self.items = []
        if clientId:
            db = QtGui.qApp.db
            tableDiagnosis = db.table('Diagnosis')
            tableDispanser = db.table('rbDispanser')
            table = tableDiagnosis.leftJoin(
                tableDispanser,
                tableDispanser['id'].eq(tableDiagnosis['dispanser_id']))
            cols = [
                tableDiagnosis['id'], tableDiagnosis['MKB'],
                tableDiagnosis['MKBEx'], tableDiagnosis['morphologyMKB'],
                tableDiagnosis['setDate'], tableDiagnosis['endDate'],
                tableDispanser['observed'], tableDiagnosis['mod_id'],
                tableDiagnosis['diagnosisType_id'],
                tableDiagnosis['character_id']
            ]
            cond = [
                tableDiagnosis['client_id'].eq(clientId),
                tableDiagnosis['character_id'].eq(self.characterId),
                tableDiagnosis['deleted'].eq(0)
            ]
            dtIdList = [self.dtidBase]
            if showAccomp:
                dtIdList.append(self.dtidAcomp)
            if showModified:
                dtIdList.append(self.dtidModified)
            cond.append(tableDiagnosis['diagnosisType_id'].inlist(dtIdList))
            if not showModified:
                cond.append(tableDiagnosis['mod_id'].isNull())


#            if self.limitDate:
#                cond.append(tableDiagnosis['endDate'].ge(getLimitDate()))

            records = db.getRecordList(
                table, cols, cond, tableDiagnosis['endDate'].name() + ' DESC')
            for record in records:
                id = forceRef(record.value('id'))
                MKB = forceString(record.value('MKB'))
                MKBEx = forceString(record.value('MKBEx'))
                morphologyMKB = forceString(record.value('morphologyMKB'))
                setDate = forceDate(record.value('setDate'))
                endDate = forceDate(record.value('endDate'))
                observed = forceBool(record.value('observed'))
                modId = forceRef(record.value('mod_id'))
                diagnosisTypeId = forceRef(record.value('diagnosisType_id'))
                characterId = forceRef(record.value('character_id'))
                item = [(MKB + '+' + MKBEx) if MKBEx else MKB,
                        forceString(setDate),
                        forceString(endDate),
                        formatBool(observed), MKB, MKBEx,
                        diagnosisTypeId != self.dtidBase,
                        bool(modId) or diagnosisTypeId == self.dtidModified,
                        None, id]
                if self.colAdd:
                    item.insert(1, morphologyMKB)
                self.items.append(item)
        self.reset()
コード例 #6
0
 def getActionLength(self, record, countRedDays):
     if record:
         startDate = forceDate(record.value('begDate'))
         stopDate = forceDate(record.value('endDate'))
         if startDate and stopDate:
             return getEventLengthDays(startDate, stopDate, countRedDays,
                                       self.eventEditor.eventTypeId)
     return 0
コード例 #7
0
ファイル: ImportR67XML_VM.py プロジェクト: dio4/vista_1
    def processPolicy(self, isNew, clientId, policy):
        """Запись данных о полисе пациента. Если не совпадает со старым - добавляем новую запись.

        @param isNew: пациент отсутствует в базе. Если это не так, то производится поиск полиса и определение необходимости изменения данных.
        @param clientId: id пациента
        @param policy: данные о полисе.
        @return: None
        """
        if policy:
            db = self.db
            policyType = self._cache.policyType.get(policy.PolicyTypeCode,
                                                    None)
            policyTypeId = policyType['id'] if policyType else None
            policyKind = self._cache.policyKind.get(policy.PolicyKindCode, '')
            policyKindId = policyKind['id'] if policyKind else None
            insurerId = self.getOrgIdByCode(policy.InsurerCode)

            if isNew:
                clientPolicyRecord = self.tableClientPolicy.newRecord()
            else:
                clientPolicyRecord = getClientPolicy(clientId)
                if clientPolicyRecord is None or \
                    forceString(clientPolicyRecord.value('serial')) != policy.Serial or \
                    forceString(clientPolicyRecord.value('number')) != policy.Number or \
                    forceDate(clientPolicyRecord.value('begDate')).toString(QtCore.Qt.ISODate) != policy.BegDate or \
                    forceDate(clientPolicyRecord.value('endDate')).toString(QtCore.Qt.ISODate) != policy.EndDate or \
                    forceString(clientPolicyRecord.value('name')) != policy.Name or \
                    forceRef(clientPolicyRecord.value('policyType_id')) != policyTypeId or \
                    forceRef(clientPolicyRecord.value('policyKind_id')) != policyKindId or \
                    forceRef(clientPolicyRecord.value('insurer_id')) != insurerId:

                    clientPolicyRecord = self.tableClientPolicy.newRecord()
                else:
                    return

            clientPolicyRecord.setValue('serial', toVariant(policy.Serial))
            clientPolicyRecord.setValue('number', toVariant(policy.Number))
            clientPolicyRecord.setValue(
                'begDate',
                toVariant(
                    QtCore.QDate.fromString(policy.BegDate,
                                            QtCore.Qt.ISODate)))
            clientPolicyRecord.setValue(
                'endDate',
                toVariant(
                    QtCore.QDate.fromString(policy.EndDate,
                                            QtCore.Qt.ISODate)))
            clientPolicyRecord.setValue('name', toVariant(policy.Name))
            clientPolicyRecord.setValue('insurer_id', toVariant(insurerId))
            if policyTypeId:
                clientPolicyRecord.setValue('policyType_id',
                                            toVariant(policyTypeId))
            if policyKindId:
                clientPolicyRecord.setValue('policyKind_id',
                                            toVariant(policyKindId))
            clientPolicyRecord.setValue('client_id', toVariant(clientId))

            db.insertOrUpdate(self.tableClientPolicy, clientPolicyRecord)
コード例 #8
0
def getPersonInfo(record):
    personInfo = ''
    if forceInt(record.value('policyKindCode')) == 1:
        personInfo += u'Тип документа: Полис ОМС старого образца, код ' + forceString(
            record.value('policyKindCode')) + ' ; '
    elif forceInt(record.value('policyKindCode')) == 2:
        personInfo += u'Тип документа: Временное свидетельство, код ' + forceString(
            record.value('policyKindCode')) + ' ; '
    elif forceInt(record.value('policyKindCode')) == 3:
        personInfo += u'Тип документа: Полис ОМС единого образца, код ' + forceString(
            record.value('policyKindCode')) + ' ; '
    else:
        personInfo += u'Тип документа: - , код ' + forceString(
            record.value('policyKindCode')) + ' ; '
    if forceString(record.value('policySerial')):
        personInfo += u'серия полиса: ' + forceString(
            record.value('policySerial')) + '; '
    if forceString(record.value('policyNumber')):
        personInfo += u'номер полиса: ' + forceString(
            record.value('policyNumber')) + '; '
    if forceString(record.value('orgInsInfisCode')):
        personInfo += u'код СМО: ' + forceString(
            record.value('orgInsInfisCode')) + '; '
    if forceString(record.value('orgInsArea')):
        personInfo += u'код территории страхования: ' + forceString(
            record.value('orgInsArea')) + '; '
    if forceString(record.value('lastName')) or forceString(
            record.value('firstName')) or forceString(
                record.value('patrName')):
        personInfo += u'ФИО пациента: ' + forceString(
            record.value('lastName')) + ' ' + forceString(
                record.value('firstName')) + ' ' + forceString(
                    record.value('patrName')) + '; '
    if forceInt(record.value('sex')) == 0:
        personInfo += u'пол: не определено; '
    elif forceInt(record.value('sex')) == 1:
        personInfo += u'пол: М; '
    else:
        personInfo += u'пол: Ж; '
    if forceDate(record.value('birthDate')):
        personInfo += u'дата рождения: ' + forceDate(
            record.value('birthDate')).toString('yyyy-MM-dd') + 'T00:00:00; '
    if forceString(record.value('contactName')) or forceString(
            record.value('contact')):
        personInfo += u'контактная информация: ' + forceString(
            record.value('contactName')) + ' ' + forceString(
                record.value('contact')) + '; '
    if forceString(record.value('documentSerial')):
        personInfo += u'серия документа, удостоверяющего личность: ' + forceString(
            record.value('documentSerial')) + '; '
    if forceString(record.value('documentNumber')):
        personInfo += u'номер документа, удостоверяющего личность: ' + forceString(
            record.value('documentNumber')) + '; '
    if forceString(record.value('documentType')):
        personInfo += u'тип документа, удостоверяющего личность: ' + forceString(
            record.value('documentType')) + '. '
    return personInfo
コード例 #9
0
ファイル: CheckEvents.py プロジェクト: dio4/vista_1
 def checkPolicy(self, clientId, setDate, execDate):
     policy=getClientPolicy(clientId)
     if policy:
         begDate=forceDate(policy.value('begDate'))
         endDate=forceDate(policy.value('endDate'))
         if begDate and begDate>setDate:
             self.err2log(u'полис выдан после начала ДД')
         if endDate and endDate<execDate:
             self.err2log(u'полис аннулирован')
コード例 #10
0
 def loadData(self):
     self.items = []
     db = QtGui.qApp.db
     tableAPHB = db.table('ActionProperty_HospitalBed')
     tableAP = db.table('ActionProperty')
     tableAction = db.table('Action')
     tableEvent = db.table('Event')
     tableClient = db.table('Client')
     tableEventType = db.table('EventType')
     tablePersonWithSpeciality = db.table('vrbPersonWithSpeciality')
     queryTable = tableAPHB.leftJoin(tableAP,
                                     tableAPHB['id'].eq(tableAP['id']))
     queryTable = queryTable.leftJoin(
         tableAction, tableAction['id'].eq(tableAP['action_id']))
     queryTable = queryTable.leftJoin(
         tableEvent, tableEvent['id'].eq(tableAction['event_id']))
     queryTable = queryTable.leftJoin(
         tableClient, tableEvent['client_id'].eq(tableClient['id']))
     queryTable = queryTable.leftJoin(
         tableEventType,
         tableEvent['eventType_id'].eq(tableEventType['id']))
     queryTable = queryTable.leftJoin(
         tablePersonWithSpeciality,
         tableEvent['execPerson_id'].eq(tablePersonWithSpeciality['id']))
     cols = [
         tableEvent['id'].alias('eventId'), tableEvent['client_id'],
         tableClient['lastName'], tableClient['firstName'],
         tableClient['patrName'], tableClient['sex'],
         tableClient['birthDate'], tableEvent['setDate'],
         tableEvent['execDate'], tablePersonWithSpeciality['name'],
         tableEventType['name'].alias('eventType')
     ]
     cond = [
         tableAPHB['value'].eq(self.hospitalBedId),
         tableAction['deleted'].eq(0),
         tableAction['status'].inlist([0, 1]),
         tableEvent['deleted'].eq(0),
     ]
     records = db.getRecordList(queryTable, cols, cond)
     for record in records:
         clientId = forceRef(record.value('client_id'))
         sexClient = self.sex[forceInt(record.value('sex'))]
         item = [
             clientId,
             forceString(record.value('lastName')) + u' ' +
             forceString(record.value('firstName')) + u' ' +
             forceString(record.value('patrName')), sexClient,
             forceDate(record.value('birthDate')),
             forceDate(record.value('setDate')),
             forceDate(record.value('execDate')),
             forceString(record.value('eventType')),
             forceString(record.value('name')),
             forceRef(record.value('eventId'))
         ]
         self.items.append(item)
     self.reset()
コード例 #11
0
ファイル: TempInvalidInfo.py プロジェクト: dio4/vista_1
 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')))
コード例 #12
0
ファイル: RBService.py プロジェクト: dio4/vista_1
 def props(self):
     result = {}
     result['group'] = forceRef(self.cmbServiceGroup.value())
     result['section'] = forceRef(self.cmbSection.value())
     result['type'] = forceRef(self.cmbType.value())
     result['class'] = forceRef(self.cmbClass.value())
     result['code'] = forceStringEx(self.edtCode.text())
     result['name'] = forceStringEx(self.edtName.text())
     result['EIS'] = self.chkEIS.checkState()
     result['nomenclature'] = self.chkNomenclature.checkState()
     result['begDate'] = forceDate(self.edtBegDate.date())
     result['endDate'] = forceDate(self.edtEndDate.date())
     return result
コード例 #13
0
    def startImport(self):
        db = QtGui.qApp.db
        dbf = self.openDBF()
        nprocessed = 0
        self.progressBar.setValue(0)
        self.progressBar.setMaximum(dbf.recordCount)
        tblSPR73 = db.table('mes.SPR73')

        for row in dbf:
            self.progressBar.step()
            QtGui.qApp.processEvents()
            if self.abort:
                self.log.append(u'Прервано пользователем')
                return

            code = forceString(row['CODE'])
            code2 = forceString(row['CODE2'])
            if not code2: code2 = code
            begDate = forceDate(row['DATN'])
            if not begDate: begDate = dateLeftInfinity # Сейчас мы считаем, что так быть не может.
            endDate = forceDate(row['DATO'])
            if not endDate: endDate = dateRightInfinity

            SPR72List = db.getRecordList(tblSPR73,
                                         cols='*',
                                         where=db.joinAnd([
                                             tblSPR73['begDate'].eq(begDate),
                                             tblSPR73['endDate'].eq(endDate),
                                             tblSPR73['CODE'].eq(code),
                                             tblSPR73['CODE2'].eq(code2)]))
            if len(SPR72List) > 1: self.addDuplicateAlertToLog(u'SPR72 (mes.SPR72)', code, [r.value('id') for r in SPR72List])
            elif len(SPR72List) == 1: continue
            else:
                SPR72List = db.getRecordList(tblSPR73,
                                            cols='*',
                                            where=db.joinAnd([
                                                tblSPR73['begDate'].eq(begDate),
                                                tblSPR73['endDate'].eq(dateRightInfinity),
                                                tblSPR73['CODE'].eq(code),
                                                tblSPR73['CODE2'].eq(code2)]))
                if len(SPR72List) > 1:
                    self.addDuplicateAlertToLog(u'SPR72 (mes.SPR72)', code, [r.value('id') for r in SPR72List])
                    for record in SPR72List: self.fillSPR73Record(db, tblSPR73, record, endDate=endDate)
                elif len(SPR72List) == 1: self.fillSPR73Record(db, tblSPR73, SPR72List[0], endDate=endDate)
                else: self.fillSPR73Record(db, tblSPR73, tblSPR73.newRecord(), begDate, endDate, code, code2)

            nprocessed += 1

        self.log.append(u'Обработано %d записей' % nprocessed)
        self.log.append(u'готово')
        QtGui.qApp.preferences.appPrefs['ImportSPR73FileName'] = toVariant(self.edtFileName.text())
コード例 #14
0
    def build(self, params):
        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 = [
            (' 9%', [u'Код пациента'], CReportBase.AlignLeft),
            (' 9%', [u'Внешний идентификатор'], CReportBase.AlignLeft),
            ('20%', [u'ФИО пациента'], CReportBase.AlignLeft),
            (' 5%', [u'Пол'], CReportBase.AlignLeft),
            ('10%', [u'Дата рождения'], CReportBase.AlignLeft),
            ('10%', [u'Период лечения'], CReportBase.AlignLeft),
            (' 9%', [u'Код МКБ'], CReportBase.AlignLeft),
            (' 9%', [u'Стандарт/КСГ'], CReportBase.AlignLeft),
            ('10%', [u'Отделение пребывания'], CReportBase.AlignLeft),
            (' 9%', [u'Сумма ДМС-ОМС'], CReportBase.AlignLeft),
        ]

        table = createTable(cursor, tableColumns)

        masterRecord = MasterRecord()
        while query.next():
            record = query.record()

            masterRecord.addElement(
                PatientRecord(
                    forceString(record.value('clientId')),
                    forceString(record.value('externalId')),
                    forceString(record.value('clientName')),
                    formatSex(record.value('sex')),
                    forceDate(
                        record.value('birthDate')).toString('dd.MM.yyyy'),
                    forceDate(record.value('setDate')).toString('dd.MM.yyyy') +
                    '/' +
                    forceDate(record.value('execDate')).toString('dd.MM.yyyy'),
                    forceString(record.value('MKB')),
                    forceString(record.value('KSG')),
                    forceString(record.value('orgStructName')),
                    forceInt(record.value('sum'))))

        buildTable(table, masterRecord)

        return doc
コード例 #15
0
    def flags(self, index):
        row = index.row()
        record = self.getRecordByRow(row)

        enabled = not forceBool(record.value('disabledForPrescription'))
        if enabled:
            if self.date:
                regDate = forceDate(record.value('regDate'))
                annDate = forceDate(record.value('annDate'))
                enabled = (not regDate or regDate <= self.date) and (not annDate or self.date < annDate)
        if enabled:
            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
        else:
            return Qt.ItemIsSelectable
コード例 #16
0
 def loadData(self, clientId):
     self.items = []
     if clientId:
         db = QtGui.qApp.db
         table = db.table('TempInvalid')
         tableInvalidPeriod = db.table('TempInvalid_Period')
         tableInvalidRegime = db.table('rbTempInvalidRegime')
         tableTempInvalidDocument = db.table('rbTempInvalidDocument')
         cond = [
             table['deleted'].eq(0), table['client_id'].eq(clientId),
             table['type'].eq(self.type_),
             table['endDate'].eq(tableInvalidPeriod['endDate'])
         ]
         cols = [
             table['id'], tableInvalidRegime['code'],
             tableInvalidRegime['name'],
             tableTempInvalidDocument['code'].alias('docCode'),
             tableTempInvalidDocument['name'].alias('docName'),
             table['begDate'], table['endDate'], table['closed'],
             table['serial'], table['number']
         ]
         queryTable = tableInvalidPeriod.leftJoin(
             table, table['id'].eq(tableInvalidPeriod['master_id']))
         queryTable = queryTable.leftJoin(
             tableInvalidRegime,
             tableInvalidRegime['id'].eq(tableInvalidPeriod['regime_id']))
         queryTable = queryTable.leftJoin(
             tableTempInvalidDocument,
             tableTempInvalidDocument['id'].eq(table['doctype_id']))
         for record in db.getRecordList(queryTable, cols, cond,
                                        'endDate DESC'):
             regimeCode = forceString(record.value('code'))
             regimeName = forceString(record.value('name'))
             docCode = forceString(record.value('docCode'))
             docName = forceString(record.value('docName'))
             begDate = forceDate(record.value('begDate'))
             endDate = forceDate(record.value('endDate'))
             closed = forceInt(record.value('closed'))
             item = [
                 (docCode + ' - ' + regimeCode),  # 0
                 forceString(begDate),  # 1
                 forceString(endDate),  # 2
                 self.closedDict.get(closed, ''),  # 3
                 docName,  # 4
                 regimeName,  # 5
                 None  # 6
             ]
             self.items.append(item)
     self.reset()
コード例 #17
0
ファイル: TemperatureList.py プロジェクト: dio4/vista_1
 def getPeriodDate(self):
     if self.eventId:
         db = QtGui.qApp.db
         tableAction = db.table('Action')
         tableAPT = db.table('ActionPropertyType')
         tableAP = db.table('ActionProperty')
         tableAT = db.table('ActionType')
         actionTypeIdList = db.getDistinctIdList(tableAT, [tableAT['id']], [
             tableAT['deleted'].eq(0),
             tableAT['flatCode'].like(u'temperatureSheet%')
         ])
         cond = [
             tableAPT['deleted'].eq(0),
             tableAPT['actionType_id'].inlist(actionTypeIdList),
             tableAction['deleted'].eq(0),
             tableAction['event_id'].eq(self.eventId)
         ]
         tableQuery = tableAction.innerJoin(
             tableAP, tableAP['action_id'].eq(tableAction['id']))
         tableQuery = tableQuery.innerJoin(
             tableAPT, tableAPT['id'].eq(tableAP['type_id']))
         recordMIN = db.getRecordEx(tableQuery,
                                    'MIN(Action.begDate) AS begDate', cond)
         recordMAX = db.getRecordEx(tableQuery,
                                    'MAX(Action.begDate) AS begDate', cond)
         begDateMIN = None
         begDateMAX = None
         if recordMIN:
             begDateMIN = forceDate(recordMIN.value('begDate'))
         if recordMAX:
             begDateMAX = forceDate(recordMAX.value('begDate'))
         if not begDateMIN:
             begDateMIN = QtCore.QDate(QtCore.QDate().currentDate().year(),
                                       QtCore.QDate().currentDate().month(),
                                       1)
         if not begDateMAX:
             begDateMAX = QtCore.QDate(QtCore.QDate().currentDate().year(),
                                       QtCore.QDate().currentDate().month(),
                                       15)
         self.edtBegDate.setDate(begDateMIN)
         self.edtEndDate.setDate(begDateMAX)
     else:
         currentDate = QtCore.QDate().currentDate()
         month = currentDate.month()
         year = currentDate.year()
         begDate = QtCore.QDate(year, month, 1)
         endDate = QtCore.QDate(year, month, 15)
         self.edtBegDate.setDate(begDate)
         self.edtEndDate.setDate(endDate)
コード例 #18
0
    def build(self, params):
        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()
        u'''№ п/п - порядковый номер записи в таблице
        Код пациента - client.id
        ФИО пациента - Фамилия имя отчество полностью
        Дата рождения - дата рождения пациента
        Период лечения - event.setDate-event.execDate
        Врач — Код, имя полностью
        Подразделение -(отображается полное наименование от головного до конечного)
        Контроль - отображается наименование сработавшего контроля.'''
        tableColumns = [
            (' 2%', [u'№'], CReportBase.AlignLeft),
            (' 8%', [u'Код пациента'], CReportBase.AlignLeft),
            ('15%', [u'ФИО'], CReportBase.AlignLeft),
            (' 10%', [u'Д/р'], CReportBase.AlignLeft),
            (' 2%', [u'Пол'], CReportBase.AlignLeft),
            ('10%', [u'Период лечения'], CReportBase.AlignLeft),
            ('15%', [u'Врач'], CReportBase.AlignLeft),
            ('20%', [u'Подразделение'], CReportBase.AlignLeft),
            ('20%', [u'Код и наименование услуги'], CReportBase.AlignLeft),
        ]
        table = createTable(cursor, tableColumns)

        while query.next():
            record = query.record()
            row = table.addRow()
            fields = (row, forceInt(record.value('clientId')),
                      forceString(record.value('name')),
                      forceString(record.value('birthDate')),
                      forceString(record.value('sex')),
                      forceString(
                          forceDate(record.value('startDate')).toString(
                              'dd.MM.yyyy') + ' - ' +
                          forceDate(record.value('finishDate')).toString(
                              'dd.MM.yyyy')),
                      forceString(record.value('personName')),
                      getOrgStructureFullName(record.value('orgId')),
                      forceString(record.value('service')))
            for col, val in enumerate(fields):
                table.setText(row, col, val)
        return doc
コード例 #19
0
ファイル: RBDloFormularies.py プロジェクト: dio4/vista_1
 def checkDataEntered(self):
     result = True
     begDate = forceDate(self.edtBegDate.date())
     endDate = forceDate(self.edtEndDate.date())
     itemsCnt = len(self.modelItems._items)
     result = result and (begDate < endDate or self.checkValueMessage(
         u'Дата начала должна быть меньше даты окончания!', False, self,
         None, None))
     result = result and (itemsCnt > 0 or self.checkValueMessage(
         u'Необходимо заполнить табличную часть формуляра!', False, self,
         None, None))
     for row, item in enumerate(self.modelItems.items()):
         if not self.checkItemDataEntered(row, item):
             return False
     return result
コード例 #20
0
 def setRecord(self, record):
     CItemEditorBaseDialog.setRecord(self, record)
     self._id = forceRef(record.value('id'))
     self.cmbEventPurpose.setValue(forceInt(
         record.value('eventPurpose_id')))
     self.edtCode.setText(forceString(record.value(rbCode)))
     self.edtRegionalCode.setText(forceString(record.value('regionalCode')))
     self.edtName.setText(forceString(record.value(rbName)))
     self.edtFederalCode.setText(forceString(record.value('federalCode')))
     # self.cmbResult.setValue(forceRef(record.value('result_id')))
     self.tblRBResult.setValues(self.results())
     self.chkFilterResults.setChecked(
         forceBool(record.value('filterResults')))
     self.edtBegDate.setDate(forceDate(record.value('begDate')))
     self.edtEndDate.setDate(forceDate(record.value('endDate')))
コード例 #21
0
ファイル: HospitalBedInfo.py プロジェクト: dio4/vista_1
 def _initByRecord(self, record):
     self._orgStructure = self.getInstance(
         COrgStructureInfo, forceRef(record.value('master_id')))
     self._isPermanent = forceBool(record.value('isPermanent'))
     self._type = self.getInstance(CHospitalBedTypeInfo,
                                   forceRef(record.value('type_id')))
     self._code = forceString(record.value('code'))
     self._name = forceString(record.value('name'))
     self._profile = self.getInstance(CHospitalBedProfileInfo,
                                      forceRef(record.value('profile_id')))
     self._relief = forceInt(record.value('relief'))
     self._schedule = self.getInstance(
         CHospitalBedScheduleInfo, forceRef(record.value('schedule_id')))
     self._begDate = CDateInfo(forceDate(record.value('begDate')))
     self._endDate = CDateInfo(forceDate(record.value('endDate')))
コード例 #22
0
ファイル: BeforeRecordClient.py プロジェクト: dio4/vista_1
 def showQueuePosition(self, actionId):
     if actionId:
         db = QtGui.qApp.db
         tableAction = db.table('Action')
         tablePerson = db.table('Person')
         cols = [
             tableAction['directionDate'], tableAction['person_id'],
             tablePerson['orgStructure_id'], tablePerson['speciality_id']
         ]
         cond = [
             tableAction['id'].eq(actionId), tableAction['deleted'].eq(0),
             tablePerson['deleted'].eq(0)
         ]
         table = tableAction.innerJoin(
             tablePerson, tablePerson['id'].eq(tableAction['person_id']))
         record = db.getRecordEx(table, cols, cond)
         if record:
             date = forceDate(record.value('directionDate'))
             personId = forceRef(record.value('person_id'))
             orgStructureId = forceRef(record.value('orgStructure_id'))
             specialityId = forceRef(record.value('speciality_id'))
             try:
                 if QtGui.qApp.mainWindow.dockResources and personId and date and orgStructureId and specialityId and actionId:
                     QtGui.qApp.mainWindow.dockResources.content.showQueueItem(
                         orgStructureId, specialityId, personId, date,
                         actionId)
             except:
                 pass
コード例 #23
0
ファイル: RecipeInfo.py プロジェクト: dio4/vista_1
 def setRecord(self, record):
     self._event = self.getInstance(CEventInfo,
                                    forceRef(record.value('event_id')))
     self._dateTime = CDateInfo(forceDate(record.value('dateTime')))
     self._number = forceString(record.value('number'))
     self._socCode = forceString(record.value('socCode'))
     self._pregCard = forceInt(record.value('pregCard'))
     self._finance = self.getInstance(CFinanceInfo,
                                      forceRef(record.value('finance_id')))
     self._percentage = forceInt(record.value('percentage'))
     self._mkb = forceString(record.value('mkb'))
     self._formularyItem = self.getInstance(
         CDloDrugFormularyItemInfo,
         forceRef(record.value('formularyItem_id')))
     self._dosage = forceString(record.value('dosage'))
     self._qnt = forceInt(record.value('qnt'))
     self._duration = forceInt(record.value('duration'))
     self._numPerDay = forceInt(record.value('numPerDay'))
     self._signa = forceString(record.value('signa'))
     self._isVk = forceInt(record.value('isVk'))
     self._term = forceInt(record.value('term'))
     self._status = forceInt(record.value('status'))
     self._sentToMiac = forceInt(record.value('sentToMiac'))
     self._errorCode = forceString(record.value('errorCode'))
     self._printMnn = forceInt(record.value('printMnn'))
コード例 #24
0
 def getOrgStruct(record):
     result = ''
     result += u'Текущие к/д: ' + repr((forceDate(record.value('movingDate'))).daysTo(forceDate(record.value('endMovingDate') if forceDate(record.value('endMovingDate')) != QtCore.QDate() else QtCore.QDate.currentDate()))) + '\n'
     result += (forceString(record.value('receivedDate')) + '\n')
     result += (forceString(record.value('movingDate')) + '\n')
     result += (forceString(record.value('orgStructName')) if forceString(record.value('orgStructName')) != '' else u'Приёмное отделение' + '\n')
     return result
コード例 #25
0
 def getLastEquipmentMaintenanceDateFromModel(self, startupDate):
     date = startupDate
     for item in self.journalModel.items():
         modelDate = forceDate(item.value('date'))
         if modelDate > date:
             date = modelDate
     return date
コード例 #26
0
ファイル: EventNotesPage.py プロジェクト: dio4/vista_1
    def updateClientPolicy(self, record):
        if record is None:
            self.cmbClientPolicy.updatePolicy()
            return

        execDate = forceDate(record.value('execDate'))
        eventIsClosed = not execDate.isNull()
        eventIsPayed = getRealPayed(forceInt(record.value('payStatus')))

        if eventIsPayed or (
                eventIsClosed and
                not QtGui.qApp.userHasRight(urEditClientPolicyInClosedEvent)):
            self.cmbClientPolicy.setEnabled(False)
        else:
            self.cmbClientPolicy.setEventIsClosed(eventIsClosed)
            self.cmbClientPolicy.setDate(
                execDate if eventIsClosed else QtCore.QDate.currentDate())

            if getEventFinanceCode(forceRef(
                    record.value('eventType_id'))) == 3:  # ДМС
                franchisPolicyTypeId = forceRef(
                    QtGui.qApp.db.translate('rbPolicyType', 'code', 'franchis',
                                            'id'))
                if franchisPolicyTypeId:
                    self.cmbClientPolicy.setPolicyTypeId(franchisPolicyTypeId)
                    self.cmbClientPolicy.updatePolicy()
                    if not self.cmbClientPolicy.value():
                        self.cmbClientPolicy.setPolicyTypeId(
                            forceRef(
                                QtGui.qApp.db.translate(
                                    'rbPolicyType', 'code', '3', 'id')))
                        self.cmbClientPolicy.updatePolicy()
            else:
                self.cmbClientPolicy.updatePolicy()
コード例 #27
0
def getPlannedEndDateByJobTicketProperty(record):
    # план заполняется по номерку, a номерок может подбираться автоматом
    if record:
        action = CAction(record=record)
        actionType = action.getType()
        propertyTypeList = actionType.getPropertiesById().values()
        for propertyType in propertyTypeList:
            if type(propertyType.valueType
                    ) == CJobTicketActionPropertyValueType:
                property = action.getPropertyById(propertyType.id)
                jobTicketId = property.getValue()
                if jobTicketId:
                    db = QtGui.qApp.db
                    date = forceDate(
                        db.translate('Job_Ticket', 'id', jobTicketId,
                                     'datetime'))
                    jobId = forceRef(
                        db.translate('Job_Ticket', 'id', jobTicketId,
                                     'master_id'))
                    jobTypeId = forceRef(
                        db.translate('Job', 'id', jobId, 'jobType_id'))
                    ticketDuration = forceInt(
                        db.translate('rbJobType', 'id', jobTypeId,
                                     'ticketDuration'))
                    return date.addDays(ticketDuration)
        return None
コード例 #28
0
    def loadDiagnostics(self, modelDiagnostics):
        db = QtGui.qApp.db
        table = db.table('Diagnostic')
        isDiagnosisManualSwitch = modelDiagnostics.manualSwitchDiagnosis()
        rawItems = db.getRecordList(table, '*', [
            table['deleted'].eq(0), table['event_id'].eq(self.itemId()),
            modelDiagnostics.filter
        ], 'id')
        items = []
        for record in rawItems:
            diagnosisId = record.value('diagnosis_id')
            MKB = db.translate('Diagnosis', 'id', forceRef(diagnosisId), 'MKB')
            MKBEx = db.translate('Diagnosis', 'id', forceRef(diagnosisId),
                                 'MKBEx')
            morphologyMKB = db.translate('Diagnosis', 'id',
                                         forceRef(diagnosisId),
                                         'morphologyMKB')
            setDate = forceDate(record.value('setDate'))
            newRecord = modelDiagnostics.getEmptyRecord()
            copyFields(newRecord, record)
            newRecord.setValue('MKB', MKB)
            newRecord.setValue('MKBEx', MKBEx)
            newRecord.setValue('morphologyMKB', morphologyMKB)

            if isDiagnosisManualSwitch:
                isCheckedHandleDiagnosis = checkIsHandleDiagnosisIsChecked(
                    setDate, self.clientId, diagnosisId)
                newRecord.setValue('handleDiagnosis',
                                   QtCore.QVariant(isCheckedHandleDiagnosis))

            items.append(newRecord)
        modelDiagnostics.setItems(items)
コード例 #29
0
    def printDailyJournal(self, cnt, table, record, primaryInfo,
                          accountingSystem, clientId, isViewBirthDate,
                          isViewRegAdress):
        row = table.addRow()
        table.setText(row, 0, cnt)
        table.setText(row, 1, primaryInfo)
        table.setText(
            row, 2,
            forceString(record.value('clientIdentifier'))
            if accountingSystem else forceString(clientId))
        time = forceTime(record.value('time'))
        table.setText(row, 3, time.toString('hh:mm') if time else u'--:--')
        table.setText(
            row, 4,
            forceString(record.value('lastName')) + u' ' +
            forceString(record.value('firstName')) + u' ' +
            forceString(record.value('patrName')))

        if isViewBirthDate:
            table.setText(
                row, 5,
                forceDate(record.value('birthDate')).toString('yyyy-MM-dd'))
        else:
            table.setText(row, 5, forceString(record.value('clientAge')))

        table.setText(
            row, 6,
            forceString(
                record.value(
                    'locAddress' if isViewRegAdress else 'clientAttachInfo')))
        table.setText(row, 7, forceString(record.value('note')))
        cnt += 1
        return cnt
コード例 #30
0
 def dateCheck(lst, date1, date2):
     if lst:
         rec = lst[0]
         rec_date1 = forceDate(rec.value('begDate'))
         rec_date2 = forceDate(rec.value('endDate'))
         if rec_date1 < date1:
             self.err2log(u'даты периодов пересекаются')
             return
         if rec_date1 != date1:
             self.err2log(u'разрыв в датах периодов')
             return
         dateCheck(lst[1:], rec_date2.addDays(1), date2)
     else:
         if date1 != date2.addDays(1):
             self.err2log(u'даты окончания периодов не совпадают')
             return