コード例 #1
0
def selectEventsList(begDate, endDate, protocolNumber, isValid, clientId = None):
    db = QtGui.qApp.db
    stmt = u"""
         SELECT
         cl.id AS clientId,
         cl.lastName,
         cl.firstName,
         cl.patrName,
         e.id AS EventId,
         ps.begDate AS begDate,
         ps.endDate AS endDate,
         psi.id AS protocolId,
         psi.name AS protocolName,
         s.name AS serviceName,
         ct.price AS price,
         ct.amount AS amount,
         SUM(ct.price) AS sumUsl,
         IF (a.account = 1, SUM(ct.price), 0) AS sumAcc,
         IF (a.account = 0, SUM(ct.price), 0) AS sumNotAcc,
         IF (a.payStatus = 3, SUM(ct.price), 0) AS sumPayed
         FROM
         PaymentScheme ps
         INNER JOIN PaymentSchemeItem psi ON psi.paymentScheme_id = ps.id
         INNER JOIN Contract c ON psi.contract_id = c.id AND c.deleted = 0
         INNER JOIN Event e ON e.contract_id = c.id AND e.deleted = 0
         INNER JOIN Client cl ON e.client_id = cl.id
         INNER JOIN Action a ON a.event_id = e.id AND a.deleted = 0
         INNER JOIN ActionType at ON at.id = a.actionType_id AND at.deleted = 0
         INNER JOIN ActionType_Service ats ON ats.master_id = at.id
         INNER JOIN rbService s ON ats.service_id = s.id
         INNER JOIN Contract_Tariff ct ON c.id = ct.master_id AND ct.service_id = s.id AND ct.deleted = 0
         WHERE ps.begDate > \'%s\' AND ps.begDate < \'%s\' AND ps.deleted = 0 AND ps.numberProtocol = \'%s\'
        """ % (begDate.toString('yyyy-MM-dd'), endDate.toString('yyyy-MM-dd'), protocolNumber)
    if isValid:
        stmt += u' AND ps.endDate >= \'%s\'' % QtCore.QDate.currentDate().toString('yyyy-MM-dd')
    if clientId:
        stmt += u' AND cl.id = %s' % forceString(clientId)
    return db.query(stmt)
コード例 #2
0
    def __init__(self, parent=None):
        db = QtGui.qApp.db
        QtGui.QDialog.__init__(self, parent)
        self.patientRequired = False
        self.setupUi(self)
        self.cmbEventType.setTable('EventType', True)
        self.edtBegPayDate.setDate(QtCore.QDate())
        self.edtEndPayDate.setDate(QtCore.QDate())

        self.cmbPermanentAttach.addItem(u'не задано', toVariant(None))
        self.cmbPermanentAttach.addItem(u'без прикрепления', toVariant(-1))
        query = db.query(
            'SELECT id, shortName FROM Organisation WHERE exists (select * from ClientAttach where ClientAttach.LPU_id=Organisation.id) order by shortName'
        )
        while query.next():
            record = query.record()
            id = record.value(0).toInt()[0]
            shortName = forceString(record.value(1))
            self.cmbPermanentAttach.addItem(shortName, toVariant(id))

        self.cmbRaion.addItem(u'Иногородние', toVariant(u'Иногородние'))
        self.cmbRaion.addItem(u'Неидентифицированные',
                              toVariant(u'Неидентифицированные'))
        self.cmbRaion.addItem(u'Ленинградская обл.',
                              toVariant(u'Ленинградская обл.'))
        query = db.query(
            'SELECT NAME FROM kladr.OKATO WHERE P1<>"   " and P2="   "'
        )  # районы Петербурга и Лен. области
        while query.next():
            record = query.record()
            NAME = record.value(0).toString()
            self.cmbRaion.addItem(NAME, toVariant(NAME))

        YearDD = u''
        curDate = QtCore.QDate.currentDate()
        curYear = curDate.toString('yy')
        YearDD = u'ДД-' + curYear
        self.ledtYearForDD.setText(YearDD)
コード例 #3
0
ファイル: InfoSourceReport.py プロジェクト: dio4/vista_1
    def build(self, params):
        begDate = params.get('begDate')
        endDate = params.get('endDate')
        grouping = params.get('grouping')

        query = selectData(begDate, endDate, grouping)
        self.setQueryText(forceString(query.lastQuery()))

        doc = QtGui.QTextDocument()
        cursor = QtGui.QTextCursor(doc)

        cursor.setCharFormat(CReportBase.ReportTitle)
        cursor.insertText(self.title())
        cursor.insertBlock()
        self.dumpParams(cursor, params)
        cursor.insertBlock()

        if grouping:
            self.build_R1(cursor, query)
        else:
            self.build_R2(cursor, query)

        return doc
