Exemple #1
0
    def sendApproved(self, referralCode):
        tableReferral = self.db.table('Referral')
        tableOrganisation = self.db.table('Organisation')

        recReferral = self.db.getRecordEx(tableReferral, '*', tableReferral['netrica_id'].eq(referralCode))

        # Авторизация
        auth = self.api.factory.create('credentials')
        auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken'])
        auth.Organization = forceString(
            self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(),
                              tableOrganisation['netrica_Code']))

        # Данные о направлении
        referral = self.api.factory.create('referral')
        referral.ReferralInfo.IdMq = forceString(recReferral.value('netrica_id'))
        referral.EventsInfo.Target.IsReferralReviwed = True
        referral.EventsInfo.Target.ReferralReviewDate = forceDateTime(QtCore.QDateTime.currentDateTime()).toPyDateTime()
        referral.Target.IsReferralReviewed = True
        referral.Target.ReferralReviewDate = forceDateTime(QtCore.QDateTime.currentDateTime()).toPyDateTime()

        try:
            responce = self.api.service.AgreedFromTargetMo(auth, referral)
            if responce:
                return responce

        except WebFault, err:
            print unicode(err)
Exemple #2
0
 def checkPrivilege(self, resp, query):
     documents = []
     while query.next():
         documentRecord = query.record()
         documents.append(
             CR23ClientPrivilege(
                 forceString(documentRecord.value('serial')),
                 forceString(documentRecord.value('number')),
                 forceString(documentRecord.value('name')),
                 forceString(documentRecord.value('code')),
                 self.toCorrectBegDate(
                     forceDateTime(documentRecord.value('begDate'))),
                 self.toCorrectEndDate(
                     forceDateTime(documentRecord.value('endDate')))))
     if not hasattr(resp._PersonClientCheckResult._PersonClient[0],
                    '_PrivilegeDocuments'):
         return False
     for documentResponse in resp._PersonClientCheckResult._PersonClient[
             0]._PrivilegeDocuments._PrivilegeDocumentClient:
         found = False
         for document in documents:
             if (not hasattr(documentResponse, '_PrivilegeDocumentSeria') or (documentResponse._PrivilegeDocumentSeria.decode('utf-8') == document.serial)) \
                     and documentResponse._PrivilegeDocumentNumber.decode('utf-8') == document.number \
                     and documentResponse._PrivilegeDocumentName.decode('utf-8') == document.name \
                     and documentResponse._PrivilegeCategoryCode.decode('utf-8') == document.code \
                     and documentResponse._PrivilegeDocumentStart[0:7] == document.begDate \
                     and documentResponse._PrivilegeDocumentEnd[0:7] == document.endDate:
                 document.found = True
                 found = True
         if not found:
             return False
     for document in documents:
         if not document.found:
             return False
     return True
Exemple #3
0
 def on_btnCreateVisitBeforeRecordClient_clicked(self):
     if self.clientId:
         beginDate = forceDateTime(self.edtBeginDateVisitBeforeRecordClient.date())
         endDate = forceDateTime(self.edtEndDateVisitBeforeRecordClient.date())
         orgStructureId = self.cmbOrgStructureVisitBeforeRecordClient.value()
         specialityId = self.cmbSpecialityVisitBeforeRecordClient.getValue()
         personId = self.cmbPersonVisitBeforeRecordClient.getValue()
         self.modelVisitByQueueTable.loadData(self.chkNoVisitBeforeRecordClient.isChecked(), self.clientId, beginDate, endDate, orgStructureId, specialityId, personId)
Exemple #4
0
 def writeOrderLeaveHospital(self, record, number):
     self.writeStartElement(
         'l10_orcl')  #детализированный список сведений о выбывших пациентах
     self.writeComment(
         u'детализированный список сведений о выбывших пациентах')
     self.writeTextElement(
         'm10_nzap',
         forceString(number))  #номер записи, уникален в пределах пакета
     self.writeComment(u'номер записи, уникален в пределах пакета')
     self.writeTextElement(
         'm11_ornm',
         forceString(record.value('referralNumber')))  #номер направления
     self.writeComment(u'номер направления')
     self.writeTextElement(
         'm12_ordt',
         forceDate(record.value('referralDate')).toString('yyyy-MM-dd') +
         'T00:00:00')  #дата направления
     self.writeComment(u'дата направления')
     if forceInt(record.value('formMedicalCare')) == 1:
         self.writeTextElement('m13_ortp',
                               '1')  #форма оказания медицинской помощи
     elif forceInt(record.value('formMedicalCare')) == 6:
         self.writeTextElement('m13_ortp', '2')
     elif forceInt(record.value('formMedicalCare')) == 2:
         self.writeTextElement('m13_ortp', '3')
     self.writeComment(u'форма оказания медицинской помощи')
     # else:
     #     self.writeTextElement('m13_ortp', '')
     #в качестве кодов организаций везде используется ИНФИС код
     self.writeTextElement('m14_modcd', self.orgCode)  #код МО
     self.writeComment(u'код МО')
     self.writeTextElement('m15_dttmfh',
                           forceDateTime(record.value('setDate')).toString(
                               'yyyy-MM-ddThh:mm:ss'))  #дата госпитализации
     self.writeComment(u'дата госпитализации')
     self.writeTextElement('m16_dttmlv',
                           forceDateTime(
                               record.value('actLeavBegDate')).toString(
                                   'yyyy-MM-ddThh:mm:ss'))  #дата выбытия
     self.writeComment(u'дата выбытия')
     self.writePerson(17, record)  #персональные данные пациента
     self.writeComment(u'персональные данные пациента')
     hospitalBedCode = forceString(record.value('hospitalBedCode'))
     if hospitalBedCode:
         self.writeTextElement('m18_kpkcd',
                               hospitalBedCode)  #код профиля койки
         self.writeComment(u'код профиля койки')
     orgStructureCode = forceString(record.value('orgStructureCode'))
     if orgStructureCode:
         self.writeTextElement('m19_sccd', orgStructureCode)  #код отделения
         self.writeComment(u'код отделения')
     self.writeTextElement(
         'm20_crdnum', forceString(record.value(
             'externalId')))  #номер карты стационарного больного
     self.writeComment(u'номер карты стационарного больного')
     # self.writeTextElement('m21_zerr', '') #служебное поле
     self.writeEndElement()
