<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_procedure(self, process_number, std_vs_mfg, params=''):
 		""" 		Initiate a C1219 procedure, the request is written to table 7 and 		the response is read from table 8. 		:param int process_number: The numeric procedure identifier (0 <= process_number <= 2047). 		:param bool std_vs_mfg: Whether the procedure is manufacturer specified 		 or not. True is manufacturer specified. 		:param bytes params: The parameters to pass to the procedure initiation request. 		:return: A tuple of the result code and the response data. 		:rtype: tuple 		"""

		seqnum = random.randint(2, 254)
		self.logger.info('starting procedure: ' + str(process_number) + ' (' + hex(process_number) + ') sequence number: ' + str(seqnum) + ' (' + hex(seqnum) + ')')
		procedure_request = C1219ProcedureInit(self.c1219_endian, process_number, std_vs_mfg, 0, seqnum, params).build()
		self.set_table_data(7, procedure_request)

		response = self.get_table_data(8)
		if response[:3] == procedure_request[:3]:
			return response[3], response[4:]
		else:
			self.logger.error('invalid response from procedure response table (table #8)')
			raise C1219ProcedureError('invalid response from procedure response table (table #8)')