コード例 #4
0
ファイル: ReportPersonSickList.py プロジェクト: dio4/vista_1
 def dumpParamsTraumaType(self, cursor, params):
     description = []
     traumaTypeId = params.get('traumaTypeId', None)
     chkTraumaTypeAny = params.get('chkTraumaTypeAny', False)
     if chkTraumaTypeAny:
         nameTraumaType = u'любой'
     elif traumaTypeId:
         nameTraumaType = forceString(
             QtGui.qApp.db.translate('rbTraumaType', 'id', traumaTypeId,
                                     'name'))
     else:
         nameTraumaType = u'не определен'
     description.append(u'Тип травмы: ' + nameTraumaType)
     columns = [('100%', [], CReportBase.AlignLeft)]
     table = createTable(cursor,
                         columns,
                         headerRowCount=len(description),
                         border=0,
                         cellPadding=2,
                         cellSpacing=0)
     for i, row in enumerate(description):
         table.setText(i, 0, row)
     cursor.movePosition(QtGui.QTextCursor.End)
コード例 #5
0
ファイル: DailyServicesReport.py プロジェクト: dio4/vista_1
    def build(self, params):
        date = forceDate(params.get('date', QtCore.QDate()))
        financeSource = forceRef(params.get('financeSource', None))
        payStatus = forceInt(params.get('payStatus', 0))

        doc = QtGui.QTextDocument()
        cursor = QtGui.QTextCursor(doc)
        cursor.setCharFormat(CReportBase.ReportTitle)
        cursor.insertText(self.title())
        cursor.insertBlock()
        self.dumpParams(cursor, params)
        cursor.insertBlock()

        tableColumns = [
            ('20%', [u'ФИО пациента'], CReportBase.AlignRight),
            ('20%', [u'Услуга'], CReportBase.AlignRight),
            ('20%', [u'Дата и время'], CReportBase.AlignRight),
            ('10%', [u'Источник финансирования'], CReportBase.AlignRight),
            ('10%', [u'Отметка об оплате'], CReportBase.AlignRight),
            ('20%', [u'Регистратор'], CReportBase.AlignRight),
        ]
        table = createTable(cursor, tableColumns)

        query = selectData(date, financeSource, payStatus)
        self.setQueryText(forceString(query.lastQuery()))

        while query.next():
            record = query.record()
            clientName = forceString(record.value('clientName'))
            serviceName = forceString(record.value('serviceName'))
            serviceDate = forceDateTime(
                record.value('serviceDate')).toString('dd.MM.yyyy hh:mm')
            financeSource = forceString(record.value('financeSource'))
            payStatus = forceString(record.value('payStatus'))
            registrar = forceString(record.value('registrar'))

            i = table.addRow()
            table.setText(i, 0, clientName)
            table.setText(i, 1, serviceName)
            table.setText(i, 2, serviceDate)
            table.setText(i, 3, financeSource)
            table.setText(i, 4, payStatus)
            table.setText(i, 5, registrar)

        return doc
コード例 #6
0
 def __init__(self, orgId, orgStructureId, emptyRootName, purpose, filter=None):
     if emptyRootName is None:
         emptyRootName = u'ЛПУ'
     COrgStructureTreeItem.__init__(
         self, None,  # parent
         orgStructureId,  # id
         # atronah: почему-то не получилось импортировать from Orgs.Utils import getOrgStructureName
         emptyRootName if not orgStructureId
         else forceString(QtGui.qApp.db.translate(
             'OrgStructure',
             'id',
             orgStructureId,
             'code'
         )),
         False,
         False
     )
     self.orgId = orgId
     self.emptyRootName = emptyRootName
     self.purpose = purpose
     self.filter = filter
     self.timestamp = None
     self.checkSum = None
コード例 #7
0
ファイル: refBooks.py プロジェクト: dio4/vista_1
 def rbInfo(self, rbName, version):
     file = TemporaryFile()
     data = forceString({
         "resourceType":
         "Parameters",
         "parameter": [{
             "name": "system",
             "valueString": rbName
         }, {
             "name": "version",
             "valueString": version
         }]
     })
     file.write(data)
     file.seek(0)
     resp = requests.post(url=(config.termUrl + 'ValueSet/$expand'),
                          data=file.read(),
                          headers=self.headers)
     file.close()
     if resp.status_code == 200:
         data = json.loads(resp.text)
         for par in data['parameter']:
             return par['resource']['expansion']['contains']