Exemple #5
0
    def saveItems(self, masterId):
        if self._items is not None:
            db = QtGui.qApp.db
            table = self._table

            db.transaction()
            try:
                db.deleteRecord(table,
                                table[self.masterIdFieldName].eq(masterId))

                curDatetime = QtCore.QDateTime.currentDateTime()

                updateFields = [
                    'createDatetime', 'createPerson_id', 'modifyDatetime',
                    'modifyPerson_id', 'master_id', 'userRight_id'
                ]
                fields = ['id'] + updateFields
                values = [
                    (forceRef(rec.value('id')),
                     forceDateTime(rec.value('createDatetime'))
                     or curDatetime, forceRef(rec.value('createPerson_id'))
                     or QtGui.qApp.userId, curDatetime, QtGui.qApp.userId,
                     masterId, forceRef(rec.value('userRight_id')))
                    for rec in self._items
                ]
                db.insertValues(table,
                                fields,
                                values,
                                updateFields=updateFields)
                db.commit()
            except Exception:
                db.rollback()

            self.setDirty(False)
Exemple #6
0
 def _initByRecord(self, record):
     self._datetime = CDateTimeInfo(forceDateTime(record.value('datetime')))
     self._idx = forceInt(record.value('idx'))
     self._jobType = self.getInstance(CJobTypeInfo,
                                      forceRef(record.value('jobType_id')))
     self._orgStructure = self.getInstance(
         COrgStructureInfo, forceRef(record.value('orgStructure_id')))
     self._status = forceInt(record.value('status'))
     self._label = forceString(record.value('label'))
     self._note = forceString(record.value('note'))
     self._begDateTime = CDateTimeInfo(
         forceDateTime(record.value('begDateTime')))
     self._endDateTime = CDateTimeInfo(
         forceDateTime(record.value('endDateTime')))
     self._eQueueTicket = self.getInstance(
         CEQTicketInfo, forceDateTime(record.value('eQueueTicket_id')))
Exemple #7
0
    def on_printSelected(self):
        items = self.model().items()
        rows = self.getSelectedRows()
        items = [(row, items[row]) for row in rows]
        temp = OrderedDict()
        for row, item in items:
            actionType = item[1]._actionType
            if not temp.has_key(actionType):
                temp[actionType] = []
            temp[actionType].append(
                (row, forceDateTime(item[0].value('directionDate'))))

        data = OrderedDict()
        for actionType, actionData in temp.items():
            data[actionType.id] = {
                'name': actionType.name,
                'actionData': actionData,
                'templates': getPrintTemplates(actionType.context)
            }
        dlg = CActionTemplatePrintWidget()
        self.connect(dlg, QtCore.SIGNAL('printActionTemplateList'),
                     self.on_printActionTemplateList)
        dlg.setItems(
            data, self._isDirty,
            forceBool(
                QtGui.qApp.preferences.appPrefs.get('groupPrintWithoutDialog',
                                                    QtCore.QVariant())))
        if dlg.model._items:
            dlg.exec_()
        else:
            dlg.printOnly()
Exemple #8
0
 def updReferral(self):
     refInfo = {}
     refInfo['type'] = self.cmbReferralType.value()
     refInfo['number'] = self.edtReferralNumber.text()
     refInfo['refDate'] = forceDateTime(self.edtReferralDate.date()).toPyDateTime()
     refInfo['MKB'] = forceString(self.cmbReferralMKB.text())
     refInfo['plannedDate'] = forceDateTime(self.edtReferralPlanedDate.date()).toPyDateTime()
     refInfo['relegateMO'] = forceString(self.cmbRelegateMo.value())
     refInfo['medProfile'] = forceString(self.cmbSpeciality.value())
     refInfo['netrica_id'] = forceString(self.recReferral.value('netrica_id'))
     service = NetricaServices()
     responce = service.updateReferral(refInfo)
     if responce:
         return True
     else:
         return False
Exemple #9
0
    def _load(self):
        from Events.ActionInfo import CUnitInfo

        db = QtGui.qApp.db
        record = db.getRecord('TakenTissueJournal', '*',
                              self.id) if self.id else None
        if record:
            self._client = self.getInstance(
                CClientInfo, forceRef(record.value('client_id')))
            self._tissueType = self.getInstance(
                CTissueTypeInfo, forceRef(record.value('tissueType_id')))
            self._externalId = forceString(record.value('externalId'))
            self._number = forceString(record.value('externalId'))
            self._amount = forceInt(record.value('amount'))
            self._unit = self.getInstance(CUnitInfo,
                                          forceRef(record.value('unit_id')))
            self._datetimeTaken = CDateTimeInfo(
                forceDateTime(record.value('datetimeTaken')))
            self._execPerson = self.getInstance(
                CPersonInfo, forceRef(record.value('execPerson_id')))
            self._note = forceString(record.value('note'))
            return True
        else:
            self._client = self.getInstance(CClientInfo, None)
            self._tissueType = self.getInstance(CTissueTypeInfo, None)
            self._externalId = ''
            self._number = ''
            self._amount = 0
            self._unit = self.getInstance(CUnitInfo, None)
            self._datetimeTaken = CDateTimeInfo()
            self._execPerson = self.getInstance(CPersonInfo, None)
            self._note = ''
            return False
