Example #1
0
    def addReportElement(self, rootElement, record):
        report = CXMLHelper.addElement(rootElement, 'REPORT')
        self.setRecordValuesToElement(
            report, record, ['name', 'description', 'editionMode', 'sql'])
        db = QtGui.qApp.db

        queryRecord = db.getRecord(db.table('rcQuery'), '*',
                                   forceInt(record.value('query_id')))
        if queryRecord:
            self.addQueryElement(report, queryRecord)

        params = CXMLHelper.addElement(report, 'PARAMETRS')
        for paramRecord in self.getReportParameterRecords(record.value('id')):
            self.addReportParamElement(params, paramRecord)

        groups = CXMLHelper.addElement(report, 'GROUPS')
        for groupRecord in db.getRecordList(
                'rcReport_Group', '*', 'master_id = %d and deleted = 0' %
                forceInt(record.value('id')), 'number'):
            self.addReportGroupElement(groups, groupRecord)

        capCells = CXMLHelper.addElement(report, 'TABLECAPCELLS')
        for tableCapCellRecord in db.getRecordList(
                'rcReport_TableCapCells', '*',
                'master_id = %d' % forceInt(record.value('id'))):
            self.addCapCellElement(capCells, tableCapCellRecord)

        return report
Example #2
0
    def addRbElement(self, parentElement, rbName):
        rb = CXMLHelper.addElement(parentElement, 'REFBOOK')
        CXMLHelper.setValue(CXMLHelper.addElement(rb, 'NAME'), rbName)
        db = QtGui.qApp.db

        if rbName == 'rcField':
            for record in db.getRecordList('rcField', '*', 'deleted = 0'):
                self.addFieldElement(rb, record)
        elif rbName == 'rcFunction':
            for record in db.getRecordList('rcFunction', '*'):
                self.addFunctionElement(rb, record)
        elif rbName == 'rcConditionType':
            for record in db.getRecordList('rcConditionType', '*',
                                           'deleted = 0'):
                self.addConditionTypeElement(rb, record)
        elif rbName == 'rcValueType':
            for record in db.getRecordList('rcValueType', '*'):
                self.addValueTypeElement(rb, record)
        elif rbName == 'rcTable':
            for record in db.getRecordList('rcTable', '*', 'deleted = 0'):
                self.addTableElement(rb, record)
        elif rbName == 'rcParamType':
            for record in db.getRecordList('rcParamType', '*'):
                self.addParamTypeElement(rb, record)
        elif rbName == 'rcParam':
            for record in db.getRecordList('rcParam', '*'):
                self.addParamElement(rb, record)
        elif rbName == 'rcParamValues':
            for record in db.getRecordList('rcParam_Value', '*'):
                self.addParamValueElement(rb, record)
        return rb
Example #3
0
 def addHeaderElement(self, rootElement):
     header = CXMLHelper.addElement(rootElement, 'HEADER')
     CXMLHelper.setValue(
         CXMLHelper.addElement(header, 'VERSION'),  # Версия взаимодействия
         self.version[:5])
     CXMLHelper.setValue(
         CXMLHelper.addElement(header, 'DATA'),  # Дата
         QtCore.QDate.currentDate().toString(QtCore.Qt.ISODate))
     return header
Example #4
0
    def addEntryElement(self, rootElement, record, entryNumber):
        entryElement = CXMLHelper.addElement(rootElement, 'ZAP')

        CXMLHelper.setValue(
            CXMLHelper.addElement(entryElement,
                                  'N_ZAP'),  # номер позиции записи
            entryNumber)
        patientElement = CXMLHelper.addElement(
            entryElement, 'PACIENT')  # сведения о пациенте
        self.fillPacient(patientElement, record)
        return entryElement, patientElement
Example #5
0
    def addConditionElement(self, parentElement, record):
        condition = CXMLHelper.addElement(parentElement, 'CONDITION')
        self.setRecordValuesToElement(
            condition, record,
            ['field', 'value', 'conditionType_id', 'valueType_id'])

        subConditions = CXMLHelper.addElement(condition, 'CONDITIONS')
        for conditionRecord in self.getConditionRecords(
                record.value('master_id'), record.value('id')):
            self.addConditionElement(subConditions, conditionRecord)
        return condition