コード例 #8
0
 def makeFormatTable(self, query, groupByArea):
     attachD = {}
     attachK = {}
     prevOrgStructure = ''
     attachDInOrgStructure = []
     attachKInOrgStructure = []
     self.client = {}
     #clientInfo = []
     orgStructure = None
     while query.next():
         record = query.record()
         id = forceRef(record.value('id'))
         client = forceString(record.value('lastName')) + ' ' + forceString(
             record.value('firstName')) + ' ' + forceString(
                 record.value('patrName'))
         birthDate = forceString(record.value('birthDate'))
         age = forceString(record.value('age'))
         address = forceString(record.value('address'))
         diagnosis = forceString(record.value('diagnosis'))
         attachType = forceBool(record.value('attach'))
         orgStructure = forceRef(record.value('orgStructure_id'))
         self.client[id] = [client, birthDate, age, address, diagnosis]
         if not orgStructure:
             orgStructure = 0
         if prevOrgStructure and prevOrgStructure != orgStructure and groupByArea:
             attachD[prevOrgStructure] = attachDInOrgStructure
             attachK[prevOrgStructure] = attachKInOrgStructure
             attachDInOrgStructure = []
             attachKInOrgStructure = []
         if prevOrgStructure != orgStructure and groupByArea:
             prevOrgStructure = orgStructure
         if attachType:
             attachDInOrgStructure.append(id)
         else:
             attachKInOrgStructure.append(id)
     if orgStructure:
         attachD[orgStructure] = attachDInOrgStructure
     if orgStructure:
         attachK[orgStructure] = attachKInOrgStructure
     return attachD, attachK
コード例 #9
0
 def getKsgIdList(self, showAll):
     db = QtGui.qApp.db
     tblActionType = db.table('ActionType')
     tblEventType = db.table('EventType')
     tblRbEventProfile = db.table('rbEventProfile')
     tblQ = tblEventType.innerJoin(
         tblRbEventProfile, tblEventType['eventProfile_id'].eq(tblRbEventProfile['id']))
     code = forceString(db.translate(tblQ, tblEventType['id'], self._eventTypeId, tblRbEventProfile['regionalCode']))
     return getCsgIdListByCond(
         sex=self._clientSex,
         age=self._clientAge,
         mkb=self._MKB,
         mkb2List=self._MKB2List,
         actionTypeCodesList=db.getColumnValues(
             tblActionType,
             column=tblActionType['code'],
             where=[tblActionType['id'].inlist(self._actionTypeIdList)]
         ),
         code=getCSGDepartmentMaskByRegionalCode(code),
         date=self._endDate if self._endDate else self._begDate,
         duration=self._begDate.daysTo(self._endDate) if self._begDate and self._endDate else None,
         weakSelection=showAll
     )
コード例 #10
0
    def processRecord(self, record):
        MKB = forceString(record.value('MKB'))
        sex = forceInt(record.value('sex'))
        count = forceInt(record.value('count'))
        age = forceInt(record.value('clientAge'))
        stage = forceInt(record.value('stage_id'))
        additionalDiagInfo = forceBool(record.value(
            'diagnosticResultId')) if self.diseaseCharacterCodes == [
                5
            ] else forceBool(record.value('dispanserCode'))

        MKBfound = False
        for rowInfo in self.resultSet[:-1]:  # Итог здесь учитывать не надо
            row, checkStage = rowInfo
            if MKBinString(MKB, row[2]):
                MKBfound = True
                if not checkStage or stage in [1, 2]:
                    self.processRow(row, sex, age, additionalDiagInfo, count)
        if not MKBfound:
            self.processRow(self.resultSet[-2][0], sex, age,
                            additionalDiagInfo, count)
        self.processRow(self.resultSet[-1][0], sex, age, additionalDiagInfo,
                        count)
コード例 #11
0
 def getOrgDetails(orgId):
     db = QtGui.qApp.db
     tableOrganisation = db.table('Organisation')
     tableOrgAccount = db.table('Organisation_Account')
     tableBank = db.table('Bank')
     table = tableOrganisation.leftJoin(tableOrgAccount,
                                        tableOrgAccount['organisation_id'].eq(tableOrganisation['id']))
     table = table.leftJoin(tableBank, tableBank['id'].eq(tableOrgAccount['bank_id']))
     cond = [tableOrganisation['id'].eq(orgId)]
     cols = [tableOrganisation['fullName'],
             tableOrganisation['Address'],
             tableOrganisation['INN'],
             tableOrganisation['KPP'],
             tableOrgAccount['name'].alias('accountName'),
             tableBank['name'].alias('bankName'),
             tableBank['BIK']]
     record = db.getRecordEx(table, cols, cond)
     if record:
         orgName = forceString(record.value('fullName'))
         orgAddress = forceString(record.value('address'))
         orgINN = forceString(record.value('INN'))
         orgKPP = forceString(record.value('KPP'))
         orgAccount = forceString(record.value('accountName'))
         bankName = forceString(record.value('bankName'))
         bankBIK = forceString(record.value('BIK'))
         return {'orgName': orgName,
                 'orgAddress': orgAddress,
                 'orgINN': orgINN,
                 'orgKPP': orgKPP,
                 'orgAccount': orgAccount,
                 'bankName': bankName,
                 'bankBIK': bankBIK}
     else:
         return {'orgName': '',
                 'orgAddress': '',
                 'orgINN': '',
                 'orgKPP': '',
                 'orgAccount': '',
                 'bankName': '',
                 'bankBIK': ''}
