def add(self, contract_id, clinic_id): contract = Contract.query.filter_by(id=contract_id).first() if not contract: patient_info = self.medsenger_api.get_patient_info(contract_id) try: patient_id = int(patient_info['id']) except: raise Exception("No patient info, contract_id = {}".format(contract_id)) patient = Patient.query.filter_by(id=patient_id).first() if not patient: patient = Patient(id=patient_id) self.db.session.add(patient) contract = Contract(id=contract_id, patient_id=patient.id, clinic_id=clinic_id) self.db.session.add(contract) contract.is_active = True contract.clinic_id = clinic_id contract.agent_token = self.medsenger_api.get_agent_token(contract_id).get('agent_token') self.__commit__() return contract