Exemple #10
0
def selectTasks(probeIdList):
    # возвращает список пар ( задание-на-исследование, список-исследуемых-параметров )
    # где задание-на-исследование это кортеж ( id-оборудования, наклейка, id-пациента, время-забора)
    # а каждый исследуемый параметр характеризуется кортежем ( id-пробы, код-теста, имя-теста, код-метериала, имя-материала, признак-срочности)
    result = []
    db = QtGui.qApp.db
    tableProbe = db.table('Probe')
    tableTissue = db.table('TakenTissueJournal')
    tableEqupmentTest = db.table('rbEquipment_Test')

    table = tableProbe.leftJoin(
        tableEqupmentTest,
        db.joinAnd([
            tableEqupmentTest['id'].eq(tableProbe['workTest_id']),
            tableEqupmentTest['equipment_id'].eq(tableProbe['equipment_id']),
        ]))
    table = table.leftJoin(
        tableTissue, tableTissue['id'].eq(tableProbe['takenTissueJournal_id']))
    stmt = db.selectStmt(table, [
        tableProbe['equipment_id'],
        tableProbe['externalId'],
        tableProbe['id'].alias('probe_id'),
        tableProbe['isUrgent'],
        tableTissue['client_id'],
        tableTissue['datetimeTaken'],
        tableEqupmentTest['hardwareTestCode'],
        tableEqupmentTest['hardwareTestName'],
        tableEqupmentTest['hardwareSpecimenCode'],
        tableEqupmentTest['hardwareSpecimenName'],
    ], tableProbe['id'].inlist(probeIdList), [
        tableProbe['equipment_id'].name(), tableTissue['client_id'].name(),
        tableTissue['datetimeTaken'].name(), tableProbe['externalId'].name(),
        tableProbe['id'].name()
    ])
    query = db.query(stmt)
    prevKey = None
    while query.next():
        record = query.record()
        equipmentId = forceRef(record.value('equipment_id'))
        externalId = forceString(record.value('externalId'))
        clientId = forceRef(record.value('client_id'))
        dateTime = forceDateTime(record.value('datetimeTaken'))
        probeId = forceRef(record.value('probe_id'))
        hardwareTestCode = forceString(record.value('hardwareTestCode'))
        hardwareTestName = forceString(record.value('hardwareTestName'))
        hardwareSpecimenCode = forceString(
            record.value('hardwareSpecimenCode'))
        hardwareSpecimenName = forceString(
            record.value('hardwareSpecimenName'))
        isUrgent = forceBool(record.value('isUrgent'))
        key = (equipmentId, clientId, dateTime.toPyDateTime(), externalId)
        if prevKey != key:
            result.append((key, []))
            prevKey = key
        result[-1][1].append(
            (probeId, hardwareTestCode, hardwareTestName, hardwareSpecimenCode,
             hardwareSpecimenName, isUrgent))
    return result
Exemple #11
0
 def loadData(self, clientId=None):
     etcQueue = 'queue'
     atcQueue = 'queue'
     if clientId:
         self.clientId = clientId
         currentDate = forceDateTime(QtCore.QDate.currentDate())
         db = QtGui.qApp.db
         tableAction = db.table('Action')
         tableEvent = db.table('Event')
         tableActionProperty = db.table('ActionProperty')
         tableActionProperty_Action = db.table('ActionProperty_Action')
         tableActionProperty_rbReason = db.table(
             'ActionProperty_rbReasonOfAbsence')
         tableReason = db.table('rbReasonOfAbsence')
         cols = [
             tableAction['id'], tableAction['setPerson_id'],
             tableAction['person_id'], tableAction['status'],
             tableAction['office'], tableAction['directionDate'],
             tableAction['note'],
             tableActionProperty_Action['id'].alias('APAction_id'),
             tableAction['event_id'], tableReason['name'].alias('reason')
         ]
         actionType = CActionTypeCache.getByCode(atcQueue)
         actionTypeId = actionType.id
         eventType = getEventType(etcQueue)
         eventTypeId = eventType.eventTypeId
         cond = [
             tableEvent['client_id'].eq(self.clientId),
             tableEvent['setDate'].ge(currentDate),
             tableEvent['deleted'].eq(0), tableAction['deleted'].eq(0),
             tableEvent['eventType_id'].eq(eventTypeId),
             tableAction['actionType_id'].eq(actionTypeId)
         ]
         tableQuery = tableAction
         tableQuery = tableQuery.innerJoin(
             tableEvent, tableEvent['id'].eq(tableAction['event_id']))
         tableQuery = tableQuery.leftJoin(
             tableActionProperty,
             tableActionProperty['action_id'].eq(tableAction['id']))
         tableQuery = tableQuery.innerJoin(
             tableActionProperty_Action,
             tableActionProperty_Action['value'].eq(tableAction['id']))
         tableQuery = tableQuery.leftJoin(
             tableActionProperty_rbReason,
             tableActionProperty_rbReason['id'].eq(
                 tableActionProperty['id']))
         tableQuery = tableQuery.leftJoin(
             tableReason,
             tableReason['id'].eq(tableActionProperty_rbReason['value']))
         records = db.getRecordList(tableQuery, cols, cond,
                                    'Action.directionDate')
         self.setItems(records)
     else:
         self.clearItems()
Exemple #12
0
    def setup(self, cols, tableName, order, record, executionPlan, forSelect=False, filterClass=None):
        self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowMaximizeButtonHint | QtCore.Qt.WindowCloseButtonHint)
        self.forSelect = forSelect
        self.executionPlan = executionPlan
        self.record = record
        self.filterClass = filterClass
        self.props = {}
        self.order = order
        self.model = CExecutionPlanModel(self)
        self.tblExecutionPlan.setModel(self.model)
        self.btnEdit.setDefault(not self.forSelect)
        self.tblExecutionPlan.setFocus(QtCore.Qt.OtherFocusReason)

        directionDateTime = forceDateTime(record.value('directionDate'))
        self.edtDirectionDate.setDate(directionDateTime.date())
        self.edtDirectionTime.setTime(directionDateTime.time())
        self.cmbSetPerson.setValue(forceRef(record.value('setPerson_id')))
        self.isEditor = False if forceDateTime(record.value('endDate')) else True
        self.specifiedName = forceString(record.value('specifiedName'))
        self.actionTypeId = forceRef(record.value('actionType_id'))
        begDateTime = forceDateTime(record.value('begDate'))
        begDate = begDateTime.date()
        self.edtBegDate.setDate(begDate)
        duration = forceInt(record.value('duration'))
        plannedEndDateTime = forceDateTime(record.value('plannedEndDate'))
        if not plannedEndDateTime:
            plannedEndDateTime = begDateTime.addDays(duration-1)
        plannedEndDate = plannedEndDateTime.date()
        self.edtEndDate.setDate(plannedEndDate)
        self.edtDuration.setValue(duration)
        self.actionId = forceRef(record.value('id'))
        begDateNext = begDate
        while begDateNext <= plannedEndDate:
            if begDateNext not in self.executionPlan.keys():
                self.executionPlan[pyDate(begDateNext)] = {}
            begDateNext = begDateNext.addDays(1)
        self.model.loadData(self.executionPlan)
        self.label.setText(u'всего: %d' % len(self.model.items))

        QtCore.QObject.connect(
            self.tblExecutionPlan.horizontalHeader(), QtCore.SIGNAL('sectionClicked(int)'), self.setSort)
