Example #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)
Example #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)
Example #3
0
    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
Example #4
0
 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)
Example #5
0
    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
Example #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
Example #7
0
 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']
Example #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
Example #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
     )
    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)
Example #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': ''}
Example #12
0
    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()
Example #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
Example #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
Example #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
Example #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
Example #17
0
    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)
    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)
Example #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()
Example #20
0
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 ''
Example #21
0
    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
Example #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
Example #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)
Example #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()
Example #25
0
    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()
Example #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)])
Example #27
0
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))
Example #28
0
 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
Example #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)
Example #30
0
    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