コード例 #12
0
ファイル: ReportSalary_Service.py プロジェクト: dio4/vista_1
    def dumpParams(self, cursor, params, charFormat=QtGui.QTextCharFormat()):
        description = self.getDescription(params)

        query = self.getServiceParams(params)
        while query.next():
            record = query.record()
            description.append(
                u'Подразделение: ' +
                getOrgStructureFullName(record.value('orgStructId')))
            description.append(u'Услуга: ' +
                               forceString(record.value('serviceName')))

        columns = [('100%', [], CReportBase.AlignLeft)]
        table = createTable(cursor,
                            columns,
                            headerRowCount=len(description),
                            border=0,
                            cellPadding=2,
                            cellSpacing=0)
        for i, row in enumerate(description):
            table.setText(i, 0, row, charFormat=charFormat)
        cursor.movePosition(QtGui.QTextCursor.End)
        cursor.insertBlock()
コード例 #13
0
    def processPers(self, pers):
        id_pac = forceString(pers.firstChildElement('ID_PAC').text())
        lastName = pers.firstChildElement('FAM').text()
        firstName = pers.firstChildElement('IM').text()
        patrName = pers.firstChildElement('OT').text()
        sex = pers.firstChildElement('W').text()
        birthDate = QtCore.QDate.fromString(
            pers.firstChildElement('DR').text(), QtCore.Qt.ISODate)

        tblClient = self.db.table('Client')
        cond = [
            tblClient['lastName'].eq(lastName if lastName else ''),
            tblClient['firstName'].eq(firstName if firstName else ''),
            tblClient['patrName'].eq(patrName if patrName else ''),
            tblClient['sex'].eq(sex), tblClient['birthDate'].eq(birthDate)
        ]
        clientRecord = self.db.getRecordEx(tblClient, 'id', cond)
        if not clientRecord:
            self.err2log(u'Не удалось найти пациента, ID_PAC = %s' % id_pac)
            self.mapIdPacToClientId[id_pac] = None
            return False
        self.mapIdPacToClientId[id_pac] = forceRef(clientRecord.value('id'))
        return True
コード例 #14
0
    def build(self, params):
        doc = QtGui.QTextDocument()
        cursor = QtGui.QTextCursor(doc)
        cursor.setCharFormat(CReportBase.ReportTitle)
        cursor.insertText(u'Количество записей в журнале отложенного спроса')
        cursor.insertBlock()
        self.dumpParams(cursor, params)
        cursor.setCharFormat(CReportBase.ReportBody)
        cursor.insertBlock()

        tableColumns = [('10%', [u'№ п/п'], CReportBase.AlignRight),
                        ('30%', [u'Должность врача'], CReportBase.AlignLeft),
                        ('30%', [u'Записаны в журнал отложенного спроса'],
                         CReportBase.AlignCenter),
                        ('30%', [u'Обеспечены консультацией'],
                         CReportBase.AlignCenter)]

        table = createTable(cursor, tableColumns)
        sumAllRecording = 0
        sumConsultationRecording = 0
        query = selectData(params)
        self.setQueryText(forceString(query.lastQuery()))
        while query.next():
            record = query.record()
            name = forceString(record.value('name'))
            allRecording = forceInt(record.value('allRecording'))
            consultationRecording = forceInt(
                record.value('consultationRecording'))
            sumAllRecording += allRecording
            sumConsultationRecording += consultationRecording
            i = table.addRow()
            table.setText(i, 0, forceString(i))
            table.setText(i, 1, name)
            table.setText(i, 2, forceString(allRecording))
            table.setText(i, 3, forceString(consultationRecording))
        i = table.addRow()
        table.setText(i, 1, u'Итого:')
        table.setText(i, 2, forceString(sumAllRecording))
        table.setText(i, 3, forceString(sumConsultationRecording))
        return doc