Exemple #13
0
 def __init__(self, model, record=None):
     self._model = model  # type: CJobTicketProbeModel
     self._record = record
     if record:
         self.tissueType = forceRef(record.value('tissueType_id'))
         self.externalID = forceString(record.value('externalId'))
         # self.unit = forceRef(record.value('unit_id'))
         self.datetimeTaken = forceDateTime(record.value('datetimeTaken'))
         self.execPerson = forceRef(record.value('execPerson_id'))
     else:
         self.tissueType = self.execPerson = None
         self.externalID = u''
    def build(self, params):
        bf = QtGui.QTextCharFormat()
        bf.setFontWeight(QtGui.QFont.Bold)

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

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

        begDate = forceDate(params.get('begDate'))
        orgStructId = params.get('orgStructId')

        tableColumns = [
            ('4%', [u'№'], CReportBase.AlignCenter),
            ('14%', [u'Код МО'], CReportBase.AlignCenter),
            ('6%', [u'Дата и время фактической госпитализации'],
             CReportBase.AlignCenter),
            ('20%', [u'Персональные данные пациента'],
             CReportBase.AlignCenter),
            ('14%', [u'Код профиля койки'], CReportBase.AlignCenter),
            ('14%', [u'Код отделения'], CReportBase.AlignCenter),
            ('14%', [u'Номер карты стационарного больного'],
             CReportBase.AlignCenter),
            ('14%', [u'Код МКБ приемного отделения'], CReportBase.AlignCenter)
        ]

        table = createTable(cursor, tableColumns)

        query = selectSendOrdersHospitalUrgently(
            getOrgStructureDescendants(orgStructId), begDate)
        number = 1
        while query.next():
            record = query.record()
            i = table.addRow()
            table.setText(i, 0, number)
            table.setText(i, 1, forceString(record.value('orgCurInfisCode')))
            table.setText(
                i, 2,
                forceDateTime(
                    record.value('setDate')).toString('yyyy-MM-ddThh:mm:ss'))
            table.setText(i, 3, getPersonInfo(record))
            table.setText(i, 4, forceString(record.value('hospitalBedCode')))
            table.setText(i, 5, forceString(record.value('orgStructureCode')))
            table.setText(i, 6, forceString(record.value('externalId')))
            table.setText(i, 7, '')
            number += 1

        return doc
Exemple #15
0
    def updateMedServiceProfile(self, profileDict):
        tableOrganisation = self.db.table('Organisation')
        auth = self.api.factory.create('credentials')
        auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken'])
        auth.Organization = forceString(
            self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(),
                              tableOrganisation['netrica_Code']))
        profile = self.api.factory.create('profileMedService')
        profile.IdProfileMedService.Code = profileDict['profile']
        profile.IdProfileMedService.System = '1.2.643.2.69.1.1.1.56'
        profile.StartDate = forceDateTime(profileDict['begDate']).toPyDateTime()
        profile.EndDate = forceDateTime(profileDict['endDate']).toPyDateTime()
        profile.Address = profileDict['address']
        profile.ContactValue = profileDict['contacts']
        profile.Comment = profileDict['comment']
        try:
            responce = self.api.service.UpdateMedServiceProfile(auth, profile)
            if responce:
                return responce

        except WebFault, err:
            print unicode(err)
Exemple #16
0
    def dumpParams(self, cursor, params, charFormat = QtGui.QTextCharFormat()):
        description = self.getDescription(params)

        description.append(u'Тип финансирования: ДМС')
        description.append(u'Отделение: ' + getOrgStructureName(params.get('orgStructId', u'Все')))
        description.append(u'За период: ' + forceDateTime(params.get('begDateTime')).toString('dd.MM.yyyy hh:mm') + u' по ' + forceDateTime(params.get('endDateTime')).toString('dd.MM.yyyy hh:mm'))

        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()
Exemple #17
0
    def __init__(self, parent, eventId):
        QtCore.QObject.__init__(self, parent)
        db = QtGui.qApp.db
        self._parent = parent
        self._id = eventId
        self._record = db.getRecord('Event', '*', eventId)

        self.eventTypeId = forceRef(self._record.value('eventType_id'))
        self.eventSetDateTime = forceDateTime(self._record.value('setDate'))
        self.eventDate = forceDate(self._record.value('execDate'))
        self.personId = forceRef(self._record.value('setPerson_id'))
        orgId = forceRef(self._record.value('org_id'))
        self.orgId = orgId if orgId else QtGui.qApp.currentOrgId()
        self.personSpecialityId = forceRef(db.translate('Person', 'id', self.personId, 'speciality_id'))

        self.contractId = forceRef(self._record.value('contract_id'))
        if self.contractId:
            self.eventFinanceId = forceRef(db.translate('Contract', 'id', self.contractId, 'finance_id'))
        else:
            self.eventFinanceId = getEventFinanceId(self.eventTypeId)

        self.clientId = forceRef(self._record.value('client_id'))
        self.clientInfo = getClientInfo(self.clientId)
        try:
            clientKLADRCode = self.clientInfo.regAddressInfo.KLADRCode
        except:
            clientKLADRCode = ''
        if KLADRMatch(clientKLADRCode, QtGui.qApp.defaultKLADR()):
            self.clientType = CFakeEventEditor.ctLocal
        elif KLADRMatch(clientKLADRCode, QtGui.qApp.provinceKLADR()):
            self.clientType = CFakeEventEditor.ctProvince
        else:
            self.clientType = CFakeEventEditor.ctOther
        self.clientSex = self.clientInfo.sexCode
        self.clientBirthDate = self.clientInfo.birthDate
        self.clientAge = calcAgeTuple(self.clientBirthDate, self.eventDate)

        workRecord = getClientWork(self.clientId)
        self.clientWorkOrgId = forceRef(workRecord.value('org_id')) if workRecord else None

        self.clientPolicyInfoList = []
        policyRecord = self.clientInfo.compulsoryPolicyRecord
        if policyRecord:
            self.clientPolicyInfoList.append(self.getPolicyInfo(policyRecord))
        policyRecord = self.clientInfo.voluntaryPolicyRecord
        if policyRecord:
            self.clientPolicyInfoList.append(self.getPolicyInfo(policyRecord))

        self.personCache = {}
        self.contractTariffCache = CContractTariffCache()
