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
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
def createXMLDocument(self, accountRecord, destOKATO): doc = CXMLHelper.createDomDocument(rootElementName='ZL_LIST', encoding=self.encoding) rootElement = CXMLHelper.getRootElement(doc) self.addHeaderElement(rootElement, destOKATO) accountElement = self.addAccountElement(rootElement, accountRecord) return doc, accountElement
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
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
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
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
def addCapCellElement(self, parentElement, record): capCell = CXMLHelper.addElement(parentElement, 'CAPCELL') self.setRecordValuesToElement(capCell, record, [ 'name', 'row', 'column', 'rowSpan', 'columnSpan', 'alignment', 'type', 'bold' ]) return capCell
def processFile(self, fileName): docFile = None try: isOk, sourceType, sourceInfis, destType, destInfis, year, month, number = self.parseFileName(fileName) if not isOk: return False if not zipfile.is_zipfile(fileName): raise Exception(u'Файл %s не является zip-архивом' % fileName) zipFile = zipfile.ZipFile(fileName, 'r') zipItems = zipFile.namelist() if not zipItems: raise Exception(u'Zip-архив "%s" пуст' % fileName) zipItem = next((item for item in zipItems if not item.startswith('L')), None) if zipItem is None: raise Exception(u'Необходимый файл в zip-архиве не найден' % fileName) docFile = zipFile.open(zipItem) self.processDocument(CXMLHelper.loadDocument(QtCore.QString(docFile.read().decode(self.encoding))), sourceInfis) except Exception, e: self.logger().warning(u'Не удалось провести импорт (%s)' % e.message) self.onException() return False
def processRespFile(self, fileName): """Импортирует указанный файл :param fileName: имя файла для импорта (R|D)<SS><DD><YY><NNNN>.(oms|xml) (описание имени см в `parseFileName`) :return: True, если импорт файла прошел успешно, False в ином случа :raise: Exception("архив пуст"), если архив пуст """ docFile = None try: if zipfile.is_zipfile(fileName): zipFile = zipfile.ZipFile(fileName, 'r') zipItems = zipFile.namelist() if not zipItems: raise Exception(u'zip-архив "%s" пуст' % fileName) docFile = zipFile.open(zipItems[0]) else: docFile = open(fileName, 'r') self.processRespDocument(CXMLHelper.loadDocument(QtCore.QString(docFile.read().decode(self.encoding)))) except Exception, e: self.logger().warning(u'Не удалось импортировать файл "%s" (%s)' % (fileName, e.message)) self.onException() return False
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
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])
def openZip(self, zipFileName): if not zipfile.is_zipfile(forceString(zipFileName)): QtGui.qApp.processEvents() return False archive = zipfile.ZipFile(forceString(zipFileName), "r") names = archive.namelist() for fileName in names: docFile = archive.read(fileName) self.documents[fileName] = CXMLHelper.loadDocument(docFile)
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
def processFile(self, fileName, accInfo): """Импортирует указанный файл :param fileName: имя файла для импорта (A)<SS><DD><YY><NNNN>.(oms|xml) (описание имени см в `parseFileName`) :return: True, если импорт файла прошел успешно, False в ином случа :raise: Exception("архив пуст"), если архив пуст """ docFile = None try: isOk, destInfis, sourceInfis, year, number = self.parseFileName( fileName) if destInfis[:2] != self._orgInfis[:2]: self.logger().info( u'Пропуск обработки файла "%s": территория назначения (%s) не соответствует текущей (%s)' % (fileName, destInfis, self._orgInfis)) return False if zipfile.is_zipfile(fileName): zipFile = zipfile.ZipFile(fileName, 'r') zipItems = zipFile.namelist() if not zipItems: raise Exception(u'oms-архив "%s" пуст' % fileName) docFile = zipFile.open(zipItems[0]) else: docFile = open(fileName, 'r') self.processDocument( CXMLHelper.loadDocument( QtCore.QString(docFile.read().decode(self.encoding))), sourceInfis, year, accInfo) self.logger().info(u'Импорт окончен %s\nОбновлено записей: %s' % (QtCore.QTime.currentTime().toString('hh:mm'), accInfo['countUpdate'])) except Exception, e: self.logger().warning(u'Не удалось импортировать файл "%s" (%s)' % (fileName, e.message)) self.onException() return False
def processReport(self, doc): db = QtGui.qApp.db rootElement = CXMLHelper.getRootElement(doc) reportElement = self.getElement(rootElement, 'REPORT', True) reportName = self.getElementValue(reportElement, 'NAME') reportId = db.translate('rcReport', 'name', reportName, 'id') if reportId: msg = QtGui.QMessageBox.warning( self._parent._parent, u'Внимание!', u"Отчёт с именем '%s' уже существует.\nOk - заменить.\nSave - сохранить с другим именем." % reportName, QtGui.QMessageBox.Ok | QtGui.QMessageBox.Save | QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Ok) if msg == QtGui.QMessageBox.Cancel: return elif msg == QtGui.QMessageBox.Ok: self.deleteReport(reportId) elif msg == QtGui.QMessageBox.Save: idx = 1 while db.translate('rcReport', 'name', u'%s_%d' % (reportName, idx), 'id'): idx += 1 reportName = u'%s_%d' % (reportName, idx) self.parceReport(reportElement, reportName)
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
def createXMLDocument(self, title): doc = CXMLHelper.createDomDocument(rootElementName='MAIN', encoding=self.encoding) rootElement = CXMLHelper.getRootElement(doc) self.addHeaderElement(rootElement) return doc, rootElement
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
def addReportParamElement(self, parentElement, record): param = CXMLHelper.addElement(parentElement, 'PARAMETR') self.setRecordValuesToElement(param, record, ['param_id']) return param
def process(self, accountId): self.isAbort = False self.phaseReset(11) db = QtGui.qApp.db tableOrganisation = self._db.table('Organisation') tableAccount = self._db.table('Account') tableContract = self._db.table('Contract') tableContractPayer = tableOrganisation.alias( 'ContractPayer') # Сторонний фонд, в который происходит выгрузка tableContractRecipient = tableOrganisation.alias( 'ContractRecipient') # Текущий фонд, откуда происходит выгрузка queryTable = tableAccount.innerJoin( tableContract, tableContract['id'].eq(tableAccount['contract_id'])) queryTable = queryTable.innerJoin( tableContractPayer, tableContractPayer['id'].eq(tableContract['payer_id'])) queryTable = queryTable.innerJoin( tableContractRecipient, tableContractRecipient['id'].eq(tableContract['recipient_id'])) cols = [ tableAccount['settleDate'], tableAccount['number'], tableAccount['exposeDate'], tableAccount['sum'], tableContractPayer['OKATO'].alias('payerOKATO'), tableContractPayer['infisCode'].alias('payerInfis'), tableContractPayer['area'].alias('payerArea'), tableContractRecipient['OKATO'].alias('recipientOKATO'), tableContractRecipient['infisCode'].alias('recipientInfis') ] self.nextPhase(3, u'Загрузка данных по счету') accountRecord = self._db.getRecordEx( queryTable, cols, where=tableAccount['id'].eq(accountId)) currentInfis = forceStringEx(accountRecord.value('recipientInfis')) insuranceArea = forceStringEx(accountRecord.value('payerArea')) insurerFundOKATO = forceStringEx(accountRecord.value('payerOKATO')) insurerFundInfis = forceStringEx(accountRecord.value('payerInfis')) tableAccount = db.table('Account') tableAccountItem = db.table('Account_Item') tablePayRefuseType = db.table('rbPayRefuseType') tableEvent = db.table('Event') tableMedicalAidUnit = db.table('rbMedicalAidUnit') tableClientPolicy = db.table('ClientPolicy') tablePolicyKind = db.table('rbPolicyKind') cols = [ # account tableAccount['settleDate'], tableAccount['number'], tableAccount['exposeDate'], tableAccount['sum'], tableAccount['payedSum'].alias('summap'), tableAccount['refusedSum'].alias('sank_mek'), # client tableClientPolicy['id'].alias('clientPolicyId'), tablePolicyKind['federalCode'].alias('policyKindCode'), tableClientPolicy['serial'].alias('policySerial'), tableClientPolicy['number'].alias('policyNumber'), # event tableEvent['id'].alias('eventId'), tableEvent['externalId'], tableMedicalAidUnit['federalCode'].alias('eventAidUnitCode'), tableAccountItem['price'], tableAccountItem['sum'].alias('sumv'), u'''IF(Account_Item.date IS NULL AND Account_Item.refuseType_id IS NULL, 0, IF(Account_Item.date IS NOT NULL AND Account_Item.refuseType_id IS NULL, 1, 2)) AS oplata''', 'if(%s IS NULL, Account_Item.sum, 0) AS sump' % tablePayRefuseType['id'], 'if(%s IS NOT NULL, Account_Item.sum, 0) AS sank_it' % tablePayRefuseType['id'], # sank tablePayRefuseType['flatCode'].alias('refuseTypeCode') ] queryTable = tableAccount.innerJoin( tableAccountItem, tableAccountItem['master_id'].eq(tableAccount['id'])) queryTable = queryTable.innerJoin( tableEvent, tableEvent['id'].eq(tableAccountItem['event_id'])) queryTable = queryTable.leftJoin(tableClientPolicy, [ tableClientPolicy['client_id'].isNotNull(), '''ClientPolicy.id = (SELECT MAX(cp.id) FROM ClientPolicy cp WHERE cp.client_id = Event.client_id AND cp.deleted = 0)''' ]) queryTable = queryTable.leftJoin( tablePolicyKind, tablePolicyKind['id'].eq(tableClientPolicy['policyKind_id'])) queryTable = queryTable.leftJoin( tableMedicalAidUnit, tableMedicalAidUnit['id'].eq(tableAccountItem['unit_id'])) queryTable = queryTable.leftJoin(tablePayRefuseType, [ tablePayRefuseType['id'].eq(tableAccountItem['refuseType_id']), tableAccountItem['date'].isNotNull() ]) cond = [ tableAccount['id'].eq(accountId), tableAccountItem['deleted'].eq(0) ] self.nextPhaseStep(u'Загрузка данных по счету') recordList = self._db.getRecordList(queryTable, cols, where=cond) self.nextPhaseStep(u'Загрузка данных завершена') self.accCodeToAccountItemId.clear() entries = {} events = {} idCaseCounter = 0 entryCounter = {} sankCounter = {} self.orgForDeferredFilling.clear() self.personSpecialityForDeferredFilling.clear() eventsTotal = {} oplataTotal = {} sankTotal = {} accountTotal = {} self.nextPhase(len(recordList), u'Обработка позиций счета') for record in recordList: if self.isAbort: self.onAborted() return False if not self.fileNames.has_key(insuranceArea): self.fileNames[insuranceArea] = (insurerFundInfis, currentInfis) if not self.documents.has_key(insuranceArea): self.documents[insuranceArea] = self.createXMLDocument( accountRecord, insurerFundOKATO) doc, accountElement = self.documents[insuranceArea] rootElement = CXMLHelper.getRootElement(doc) clientPolicyId = forceRef(record.value('clientPolicyId')) if not entries.has_key(clientPolicyId): entryCounter[insuranceArea] = entryCounter.setdefault( insuranceArea, 0) + 1 entries[clientPolicyId] = self.addEntryElement( rootElement, record, entryCounter[insuranceArea]) entryElement, _ = entries[clientPolicyId] eventId = forceStringEx(record.value('eventId')) if not events.has_key(eventId): sankTotal[eventId] = {} partsExternalId = forceStringEx( record.value('externalId')).strip().split('#') if len(partsExternalId) >= 3: idCaseCounter = max(idCaseCounter, partsExternalId[2]) events[eventId] = self.addEventElement( entryElement, partsExternalId[2] if len(partsExternalId) >= 3 else None, record) eventElement = events[eventId] refuseTypeCode = forceStringEx(record.value('refuseTypeCode')) if refuseTypeCode: if not sankTotal[eventId].has_key(refuseTypeCode): sankCounter[eventId] = sankCounter.setdefault(eventId, 0) + 1 sankTotal[eventId][refuseTypeCode] = [ self.addSankElement(eventElement, sankCounter[eventId], record=record), 0 ] sankTotal[eventId][refuseTypeCode][1] += forceDouble( record.value('sumv')) if not eventsTotal.has_key(eventId): eventsTotal[eventId] = [0] * 3 oplataTotal[eventId] = [0, 1] eventsTotal[eventId][0] += forceDouble(record.value('sumv')) eventsTotal[eventId][1] += forceDouble(record.value('sump')) eventsTotal[eventId][2] += forceDouble(record.value('sank_it')) oplataTotal[eventId][0] += 1 oplataTotal[eventId][1] *= forceInt(record.value('oplata')) self.nextPhaseStep() for elementIdCase in self.notIdCase: idCaseCounter = forceInt(idCaseCounter) + 1 CXMLHelper.setValue(elementIdCase, idCaseCounter) self.nextPhase(len(eventsTotal), u'Заполнение данных о стоимости случаев') for eventId, total in eventsTotal.iteritems(): eventElement = events[eventId] element = eventElement.firstChildElement('OPLATA') CXMLHelper.setValue( element, 0 if oplataTotal[eventId][1] == 0 else 1 if oplataTotal[eventId][1] == 1 else 2 if oplataTotal[eventId][1] % oplataTotal[eventId][0] == 0 else 3) if self.isAbort: self.onAborted() return False for index, elemName in enumerate(['SUMV', 'SUMP', 'SANK_IT']): element = eventElement.firstChildElement(elemName) CXMLHelper.setValue(element, '%.2f' % total[index]) if not accountTotal.has_key(insuranceArea): accountTotal[insuranceArea] = [0] * 3 accountTotal[insuranceArea][index] += total[index] for refuseTypeCode, total in sankTotal[eventId].iteritems(): sankElement = sankTotal[eventId][refuseTypeCode][0] element = sankElement.firstChildElement('S_SUM') CXMLHelper.setValue(element, '%.2f' % total[1]) self.nextPhaseStep() self.nextPhase(len(accountTotal), u'Заполнение данных об общей стоимости счетов') for insuranceArea, total in accountTotal.iteritems(): if self.isAbort: self.onAborted() return False _, accountElement = self.documents[insuranceArea] for index, elemName in enumerate(['SUMMAV', 'SUMMAP', 'SANK_MEK']): element = accountElement.firstChildElement(elemName) CXMLHelper.setValue(element, '%.2f' % total[index]) self.nextPhaseStep() self.logger().info(u'Завершено') if self.isAbort: self.onAborted() return False return True
def addReportGroupElement(self, parentElement, record): group = CXMLHelper.addElement(parentElement, 'GROUP') self.setRecordValuesToElement(group, record, ['number', 'field']) return group
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
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
def addFunctionElement(self, parentElement, record): function = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement( function, record, ['id', 'name', 'function', 'description']) return function
def addConditionTypeElement(self, parentElement, record): conditionType = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement(conditionType, record, ['id', 'name', 'sign', 'code']) return conditionType
def getRBRecordElementList(self, doc): rootElement = CXMLHelper.getRootElement(doc) rbElement = self.getElement(rootElement, 'REFBOOK', True) return self.getElementList(rbElement, 'RECORD')
def addTableElement(self, parentElement, record): table = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement( table, record, ['id', 'name', 'table', 'description', 'visible', 'group']) return table
def addParamTypeElement(self, parentElement, record): paramType = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement(paramType, record, ['id', 'name', 'code']) return paramType
def addParamValueElement(self, parentElement, record): param = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement( param, record, ['id', 'value', 'title', 'master_id', 'number'])