Example #6
0
 def addHeaderElement(self, rootElement, destOKATO):
     header = CXMLHelper.addElement(rootElement, 'ZGLV')
     CXMLHelper.setValue(
         CXMLHelper.addElement(header, 'VERSION'),  # Версия взаимодействия
         self.version[:5])
     CXMLHelper.setValue(
         CXMLHelper.addElement(header, 'DATA'),  # Дата
         QtCore.QDate.currentDate().toString(QtCore.Qt.ISODate))
     CXMLHelper.setValue(
         CXMLHelper.addElement(
             header, 'OKATO_OMS'
         ),  # Код ОКАТО территории страхования по ОМС (территория, в которую выставляется счет)
         self.formatOKATO(destOKATO))
     return header
Example #7
0
    def fillPacient(self, patientElement, record):
        CXMLHelper.setValue(
            CXMLHelper.addElement(patientElement, 'VPOLIS'),  # тип полиса
            forceInt(record.value('policyKindCode')))

        policySerial = forceStringEx(record.value('policySerial'))

        if policySerial.lower() != u'еп' and len(policySerial) > 0:
            CXMLHelper.setValue(
                CXMLHelper.addElement(patientElement,
                                      'SPOLIS'),  # серия полиса
                policySerial[:10])
        CXMLHelper.setValue(
            CXMLHelper.addElement(patientElement, 'NPOLIS'),  # номер полиса
            forceStringEx(record.value('policyNumber'))[:20])
Example #8
0
 def addFieldElement(self, parentElement, record):
     field = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(field, record, [
         'id', 'name', 'field', 'ref_id', 'rcTable_id', 'description',
         'visible'
     ])
     return field
Example #9
0
 def addCapCellElement(self, parentElement, record):
     capCell = CXMLHelper.addElement(parentElement, 'CAPCELL')
     self.setRecordValuesToElement(capCell, record, [
         'name', 'row', 'column', 'rowSpan', 'columnSpan', 'alignment',
         'type', 'bold'
     ])
     return capCell
Example #10
0
 def addParamElement(self, parentElement, record):
     param = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(param, record, [
         'id', 'name', 'code', 'title', 'tableName', 'valueType_id',
         'type_id'
     ])
     db = QtGui.qApp.db
     return param
Example #11
0
    def addSankElement(self, entryElement, idCase, record):
        sankElement = CXMLHelper.addElement(entryElement, 'SANK')

        CXMLHelper.setValue(
            CXMLHelper.addElement(sankElement,
                                  'S_CODE'),  # идентификатор санкции
            idCase)
        CXMLHelper.addElement(sankElement, 'S_SUM')  # финансовая санкция
        CXMLHelper.setValue(
            CXMLHelper.addElement(sankElement, 'S_TIP'),  # тип санкции
            1)  # 1 - МЭК, 2 - МЭЭ, 3 - ЭКМП
        CXMLHelper.setValue(
            CXMLHelper.addElement(
                sankElement, 'S_OSN'),  # Код причины отказа (частичной) оплаты
            forceStringEx(record.value('refuseTypeCode')))
        CXMLHelper.setValue(
            CXMLHelper.addElement(sankElement, 'S_IST'),  # источник
            2)  # 1 – ТФОМС1 к МО,
        # 2 – ТФОМС2 к ТФОМС1 (только в протоколе обработ-ки основной части),
        # 3 – уточнённые санкции ТФОМС1 к МО (только в ис-правленной части и далее),
        # 4 – итоговые санк-ции ТФОМС2 к ТФОМС1 (только в протоколе обработ-ки исправленной части),
        # где:
        # ТФОМС1 – ТФОМС террито-рии оказания меди-цинской помощи;
        # ТФОМС2 – ТФОМС террито-рии страхования;
        # МО – МО, оказав-шая медицинскую помощь.

        return sankElement