Exemple #18
0
    def applyAllUpdates(self, updatesDict):
        u"""
        Замена обновленных экшенов и добавление новых
        """

        for record, action in self._items:
            actionId = forceInt(record.value('id'))
            if actionId in updatesDict.keys():
                if forceDateTime(updatesDict[actionId][0].value(
                        'createDatetime')) < self.__openDatetime:
                    idx = self._items.index((record, action))
                    self._items.remove((record, action))
                    self._items.insert(idx, updatesDict[actionId])
                else:
                    self._items.append(updatesDict[actionId])
Exemple #19
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
 def setRecord(self, record):
     CItemEditorBaseDialog.setRecord(self, record)
     dt = forceDateTime(record.value('dateMessage'))
     self.edtDateMessage.setMinimumDateTime(dt)
     self.edtDateMessage.setDateTime(dt)
     self.cmbAgreementType.setValue(
         forceInt(record.value('agreementType_id')))
     self.cmbResponsiblePerson.setValue(
         forceInt(record.value('responsiblePerson_id')))
     self.edtCosignatory.setText(forceString(record.value('cosignatory')))
     self.edtCosignatoryPost.setText(
         forceString(record.value('cosignatoryPost')))
     self.edtCosignatoryName.setText(
         forceString(record.value('cosignatoryName')))
     self.edtRemark.setPlainText(forceString(record.value('remark')))
Exemple #21
0
 def loadData(self, orgStructureId, jobTypeId, date):
     self.items = []
     try:
         #FIXME: atronah: tableItems.changed - это функция (CJobPlanItem.changed()), а не атрибут типа bool
         if self.tableItems.changed() or (self.tableItems and (not self.tableItems.record or not self.tableItems.tickets)):
             self.tableItems.updateRecord(orgStructureId, jobTypeId, date)
         for ticket in self.tableItems.tickets:
             dateTime = forceDateTime(ticket.value('datetime'))
             item = [  dateTime.time(),
                       forceBool(ticket.value('status')),
                       forceRef(ticket.value('id')),
                       forceRef(ticket.value('master_id')),
                       dateTime.date()
                    ]
             self.items.append(item)
     finally:
         self.reset()
Exemple #22
0
 def getData(self, query, params):
     data = {}
     while query.next():
         record = query.record()
         clientId = forceInt(record.value('client_id'))
         eventId = forceInt(record.value('event_id'))
         isPrimary = forceInt(record.value('isPrimary'))
         orgStructureId = forceInt(record.value('orgStructure_id'))
         execDate = forceDateTime(record.value('execDate'))
         MKB = forceString(record.value('MKB'))[:3]
         data.setdefault(clientId, []).append({
             'eventId': eventId,
             'isPrimary': isPrimary,
             'orgStructureId': orgStructureId,
             'execDate': execDate,
             'MKB': MKB
         })
     sortedData = {}
     for clientId, eventList in data.iteritems():
         primaryFound = False
         for event in eventList:
             if not event.get('isPrimary') in [1, 2]:
                 continue
             if event.get('isPrimary') == 2 and not event.get('MKB'):
                 continue
             if primaryFound and event.get('isPrimary') == 1:
                 continue
             if not primaryFound and event.get('isPrimary') == 1:
                 primaryFound = True
                 sortedData.setdefault(clientId, {}).setdefault(
                     event.get('MKB'), event)
             if event.get('isPrimary') == 2:
                 sortedData.setdefault(clientId, {}).setdefault(
                     event.get('MKB'), event)
     for clientId in sortedData.iterkeys():
         if u'' in sortedData[clientId] and len(sortedData[clientId]) > 2:
             sortedData[clientId].pop(u'')
         if u'' in sortedData[clientId] and len(sortedData[clientId]) == 2:
             sortedData[clientId][u'']['MKB'] = sortedData[clientId][
                 sortedData[clientId].keys()[1]]['MKB']
             sortedData[clientId][u'']['isPrimary'] = 2
             sortedData[clientId].pop(sortedData[clientId].keys()[1])
     self.createTempTable(sortedData)
     hospitalData = self.getHospitalData(params)
     return hospitalData
Exemple #23
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
Exemple #24
0
    def getQueueInfo(self, profileCode):
        tableOrganisation = self.db.table('Organisation')
        auth = self.api.factory.create('credentials')
        auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken'])
        auth.Organization = forceString(
            self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(),
                              tableOrganisation['netrica_Code']))

        options = self.api.factory.create('options')
        options.ReferralInfo.ProfileMedService.Code = profileCode
        options.ReferralInfo.ProfileMedService.System = '1.2.643.2.69.1.1.1.56'
        options.DateReport = forceDateTime(QtCore.QDate.currentDate()).toPyDateTime()
        try:
            responce = self.api.service.GetQueueInfo(auth, options)
            if responce:
                return responce

        except WebFault, err:
            print unicode(err)
