def get_times(self, system_code, entity_code, stream_id): from sirius.blueprints.api.local_service.producer import LocalProducer from sirius.blueprints.api.remote_service.producer import RemoteProducer from sirius.blueprints.api.local_service.risar.entities import \ RisarEntityCode implement = Implementation() reformer = implement.get_reformer(system_code, stream_id) org_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.ORGANIZATION, OperationCode.READ_MANY ) msg = Message(None, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method(org_list_method['method'], org_list_method['template_url']) producer = RemoteProducer() org_msg = producer.send(msg, async=False) for org_data in org_msg.get_data(): try: if not org_data['regionalCode']: continue if not org_data['regionalCode'] in ('1434663', '89',): # todo: для тестов continue msg = self.create_message(system_code, entity_code) # getTimes meta = msg.get_header().meta meta['local_parents_params'] = { 'regionalCode': {'entity': RisarEntityCode.ORGANIZATION, 'id': org_data['regionalCode']}, } producer = LocalProducer() producer.send(msg) except LoggedException: pass
def get_measures_results_planned(self, system_code, entity_code, stream_id): from sirius.blueprints.api.local_service.producer import LocalProducer from sirius.blueprints.api.remote_service.producer import RemoteProducer from sirius.blueprints.api.local_service.risar.entities import \ RisarEntityCode implement = Implementation() reformer = implement.get_reformer(system_code, stream_id) # /api/integration/<int:api_version>/card/list/ card_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.CARD, OperationCode.READ_MANY ) msg = Message(None, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method(card_list_method['method'], card_list_method['template_url']) producer = RemoteProducer() card_msg = producer.send(msg, async=False) for card_data in card_msg.get_data(): # /api/integration/<int:api_version>/card/<card_id>/measures/list/ measures_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.MEASURE, OperationCode.READ_MANY ) dst_url_params = {} dst_url_params.update({ 'card_id': { 'entity': RisarEntityCode.CARD, 'id': str(card_data['card_id']), } }) dst_url_entities = dict((val['entity'], val['id']) for val in dst_url_params.values()) dst_param_ids = [dst_url_entities[param_entity] for param_entity in measures_list_method['params_entities']] dst_url = measures_list_method['template_url'].format(*dst_param_ids) msg = Message(None, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method( measures_list_method['method'], dst_url, ) producer = RemoteProducer() measures_msg = producer.send(msg, async=False) for measure_data in measures_msg.get_data(): msg = self.create_message(system_code, entity_code) # searchServiceRend meta = msg.get_header().meta meta['local_parents_params'] = { 'card_id': {'entity': RisarEntityCode.CARD, 'id': card_data['card_id']}, 'measure_id': {'entity': RisarEntityCode.MEASURE, 'id': measure_data['measure_id']}, } producer = LocalProducer() producer.send(msg)
def get_measures_results(self, system_code, entity_code, stream_id): from sirius.blueprints.api.local_service.producer import LocalProducer from sirius.blueprints.api.remote_service.producer import RemoteProducer from sirius.blueprints.api.local_service.risar.entities import \ RisarEntityCode from sirius.blueprints.api.remote_service.tambov.entities import \ TambovEntityCode implement = Implementation() reformer = implement.get_reformer(system_code, stream_id) # /api/integration/<int:api_version>/card/list/ card_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.CARD, OperationCode.READ_MANY ) data = None # data = { # 'filters': { # 'id': 14 # todo: при тестировании работаем пока с одной картой # } # } implement = Implementation() reformer = implement.get_reformer(system_code, stream_id) msg = Message(data, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method(card_list_method['method'], card_list_method['template_url']) producer = RemoteProducer() card_msg = producer.send(msg, async=False) for card_data in card_msg.get_data(): try: if not reformer.find_remote_id_by_local( TambovEntityCode.SMART_PATIENT, RisarEntityCode.CARD, card_data['card_id'], ): continue msg = self.create_message(system_code, entity_code) # searchServiceRend meta = msg.get_header().meta meta['local_parents_params'] = { 'card_id': {'entity': RisarEntityCode.CARD, 'id': card_data['card_id']}, } producer = LocalProducer() producer.send(msg) except LoggedException: pass
def get_tula_schedules_notused(self, system_code, entity_code, stream_id): from sirius.blueprints.api.local_service.producer import LocalProducer from sirius.blueprints.api.remote_service.producer import RemoteProducer from sirius.blueprints.api.local_service.risar.entities import \ RisarEntityCode implement = Implementation() reformer = implement.get_reformer(system_code, stream_id) org_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.ORGANIZATION, OperationCode.READ_MANY ) msg = Message(None, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method(org_list_method['method'], org_list_method['template_url']) producer = RemoteProducer() org_msg = producer.send(msg, async=False) for org_data in org_msg.get_data(): doctor_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.DOCTOR, OperationCode.READ_MANY ) dst_url_params = {} dst_url_params.update({ 'organization': { 'entity': RisarEntityCode.ORGANIZATION, 'id': str(org_data['LPU_id']), } }) dst_url_entities = dict( (val['entity'], val['id']) for val in dst_url_params.values()) dst_param_ids = [dst_url_entities[param_entity] for param_entity in doctor_list_method['params_entities']] dst_url = doctor_list_method['template_url'].format(*dst_param_ids) msg = Message(None, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method( doctor_list_method['method'], dst_url, ) producer = RemoteProducer() doctor_msg = producer.send(msg, async=False) for doctor_data in doctor_msg.get_data(): if not doctor_data['regional_code']: # мусор continue try: msg = self.create_message( system_code, entity_code, OperationCode.ADD ) # WebSchedule meta = msg.get_header().meta meta['local_parents_params'] = { 'LPU_id': {'entity': RisarEntityCode.ORGANIZATION, 'id': org_data['LPU_id']}, 'regional_code': {'entity': RisarEntityCode.DOCTOR, 'id': doctor_data['regional_code']}, } producer = LocalProducer() producer.send(msg) except LoggedException: pass
def send_exchange_card(self, system_code, entity_code, stream_id): from sirius.blueprints.api.local_service.producer import LocalProducer from sirius.blueprints.api.remote_service.producer import RemoteProducer from sirius.blueprints.api.local_service.risar.entities import \ RisarEntityCode from sirius.blueprints.api.remote_service.tambov.entities import \ TambovEntityCode implement = Implementation() reformer = implement.get_reformer(system_code, stream_id) # /api/integration/<int:api_version>/card/list/ card_list_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.CARD, OperationCode.READ_MANY ) # todo: фильтр для двойняшек data = { 'filters': { 'pregnancyWeek': 32, # в рисар нет таких пока # 'id': 22, } } # data = { # 'filters': { # 'id': 14 # todo: при тестировании работаем пока с одной картой # } # } msg = Message(data, stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method(card_list_method['method'], card_list_method['template_url']) producer = RemoteProducer() card_msg = producer.send(msg, async=False) fname = 'exchange_card_template.xml' rel_path = 'sirius/blueprints/api/remote_service/tambov/active/service/' with open(os.path.join(rel_path, fname)) as pr: template_text = pr.read() exch_card_req = { 'doc': { 'context_type': 'risar_exchange_card', 'template_text': template_text, 'template_name': 'exchange_card', 'id': 0, 'context': '', 'event_id': 345 } } for card_data in card_msg.get_data(): try: if not reformer.find_remote_id_by_local( TambovEntityCode.SMART_PATIENT, RisarEntityCode.CARD, card_data['card_id'], ): continue sub_stream_id = get_stream_id() exch_card_req['doc']['event_id'] = card_data['card_id'] # POST /print_subsystem/fill_template exch_card_method = reformer.get_api_method( SystemCode.LOCAL, RisarEntityCode.EXCHANGE_CARD, OperationCode.ADD ) msg = Message(exch_card_req, sub_stream_id) msg.to_local_service() msg.set_request_type() msg.set_immediate_answer() msg.set_method(exch_card_method['method'], exch_card_method['template_url']) exch_card_msg = producer.send(msg, async=False) exch_card_data = { 'card_LPU': card_data['card_LPU'], 'exch_card': exch_card_msg.get_data(), } msg = Message(exch_card_data, sub_stream_id) msg.to_remote_service() msg.set_send_data_type() meta = msg.get_header().meta meta['local_entity_code'] = entity_code meta['local_operation_code'] = OperationCode.ADD meta['local_main_param_name'] = 'card_id' meta['local_main_id'] = card_data['card_id'] meta['remote_system_code'] = system_code meta['local_parents_params'] = { 'card_id': {'entity': RisarEntityCode.CARD, 'id': card_data['card_id']}, 'regionalCode': {'entity': RisarEntityCode.ORGANIZATION, 'id': card_data['card_LPU']}, } LocalProducer().send(msg) except LoggedException: pass