コード例 #15
0
    def flags(self, index=QtCore.QModelIndex()):
        result = CInDocTableModel.flags(self, index)
        row = index.row()
        if row < len(self._items):
            column = index.column()
            if self.isManualSwitchDiagnosis and index.isValid():
                if column == self.columnHandleDiagnosis:
                    characterId = forceRef(
                        self.items()[row].value('character_id'))
                    if characterId != self.characterIdForHandleDiagnosis:
                        result = (result & ~QtCore.Qt.ItemIsUserCheckable)
#                        return result
            if self.isMKBMorphology and index.isValid():
                if column == self._mapFieldNameToCol.get('morphologyMKB'):
                    mkb = forceString(self.items()[row].value('MKB'))
                    if not (bool(mkb) and mkb[0]
                            in CF106DiagnosticsModel.MKB_allowed_morphology):
                        result = (result & ~QtCore.Qt.ItemIsEditable)
        if QtGui.qApp.isPNDDiagnosisMode() and (
                row == len(self.items())
                or index.column() != self._mapFieldNameToCol.get('result_id')):
            result = (result & ~QtCore.Qt.ItemIsEditable)
        return result
コード例 #16
0
    def getDescription(self, params):
        date = params.get('begDate', QtCore.QDate())
        mode = params.get('mode', 0)
        orgStructureId = params.get('orgStructureId', None)
        times = u''
        if mode == 0:
            times = u'00.00 - 23.59'
        elif mode == 1:
            times = u'07.00 - 15.00'
        elif mode == 2:
            times = u'15.00 - 07.00'
        elif mode == 3:
            times = u'07.00 - 07.00'

        rows = []
        if date:
            rows.append(u'дата: ' + forceString(date))
        if times:
            rows.append(u'временной отрезок: ' + times)
        if orgStructureId:
            rows.append(u'подразделение: ' +
                        getOrgStructureFullName(orgStructureId))
        return rows
コード例 #17
0
ファイル: ActionTemplate.py プロジェクト: dio4/vista_1
    def setRecord(self, record):
        CItemEditorBaseDialog.setRecord(self, record)
        self.setGroupId(forceRef(record.value('group_id')))
        setLineEditValue(self.edtName, record, 'name')
        setComboBoxValue(self.cmbSex, record, 'sex')
        (begUnit, begCount, endUnit,
         endCount) = parseAgeSelector(forceString(record.value('age')))
        self.cmbBegAgeUnit.setCurrentIndex(begUnit)
        self.edtBegAgeCount.setText(str(begCount))
        self.cmbEndAgeUnit.setCurrentIndex(endUnit)
        self.edtEndAgeCount.setText(str(endCount))

        ownerId = forceRef(record.value('owner_id'))
        specialityId = forceRef(record.value('speciality_id'))
        if ownerId:
            self.rbVisibleToOwner.setChecked(True)
            self.cmbOwner.setValue(ownerId)
        elif specialityId:
            self.rbVisibleToSpeciality.setChecked(True)
            self.cmbSpeciality.setValue(specialityId)
        else:
            self.rbVisibleToAll.setChecked(True)
        self.setActionId(forceRef(record.value('action_id')))
        self.setIsDirty(False)
コード例 #18
0
    def __init__(self, clientId):
        QtGui.QDialog.__init__(self)
        Ui_VIPStatusComment.__init__(self)
        self.setupUi(self)
        # self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowCloseButtonHint
                            | QtCore.Qt.WindowSystemMenuHint)
        self.clientId = clientId
        self.isVIP = False
        self.saved = False

        colorList = [
            forceString(x.value('color')).upper()
            for x in QtGui.qApp.db.getRecordList(table='rbVIPColor',
                                                 cols='color')
        ]

        self.cmbColor.model().changeColorList(colorList)
        self.setData()

        if QtGui.qApp.userHasRight(
                urSetVIPComment
        ) and not QtGui.qApp.userHasRight(urEditSetVIPStatus):
            self.btnStatus.setEnabled(False)
コード例 #19
0
    def exportInt(self):
        dbf, query = self.prepareToExport()

        lpuCode = forceString(self.edtOrgCode.text())
        self.log(u'ЛПУ: код инфис: "%s".' % lpuCode)

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

        self.exportedClients = set()

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

        while query.next():
            QtGui.qApp.processEvents()
            if self.aborted:
                break
            self.progressBar.step()
            self.process(dbf, query.record(), lpuCode)

        dbf.close()