Example #12
0
    def addAccountElement(self, rootElement, record):
        account = CXMLHelper.addElement(rootElement, 'SCHET')
        accDate = forceDate(record.value('settleDate'))

        CXMLHelper.setValue(
            CXMLHelper.addElement(account, 'YEAR'),  # отчетный год
            accDate.year())
        CXMLHelper.setValue(
            CXMLHelper.addElement(account, 'MONTH'),  # отчетный месяц
            accDate.month())
        CXMLHelper.setValue(
            CXMLHelper.addElement(account, 'NSCHET'),  # номер счета
            forceStringEx(record.value('number')).split(u'/п')[0][:15])
        CXMLHelper.setValue(
            CXMLHelper.addElement(account, 'DSCHET'),  # дата выставления счёта
            forceDate(record.value('exposeDate')).toString(QtCore.Qt.ISODate))
        CXMLHelper.setValue(
            CXMLHelper.addElement(account,
                                  'SUMMAV'),  # сумма, выставленная на оплату
            '%.2f' % forceDouble(record.value('sum')))
        CXMLHelper.setValue(
            CXMLHelper.addElement(account,
                                  'SUMMAP'),  # сумма, принятая к оплате
            '%.2f' % forceDouble(record.value('summap')))
        CXMLHelper.setValue(
            CXMLHelper.addElement(account,
                                  'SANK_MEK'),  # финансовые санкции (МЭК)
            '%.2f' % forceDouble(record.value('sank_mek')))
        CXMLHelper.setValue(
            CXMLHelper.addElement(account,
                                  'SANK_MEE'),  # финансовые санкции (МЭЭ)
            '%.2f' % 0.0)
        CXMLHelper.setValue(
            CXMLHelper.addElement(account,
                                  'SANK_EKMP'),  # финансовые санции (ЭКМП)
            '%.2f' % 0.0)
        return account
Example #13
0
    def addQueryElement(self, parentElement, record):
        query = CXMLHelper.addElement(parentElement, 'QUERY')
        self.setRecordValuesToElement(
            query, record,
            ['id', 'name', 'stateTree', 'referencedField', 'mainTable_id'])
        db = QtGui.qApp.db

        columns = CXMLHelper.addElement(query, 'COLUMNS')
        for columnRecord in db.getRecordList(
                'rcQuery_Cols', '*', 'master_id = %d and deleted = 0' %
                forceInt(record.value('id')), 'number'):
            self.addColumnElement(columns, columnRecord)

        orders = CXMLHelper.addElement(query, 'ORDERS')
        for orderRecord in db.getRecordList(
                'rcQuery_Order', '*', 'master_id = %d and deleted = 0' %
                forceInt(record.value('id')), 'number'):
            self.addOrderElement(orders, orderRecord)

        groups = CXMLHelper.addElement(query, 'GROUPS')
        for groupRecord in db.getRecordList(
                'rcQuery_Group', '*', 'master_id = %d and deleted = 0' %
                forceInt(record.value('id')), 'number'):
            self.addGroupElement(groups, groupRecord)

        conds = CXMLHelper.addElement(query, 'CONDITIONS')
        for headConditionRecord in self.getConditionRecords(
                record.value('id')):
            self.addConditionElement(conds, headConditionRecord)

        subQuerys = CXMLHelper.addElement(query, 'QUERYES')
        subQueryIdList = [
            u"'%s'" % forceString(subQueryId) for subQueryId in re.findall(
                'q(\d+)', forceString(record.value('stateTree')))
        ]
        if subQueryIdList:
            for queryRecord in db.getRecordList(
                    'rcQuery', '*', 'id in (%s)' % u', '.join(subQueryIdList)):
                self.addQueryElement(subQuerys, queryRecord)

        return query