Exemple #25
0
    def sendCancellation(self, referralCode):
        errors = ErrorList()

        if referralCode:
            tableReferral = self.db.table('Referral')
            tableOrganisation = self.db.table('Organisation')

            recReferral = self.db.getRecordEx(tableReferral, '*', tableReferral['netrica_id'].eq(referralCode))
            recOrganisation = self.db.getRecordEx(tableOrganisation, '*', tableOrganisation['id'].eq(QtGui.qApp.currentOrgId()))

            if not forceInt(recOrganisation.value('isMedical')) in (1, 2):
                errors.addError(u'У выбраной в умолчаниях организации поле isMedical должно быть 1 или 2')

            if errors.getErrors():
                errors.showError()
                return

            # Авторизация
            auth = self.api.factory.create('credentials')
            auth.Token = forceString(QtGui.qApp.preferences.appPrefs['UOServiceToken'])
            auth.Organization = forceString(
                self.db.translate(tableOrganisation, tableOrganisation['id'], QtGui.qApp.currentOrgId(),
                                  tableOrganisation['netrica_Code']))

            # Данные о аннулировании
            referral = self.api.factory.create('referral')
            referral.EventsInfo.Cancellation.Date = forceDateTime(QtCore.QDateTime.currentDateTime()).toPyDateTime()
            referral.EventsInfo.Cancellation.CancellationReason.Code = '5'
            referral.EventsInfo.Cancellation.CancellationReason.System = '1.2.643.2.69.1.1.1.60'
            if forceInt(recOrganisation.value('isMedical') == 1):
                referral.EventsInfo.Cancellation.CancellationSource.Code = '3'
            elif forceInt(recOrganisation.value('isMedical') == 2):
                referral.EventsInfo.Cancellation.CancellationSource.Code = '2'
            referral.EventsInfo.Cancellation.CancellationSource.System = '1.2.643.2.69.1.1.1.49'
            referral.ReferralInfo.IdMq = forceString(recReferral.value('netrica_id'))
            try:
                responce = self.api.service.Cancellation(auth, referral)
                if responce:
                    return responce
            except WebFault, err:
                print unicode(err)
            except:
Exemple #26
0
 def writeOrderHospitalUrgently(self, record, number):
     self.writeStartElement(
         'l10_orcl'
     )  #детализированный список сведений об экстренных госпитализациях
     self.writeComment(
         u'детализированный список сведений об экстренных госпитализациях')
     self.writeTextElement(
         'm10_nzap',
         forceString(number))  #номер записи, уникален в пределах пакета
     self.writeComment(u'номер записи, уникален в пределах пакета')
     #в качестве кодов организаций везде используется ИНФИС код
     self.writeTextElement('m11_modcd', self.orgCode)  #код МО
     self.writeComment(u'код МО')
     self.writeTextElement(
         'm12_dttmfh',
         forceDateTime(
             record.value('setDate')).toString('yyyy-MM-ddThh:mm:ss')
     )  #дата и время фактической госпитализации
     self.writeComment(u'дата и время фактической госпитализации')
     self.writePerson(13, record)  #персональные данные пациента
     self.writeComment(u'персональные данные пациента')
     hospitalBedCode = forceString(record.value('hospitalBedCode'))
     if hospitalBedCode:
         self.writeTextElement('m14_kpkcd',
                               hospitalBedCode)  #код профиля койки
         self.writeComment(u'код профиля койки')
     orgStructureCode = forceString(record.value('orgStructureCode'))
     if orgStructureCode:
         self.writeTextElement('m15_sccd', orgStructureCode)  #код отделения
         self.writeComment(u'код отделения')
     self.writeTextElement(
         'm16_crdnum', forceString(record.value(
             'externalId')))  #номер карты стационарного больного
     self.writeComment(u'номер карты стационарного больного')
     self.writeTextElement('m17_mkbcd ', '')  #код МКБ приемного отделения
     self.writeComment(u'код МКБ приемного отделения')
     # self.writeTextElement('m18_zerr', '') #служебное поле
     self.writeComment(u'служебное поле')
     self.writeEndElement()