コード例 #20
0
ファイル: StatReportF131ByRaion.py プロジェクト: dio4/vista_1
def getRegion(clientId):
    #    if clientId == 2930:
    #        pass
    clientAddressRecord = getClientAddress(clientId, 0)
    if clientAddressRecord:
        address = getAddress(clientAddressRecord.value('address_id'))
        #        if not addressInfo:
        #            pass
        area, region, npunkt, street, streettype = getInfisCodes(
            address.KLADRCode, address.KLADRStreetCode, address.number,
            address.corpus)
        #        if not area:
        #            pass
        region = forceString(
            QtGui.qApp.db.translate('kladr.OKATO', 'infis', area, 'NAME'))
        if area == u'ЛО':
            region = u'Ленинградская обл.'


#        if not region:
#            pass
        return region
    else:
        return ''
コード例 #21
0
ファイル: ReportPayers.py プロジェクト: dio4/vista_1
    def params(self):
        params = {}

        params['contractId'] = self.cmbContract.value()
        params['contractText'] = forceString(self.cmbContract.currentText())
        params['financeId'] = self.cmbFinance.value()
        params['financeText'] = self.cmbFinance.currentText()

        params['begDate'] = self.edtBegDate.date()
        params['endDate'] = self.edtEndDate.date()

        params['detailContracts'] = self.chkDetailContracts.isChecked()
        params['printPayerResult'] = self.chkPrintPayerResult.isChecked()

        params['clientOrganisationId'] = self.cmbClientOrganisation.value()
        params['insurerId'] = self.cmbInsurer.value()
        params['specialityId'] = self.cmbSpeciality.value()
        params['personSpecText'] = self.cmbSpeciality.currentText()

        params['freeInputWork'] = self.chkFreeInputWork.isChecked()
        params['freeInputWorkValue'] = forceStringEx(
            self.edtFreeInputWork.text())

        return params
コード例 #22
0
    def setRecord(self, record):
        CItemEditorBaseDialog.setRecord(self, record)

        self.setJobInfo(forceRef(record.value('master_id')))

        dateTime = forceDateTime(record.value('datetime'))
        begDateTime = forceDateTime(record.value('begDateTime'))

        self.lblDatetimeValue.setText(forceString(dateTime))
        setDatetimeEditValue(self.edtBegDate, self.edtBegTime, record, 'begDateTime')
        setDatetimeEditValue(self.edtEndDate, self.edtEndTime, record, 'endDateTime')
        setComboBoxValue(self.cmbStatus, record, 'status')

        if self.cmbStatus.currentIndex() == 2:
            self.modelJobTicketProbe.setEditable(False)
            self.edtBegDate.setEnabled(False)
            self.edtBegTime.setEnabled(False)
            self.edtEndDate.setEnabled(False)
            self.edtEndTime.setEnabled(False)
            self.btnSetBegDateTime.setEnabled(False)
            self.btnSetEndDateTime.setEnabled(False)
            self.cmbStatus.setEnabled(False)

        self.date = dateTime.date()
        self.datetime = begDateTime if begDateTime.date().isValid() else dateTime

        clients, actions = self.getActions()
        self.modelJobTicketProbe.setActionIdList(actions)

        self.cmbStatus.setCurrentIndex(max(self.jobStatusModifier, self.cmbStatus.currentIndex()))

        if clients:
            self.setClientId(clients[0])

            self.setIsDirty(False)
        self.isPostUISet = True
コード例 #23
0
    def outOrgStructureTable(self, cursor, orgStructureData,
                             mapPersonIdToName):
        cursor.movePosition(QtGui.QTextCursor.End)
        #        cursor.setCharFormat(CReportBase.ReportTitle)
        #        cursor.insertText(personName)
        #        cursor.insertBlock()

        tableColumns = [('5%', [u'Кабинет'], CReportBase.AlignLeft)]
        for weekDay in xrange(7):
            name = forceString(QtCore.QDate.longDayName(weekDay +
                                                        1)).capitalize()
            tableColumns.append(('5%', [name,
                                        u'Приём'], CReportBase.AlignLeft))
            tableColumns.append(('8%', ['', u'Врач'], CReportBase.AlignLeft))
        table = createTable(cursor, tableColumns)
        table.mergeCells(0, 0, 2, 1)
        for weekDay in xrange(7):
            table.mergeCells(0, weekDay * 2 + 1, 1, 2)

        dateList = orgStructureData.keys()
        dateList.sort()
        prevIsoWeek = None
        week = [None] * 7
        officesSet = set()
        for date in dateList:
            isoYear, isoWeek, isoWeekDay = date.isocalendar()
            if prevIsoWeek != isoWeek:
                if prevIsoWeek:
                    self.outWeek(table, week, officesSet, mapPersonIdToName)
                    week = [None] * 7
                    officesSet = set()
                prevIsoWeek = isoWeek
            dateData = orgStructureData[date]
            officesSet.update(dateData.keys())
            week[isoWeekDay - 1] = date, dateData
        self.outWeek(table, week, officesSet, mapPersonIdToName)