Example #14
0
    def addEventElement(self, entryElement, idCase, record):
        eventElement = CXMLHelper.addElement(entryElement, 'SLUCH')

        idCaseElement = CXMLHelper.addElement(eventElement, 'IDCASE')
        if idCase is not None:
            CXMLHelper.setValue(idCaseElement,
                                idCase)  # номер запси в случае реестров
        else:
            self.notIdCase.append(idCaseElement)
        externalId = forceStringEx(record.value('externalId'))
        partsExternalId = externalId.strip().split('#')
        externalId = partsExternalId[0] if len(partsExternalId) > 0 else ""

        CXMLHelper.setValue(
            CXMLHelper.addElement(eventElement,
                                  'NHISTORY'),  # номер истории болезни
            externalId[:50])
        if forceInt(record.value('eventAidUnitCode')) > 0:
            CXMLHelper.setValue(
                CXMLHelper.addElement(
                    eventElement,
                    'IDSP'),  # Код способа оплаты медицинской помощи
                forceInt(record.value('eventAidUnitCode')))
        #atronah: принято решение, что для случая кол-во всегда 1, а цена и сумма равны суммарной стоимости всех услуг
        CXMLHelper.setValue(
            CXMLHelper.addElement(
                eventElement,
                'ED_COL'),  # количество единиц оплаты медицинской помощи
            '%.2f' % 1.0)
        CXMLHelper.setValue(
            CXMLHelper.addElement(eventElement, 'TARIF'),  # тариф
            '%.2f' % forceDouble(record.value('price')))
        CXMLHelper.addElement(eventElement,
                              'SUMV')  # сумма, выставленная к оплате
        CXMLHelper.addElement(
            eventElement, 'OPLATA'
        )  # тип оплаты  # 0 - не принято решение об оплате, 1 - полная оплата, 2 - полный отказ, 3 - частичный отказ
        CXMLHelper.addElement(eventElement, 'SUMP')  # сумма, принятая к оплате
        CXMLHelper.addElement(eventElement,
                              'SANK_IT')  # сумма санкций по случаю

        return eventElement
Example #15
0
 def addColumnElement(self, parentElement, record):
     column = CXMLHelper.addElement(parentElement, 'COLUMN')
     self.setRecordValuesToElement(
         column, record,
         ['id', 'number', 'field', 'visible', 'extended', 'alias'])
     return column
Example #16
0
 def addOrderElement(self, parentElement, record):
     order = CXMLHelper.addElement(parentElement, 'ORDER')
     self.setRecordValuesToElement(
         order, record, ['number', 'field', 'visible', 'extended', 'alias'])
     return order
Example #17
0
 def addParamValueElement(self, parentElement, record):
     param = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(
         param, record, ['id', 'value', 'title', 'master_id', 'number'])
Example #18
0
 def addReportGroupElement(self, parentElement, record):
     group = CXMLHelper.addElement(parentElement, 'GROUP')
     self.setRecordValuesToElement(group, record, ['number', 'field'])
     return group
Example #19
0
 def addTableElement(self, parentElement, record):
     table = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(
         table, record,
         ['id', 'name', 'table', 'description', 'visible', 'group'])
     return table
Example #20
0
 def addConditionTypeElement(self, parentElement, record):
     conditionType = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(conditionType, record,
                                   ['id', 'name', 'sign', 'code'])
     return conditionType
Example #21
0
 def addFunctionElement(self, parentElement, record):
     function = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(
         function, record, ['id', 'name', 'function', 'description'])
     return function
Example #22
0
 def setRecordValuesToElement(self, element, record, fields):
     for field in fields:
         CXMLHelper.setValue(
             CXMLHelper.addElement(element,
                                   forceStringEx(field).upper()),
             self.getValue(record, field))
Example #23
0
 def addGroupElement(self, parentElement, record):
     group = CXMLHelper.addElement(parentElement, 'GROUP')
     self.setRecordValuesToElement(
         group, record, ['number', 'field', 'visible', 'extended', 'alias'])
     return group
Example #24
0
 def addParamTypeElement(self, parentElement, record):
     paramType = CXMLHelper.addElement(parentElement, 'RECORD')
     self.setRecordValuesToElement(paramType, record,
                                   ['id', 'name', 'code'])
     return paramType
Example #25
0
 def addReportParamElement(self, parentElement, record):
     param = CXMLHelper.addElement(parentElement, 'PARAMETR')
     self.setRecordValuesToElement(param, record, ['param_id'])
     return param