Exemple #27
0
    def getItemFromRecord(self, record):
        begDate = forceDateTime(record.value('begDate'))
        endDate = forceDateTime(record.value('endDate'))
        bedCodeName = forceString(record.value('bedCodeName')).split("  ")
        directionDate = forceDateTime(record.value('directionDate'))

        statusObservation = forceString(record.value('statusObservation')).split("  ")
        statusObservationCode = forceString(statusObservation[0]) if len(statusObservation)>=1 else ''
        statusObservationName = forceString(statusObservation[1]) if len(statusObservation)>=2 else ''
        statusObservationColor = forceString(statusObservation[2]) if len(statusObservation)>=3 else ''

        comfortable = forceString(record.value('comfortable'))
        comfortableList = []
        if comfortable:
            comfortableList = comfortable.split("  ")
        comfortableDate = forceDateTime(QtCore.QVariant(comfortableList[0])) if len(comfortableList)>=1 else ''
        comfortableStatus = forceInt(QtCore.QVariant(comfortableList[1])) if len(comfortableList)>=2 else 0
        if comfortableStatus:
            comfortablePayStatus = getRealPayed(comfortableStatus)
        else:
            comfortablePayStatus = False
        birthDate = forceDate(record.value('birthDate'))
        ageString = forceString(calcAge(birthDate, forceDate(endDate)))
        ageInYears = forceInt(calcAgeInYears(birthDate, forceDate(QtCore.QDate().currentDate())))
        sex = forceInt(record.value('sex'))
        item = {'statusObservationCode' : statusObservationCode,
                'nameFinance' : forceString(record.value('nameFinance')),
                'codeFinance' : forceString(record.value('codeFinance')),
                'feed' : forceBool(record.value('countEventFeedId')),
                'physicalActivityName' : forceString(record.value('physicalActivityName')),
                'clientId' : forceRef(record.value('client_id')),
                'contractInfo': '%s %s %s' % tuple(map(lambda f: forceStringEx(record.value(f)), ['contract_number', 'contract_date', 'contract_resolution'])),
                'externalId' : forceString(record.value('externalId')),
                'clientName' : forceString(record.value('lastName')) + u' ' + forceString(record.value('firstName')) + u' ' + forceString(record.value('patrName')),
                'sex' : self.sex[sex],
                'birthDateRaw' : birthDate,
                'birthDate' : forceString(birthDate),
                'age' : ageString,
                'employable': self.employableCheck(sex, ageInYears),
                'plannedEndDate' : forceDate(record.value('plannedEndDate')),
                'MKB' : forceString(record.value('MKB')),
                'quota':  forceString(record.value('quotaCode')),#quotaTypeClassItems[forceInt(record.value('class'))][0] if forceRef(record.value('class')) >= 0 else u'',
                'codeBed' : forceString(bedCodeName[0]) if len(bedCodeName)>=1 else '' + forceString(bedCodeName[2]) if len(bedCodeName)>=3 else '',
                'nameBed' : forceString(bedCodeName[1]) if len(bedCodeName)>=2 else '',
                'profileBed': forceString(record.value('bedProfile')),
                'nameOS' : forceString(record.value('nameOS')),
                'codeOS' : forceString(record.value('codeOS')),
                'idOS' : forceRef(record.value('idOS')),
                'namePerson' : forceString(record.value('namePerson')),
                'eventId' : forceRef(record.value('eventId')),
                'statusObservationName' : statusObservationName,
                'actionId' : forceRef(record.value('actionId')),
                'actionTypeId' : forceRef(record.value('actionType_id')),
                'statusObservationColor' : statusObservationColor,
                'begDate' : begDate,
                'endDate' : endDate,
                'begDateString' : begDate.toString('dd.MM.yyyy hh:mm'),
                'endDateString' : endDate.toString('dd.MM.yyyy hh:mm'),
                'begDateReceived' : forceDateTime(record.value('setDate')).toString('dd.MM.yyyy hh:mm'),
                'waitingDays': directionDate.daysTo(QtCore.QDateTime.currentDateTime()) if not directionDate.date().isNull() else u'',
                'isHasNotPayedActions' : forceBool(record.value('isExistsNotPayedActions')),     #Определение наличия в событии клиента действий, имеющих тип финансирования ПМУ и без состояния "Оплачено" (задача 482, atronah)
                'comfortableDate' : comfortableDate,
                'comfortablePayStatus' : comfortablePayStatus,
                'patronage': u'да' if forceBool(record.value('patronage')) else u'',
                'currentCommonOSName' : forceStringEx(record.value('currentCommonOSName')),
                'isUnconscious': forceInt(record.value('isUnconscious')),
                'isVIP': forceInt(record.value('isVIP')),
                'vipColor': forceInt(record.value('vipColor')),
                'snils': formatSNILS(forceString(record.value('SNILS'))),
                'directionDate': forceDate(record.value('directionDate'))
                }
        return item
Exemple #28
0
    def build(self, params):
        def selectData(params):
            begDate = params.get('begDate', None).toString(QtCore.Qt.ISODate)
            endDate = params.get('endDate', None).toString(QtCore.Qt.ISODate)

            db = QtGui.qApp.db

            tableClientVIP = db.table('ClientVIP')

            cond = [
                tableClientVIP['createDatetime'].dateLe(endDate),
                tableClientVIP['createDatetime'].dateGe(begDate)
            ]

            stmt = u'''
                SELECT
                    Client.clientName,
                    ClientVIP.createDatetime,
                    Person.name,
                    ClientVIP.comment,
                    'ВЫСТАВЛЕН' AS status
                FROM vrbClientInfo AS Client
                    INNER JOIN ClientVIP ON Client.id = ClientVIP.client_id AND ClientVIP.deleted = 0
                    INNER JOIN vrbPersonWithSpeciality AS Person ON Person.id = ClientVIP.createPerson_id
                WHERE
                    %s
            ''' % db.joinAnd(cond)

            return db.query(stmt)

        # detailPerson = params.get('detailPerson', False)

        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 = [
            ('%2', [u'№ п/п'], CReportBase.AlignRight),
            ('%30', [u'Фамилия, Имя, Отчество'], CReportBase.AlignLeft),
            ('%5', [u'VIP'], CReportBase.AlignLeft),
            ('%5', [u'Проставивший статус'], CReportBase.AlignLeft),
            ('%5', [u'Дата проставления'], CReportBase.AlignLeft),
            ('%5', [u'Комментарий'], CReportBase.AlignLeft)
        ]

        table = createTable(cursor, tableColumns)

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

            clientName = forceString(record.value('clientName'))
            createDatetime = forceDateTime(record.value('createDatetime')).toString('dd.MM.yyyy hh:mm')
            personName = forceString(record.value('name'))
            comment = forceString(record.value('comment'))
            status = forceString(record.value('status'))

            i = table.addRow()
            table.setText(i, 0, i)
            table.setText(i, 1, clientName)
            table.setText(i, 2, status)
            table.setText(i, 3, personName)
            table.setText(i, 4, createDatetime)
            table.setText(i, 5, comment)

        return doc