コード例 #24
0
    def processTable(self, tableName, fields, rows):
        db = QtGui.qApp.db
        table = db.table(tableName)
        tableInfo = self.tables[tableName]
        matchFields = tableInfo['matchFields']
        for row in rows:
            cond = []
            for field in matchFields:
                index = fields.index(tableInfo[field])
                if 0 <= index < len(row):
                    cond.append(table[field].eq(row[index]))
            records = db.getRecordList(table, where=db.joinOr(cond))

            bestRecord = None
            bestScore = 0
            for record in records:
                score = 0
                for field in matchFields:
                    index = fields.index(tableInfo[field])
                    if 0 <= index < len(row):
                        if forceString(record.value(field)).lower() == row[
                                fields.index(tableInfo[field])].lower():
                            score += 1
                if score > bestScore:
                    bestRecord = record
                    bestScore = score
            if bestRecord is not None:
                bestRecord.setValue(
                    'miacCode',
                    toVariant(row[fields.index(tableInfo['miacCode'])]))
                db.updateRecord(table, bestRecord)
                self.nUpdated += 1
            self.nProcessed += 1

            self.progressBar.setValue(self.progressBar.value() + 1)
            QtGui.qApp.processEvents()
コード例 #25
0
ファイル: RCReportList.py プロジェクト: dio4/vista_1
    def setRecord(self, record):
        CRCReportEditorBase.setRecord(self, record)
        setLineEditValue(self.edtReportName, record, 'name')
        queryId = forceRef(record.value('query_id'))

        self.modelParams.loadItems(self.itemId())

        self.setQueryRecord(queryId)

        if not self._recordQuery:
            return
        self.cmbMainTable.setValue(
            forceInt(self._recordQuery.value('mainTable_id')))
        self.modelTree.setMainTableId(self.cmbMainTable.value())
        self.modelTree.setState('')
        self.modelCols.loadItems(queryId)
        self.modelGroups.loadItems(queryId)
        self.modelOrders.loadItems(queryId)
        self.modelConditions.loadItems(queryId)
        self.modelTree.setState(
            forceString(self._recordQuery.value('stateTree')))
        self.modelTableCapGroups.loadItems(self.itemId())
        self.modelTableCap.loadItems(self.itemId())
        self.treeConds.expandAll()
コード例 #26
0
 def getOrgStructures(self, profileId=None):
     db = QtGui.qApp.db
     OrgStructure = db.table('OrgStructure')
     cols = [OrgStructure['id'], OrgStructure['code'], OrgStructure['type']]
     cond = [OrgStructure['deleted'].eq(0)]
     if profileId:
         OSHB = db.table('OrgStructure_HospitalBed')
         cond.extend([
             OrgStructure['id'].inlist(
                 getOrgStructureDescendants(profileId)),
             db.existsStmt(OSHB, [
                 OSHB['master_id'].eq(OrgStructure['id']),
                 OSHB['isPermanent'].eq(1)
             ]), OrgStructure['infisCode'].ne(u'')
         ])
     else:
         cond.extend([
             OrgStructure['parent_id'].isNull(),
             OrgStructure['deleted'].eq(0)
         ])
     return dict([(forceRef(rec.value('id')), {
         'code': forceString(rec.value('code')),
         'type': forceInt(rec.value('type'))
     }) for rec in self.db.getRecordList(OrgStructure, cols, cond)])
コード例 #27
0
ファイル: BeforeRecordClient.py プロジェクト: dio4/vista_1
def printOrder(widget, clientId, toHome, date, office, personId, eventId, num,
               time, timeRange):
    if toHome:
        contextName = 'orderHome'
        typeText = u'Вызов на дом'
    else:
        contextName = 'orderAmb'
        typeText = u'Направление на приём к врачу'
    visitInfo = {
        'clientId': clientId,
        'type': typeText,
        'date': forceString(date),
        'office': office,
        'personId': personId,
        'num': num,
        'time': time.toString('H:mm') if time else '--:--',
        'timeRange': timeRange,
    }
    clientInfo = getClientInfo2(clientId)
    personInfo = clientInfo.getInstance(CPersonInfo, personId)
    eventInfo = clientInfo.getInstance(CEventInfo, eventId)

    data = {
        'event': eventInfo,
        'client': clientInfo,
        'person': personInfo,
        'visit': visitInfo
    }
    templates = getPrintTemplates(contextName)
    if templates:
        templateId = templates[0][1]
        QtGui.qApp.call(widget, applyTemplate, (widget, templateId, data))
    else:
        orderTemplate = getOrderTemplate()
        QtGui.qApp.call(widget, applyTemplateInt,
                        (widget, visitInfo['type'], orderTemplate, data))
