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 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 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 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 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 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 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 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 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 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 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 addColumnElement(self, parentElement, record): column = CXMLHelper.addElement(parentElement, 'COLUMN') self.setRecordValuesToElement( column, record, ['id', 'number', 'field', 'visible', 'extended', 'alias']) return column
def addOrderElement(self, parentElement, record): order = CXMLHelper.addElement(parentElement, 'ORDER') self.setRecordValuesToElement( order, record, ['number', 'field', 'visible', 'extended', 'alias']) return order
def addParamValueElement(self, parentElement, record): param = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement( param, record, ['id', 'value', 'title', 'master_id', 'number'])
def addReportGroupElement(self, parentElement, record): group = CXMLHelper.addElement(parentElement, 'GROUP') self.setRecordValuesToElement(group, record, ['number', 'field']) return group
def addTableElement(self, parentElement, record): table = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement( table, record, ['id', 'name', 'table', 'description', 'visible', 'group']) return table
def addConditionTypeElement(self, parentElement, record): conditionType = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement(conditionType, record, ['id', 'name', 'sign', 'code']) return conditionType
def addFunctionElement(self, parentElement, record): function = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement( function, record, ['id', 'name', 'function', 'description']) return function
def setRecordValuesToElement(self, element, record, fields): for field in fields: CXMLHelper.setValue( CXMLHelper.addElement(element, forceStringEx(field).upper()), self.getValue(record, field))
def addGroupElement(self, parentElement, record): group = CXMLHelper.addElement(parentElement, 'GROUP') self.setRecordValuesToElement( group, record, ['number', 'field', 'visible', 'extended', 'alias']) return group
def addParamTypeElement(self, parentElement, record): paramType = CXMLHelper.addElement(parentElement, 'RECORD') self.setRecordValuesToElement(paramType, record, ['id', 'name', 'code']) return paramType
def addReportParamElement(self, parentElement, record): param = CXMLHelper.addElement(parentElement, 'PARAMETR') self.setRecordValuesToElement(param, record, ['param_id']) return param