Exemple #29
0
    def build(self, params):
        def getUserIdList(params):
            begDate = params.get('begDate', None).toString(QtCore.Qt.ISODate)
            endDate = params.get('endDate', None).toString(QtCore.Qt.ISODate)

            db = QtGui.qApp.db

            tableClientVIP = db.table('ClientVIP')

            cond = [
                tableClientVIP['createDatetime'].dateLe(endDate),
                tableClientVIP['createDatetime'].dateGe(begDate)
            ]

            stmt = u'''
                    SELECT
                        Client.clientName,
                        ClientVIP.createDatetime,
                        Person.name,
                        ClientVIP.comment,
                        'ВЫСТАВЛЕН' AS status
                    FROM vrbClientInfo AS Client
                        INNER JOIN ClientVIP ON Client.id = ClientVIP.client_id
                        INNER JOIN vrbPersonWithSpeciality AS Person ON Person.id = ClientVIP.createPerson_id
                    WHERE
                        %s
                ''' % db.joinAnd(cond)

            return db.query(stmt)

        def selectData(params):
            begDate = params.get('begDate', None).toString(QtCore.Qt.ISODate)
            endDate = params.get('endDate', None).toString(QtCore.Qt.ISODate)

            db = QtGui.qApp.db

            tableClientVIP = db.table('ClientVIP')

            cond = [
                tableClientVIP['createDatetime'].dateLe(endDate),
                tableClientVIP['createDatetime'].dateGe(begDate)
            ]

            stmt = u'''
                SELECT
                    Client.id AS clientId,
                    Client.clientName,
                    ClientVIP.createDatetime,
                    Person.name,
                    ClientVIP.comment,
                    IF(ClientVIP.deleted = 0, 'ВЫСТАВЛЕН', 'СНЯТ') AS status
                FROM vrbClientInfo AS Client
                    INNER JOIN ClientVIP ON Client.id = ClientVIP.client_id
                    INNER JOIN vrbPersonWithSpeciality AS Person ON Person.id = ClientVIP.createPerson_id
                WHERE
                    %s
            ''' % db.joinAnd(cond)

            return db.query(stmt)

        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 = [
            ('%2', [u'№ п/п'], CReportBase.AlignRight),
            ('%30', [u'Фамилия, Имя, Отчество'], CReportBase.AlignLeft),
            ('%5', [u'VIP'], CReportBase.AlignLeft),
            ('%5', [u'Проставивший статус'], CReportBase.AlignLeft),
            ('%5', [u'Дата проставления'], CReportBase.AlignLeft),
            ('%5', [u'Комментарий'], CReportBase.AlignLeft)
        ]

        table = createTable(cursor, tableColumns)

        prevRecord = {
            'prevClientId': None,
            'row': None
        }
        rowNumber = 1
        insertMainData = True
        while query.next():
            record = query.record()

            if prevRecord['prevClientId'] is None:
                prevRecord['prevClientId'] = forceInt(record.value('clientId'))
                prevRecord['row'] = 1

            currentClientId = forceInt(record.value('clientId'))
            clientName = forceString(record.value('clientName'))
            createDatetime = forceDateTime(record.value('createDatetime')).toString('dd.MM.yyyy hh:mm')
            personName = forceString(record.value('name'))
            comment = forceString(record.value('comment'))
            status = forceString(record.value('status'))

            i = table.addRow()

            if prevRecord['prevClientId'] != currentClientId:
                table.mergeCells(prevRecord['row'], 1, i - prevRecord['row'], 1)
                table.mergeCells(prevRecord['row'], 0, i - prevRecord['row'], 1)

                prevRecord['prevClientId'] = currentClientId
                prevRecord['row'] = i
                rowNumber += 1
                insertMainData = True

            if insertMainData:
                table.setText(i, 0, rowNumber)
                table.setText(i, 1, clientName)
                insertMainData = False

            table.setText(i, 2, status)
            table.setText(i, 3, personName)
            table.setText(i, 4, createDatetime)
            table.setText(i, 5, comment)

        return doc
Exemple #30
0
    def setRecord(self, record):
        annoyingWidgets = [
            self.cmbDrug, self.edtDosage, self.spbQnt, self.spbNumPerDay,
            self.spbDuration, self.cmbSocCodes
        ]
        for widget in annoyingWidgets:
            widget.blockSignals(True)

        # self.disconnect(self.cmbDrug, QtCore.SIGNAL('currentIndexChanged(int)'), self.drugSelected)
        self.edtDate.setDate(forceDateTime(record.value('dateTime')).date())
        socCode = forceString(record.value('socCode'))
        i = self.cmbSocCodes.findData(socCode)
        self.cmbSocCodes.setCurrentIndex(i)
        pregCard = forceInt(record.value('pregCard'))
        if pregCard > 0:
            self.edtPregCard.setText(QString.number(pregCard))

        #mdldml: см. i2446
        financeId = forceRef(record.value('finance_id'))
        self.cmbFinance.setValue(financeId)
        if financeId:
            db = QtGui.qApp.db
            counterRecord = db.getRecordEx(
                'rbCounter', '`id`',
                "`code`='%s'" % getBookkeeperCode(self.personId))
            if not counterRecord:
                self.cmbFinance.setEnabled(False)

        self.cmbMKB.setText(forceString(record.value('mkb')))
        setLineEditValue(self.edtDosage, record, 'dosage')
        setSpinBoxValue(self.spbQnt, record, 'qnt')
        setLineEditValue(self.edtSigna, record, 'signa')
        setSpinBoxValue(self.spbDuration, record, 'duration')
        setSpinBoxValue(self.spbNumPerDay, record, 'numPerDay')

        formularyFilter = 'master_id = %d AND isSprPC = 1' % forceInt(
            self.drugMasterId)
        if forceInt(record.value('isVk')) == 1:
            self.rbtnVkYes.setChecked(True)
        else:
            self.rbtnVkNo.setChecked(True)
            formularyFilter += ' AND federalCode IS NOT NULL'

        if forceInt(record.value('printMnn')) == 1:
            self.rbtnPrintMNN.setChecked(True)
        else:
            self.rbtnPrintTradeName.setChecked(True)

        self.cmbDrug.setFilter(formularyFilter, order='`name` ASC')
        setRBComboBoxValue(self.cmbDrug, record, 'formularyItem_id')
        context = CInfoContext()
        formularyItem = context.getInstance(
            CDloDrugFormularyItemInfo,
            forceRef(record.value('formularyItem_id')))
        self.rbtnPrintMNN.setEnabled(not formularyItem.mnn.code == u'1')

        if forceInt(record.value('percentage')) == 50:
            self.rbtn50proc.setChecked(True)
        else:
            self.rbtn100proc.setChecked(True)

        setComboBoxValue(self.cmbTerm, record, 'term')
        self.cmbStatus.setCurrentIndex(
            self.modelRecipeStatus.getIndex(forceInt(record.value('status'))))

        # self.connect(self.cmbDrug, QtCore.SIGNAL('currentIndexChanged(int)'), self.drugSelected)
        for widget in annoyingWidgets:
            widget.blockSignals(False)