コード例 #28
0
ファイル: ClientAttachReport.py プロジェクト: dio4/vista_1
 def _getOrgSections(self):
     u""" Список всех подразделений, являющихся участками, либо содержащих участки в своей структуре """
     if self._orgSections is None:
         tableOrgStructure = self.db.table('OrgStructure')
         cols = [
             tableOrgStructure['id'],
             self.db.func.getOrgStructurePath(
                 tableOrgStructure['id']).alias('path')
         ]
         cond = [
             tableOrgStructure['organisation_id'].eq(
                 QtGui.qApp.currentOrgId()),
             tableOrgStructure['isArea'].ne(COrgStructureAreaInfo.No),
             tableOrgStructure['deleted'].eq(0),
         ]
         sections = set()
         for rec in self.db.iterRecordList(tableOrgStructure, cols, cond):
             sections.add(forceRef(rec.value('id')))
             sections |= set(
                 int(id_str)
                 for id_str in forceString(rec.value('path')).split('.')
                 if id_str)
         self._orgSections = list(sections)
     return self._orgSections
コード例 #29
0
    def parseQueryInfo(self, query, writtenFromZhos):
        recordList = self.makeNeedfulDicts(query)
        for record in recordList:
            actionNote = forceString(record.value('actionNote'))
            personId = forceInt(record.value('id'))
            fromZhos = forceRef(record.value('zhos'))
            name = None
            if not personId:
                name = self.getincognitoName(actionNote, writtenFromZhos,
                                             fromZhos)
                personId = 0
            if not name:
                name = formatName(record.value('lastName'),
                                  record.value('firstName'),
                                  record.value('patrName'))
            setPersonId = forceRef(record.value('setPerson_id'))
            key = name + '%d' % personId

            afore = self.doctorsDict.get(key, None)
            if afore:
                self.addInfo(record, key)
            else:
                self.doctorsDict[key] = [name] + ([0] * 6)
                self.addInfo(record, key)
コード例 #30
0
ファイル: ReportMonthActions.py プロジェクト: dio4/vista_1
    def getDescription(self, params):
        date = params.get('date', QtCore.QDate.currentDate())
        financeId = params.get('financeId', None)
        class_ = params.get('class', None)
        actionTypeGroupId = params.get('actionTypeGroupId', None)
        status = params.get('status', None)
        orgStructureId = params.get('orgStructureId', None)
        personId = params.get('personId', None)
        assistantId = params.get('assistantId', None)
        tissueTypeId = params.get('tissueTypeId', None)

        rows = [u'Год: %d'%date.year(),
                u'Месяц: %s'%[u'январь',
                              u'февраль',
                              u'март',
                              u'апрель',
                              u'май',
                              u'июнь',
                              u'июль',
                              u'август',
                              u'сентябрь',
                              u'октябрь',
                              u'ноябрь',
                              u'декабрь'][date.month()-1]]
        db = QtGui.qApp.db
        if financeId:
            rows.append(u'Тип финансирования: %s'%forceString(db.translate('rbFinance', 'id', financeId, 'name')))
        if not class_ is None:
            rows.append(u'Класс типов действия: %s'%[u'статус', u'диагностика', u'лечение', u'прочие мероприятия'][class_])
        if actionTypeGroupId:
            rows.append(u'Группа типов действий: %s'%forceString(db.translate('ActionType', 'id', actionTypeGroupId, 'CONCAT(code, \' | \', name)')))
        if not status is None:
            rows.append(u'Статус: %s' % CActionType.retranslateClass(False).statusNames[status])
        if orgStructureId:
            rows.append(u'Подразделение: %s'%forceString(db.translate('OrgStructure', 'id', orgStructureId, 'name')))
        if personId:
            rows.append(u'Назначивший: %s'%forceString(db.translate('vrbPersonWithSpeciality', 'id', personId, 'name')))
        if assistantId:
            rows.append(u'Ассистент: %s'%forceString(db.translate('vrbPersonWithSpeciality', 'id', assistantId, 'name')))
        if tissueTypeId:
            rows.append(u'Тип биоматериала: %s'%forceString(db.translate('rbTissueType', 'id', tissueTypeId, 'CONCAT(code, \' | \', name)')))
        return rows