Example #1
0
def chat(message, args):
	received_number = message.getHeader("from")
	received_body = message.getBody()
	handler = ChatHandler(received_number, received_body)
	contact_number = handler.get_contact_number()
	patient = handler.get_patient()
	period = handler.get_period()
	storeNumber = Patient.objects.all().values_list('contact_number', flat=True)
	if contact_number in storeNumber and period:
		handler.save_and_get_messages(period = period)
	else:
		send_messages_to_patient(patient.confirm_by, patient.contact_number, patient.email, 'ท่านทำรายการไม่ถูกต้อง', 'ท่านทำรายการไม่ถูกต้อง')
Example #2
0
	def save_menu(self, period):
		patient = self.get_patient()
		contact_number = patient.contact_number
		weight = self.weight
		pressure = self.pressure
		drug = self.drug
		voicemail = self.voicemail

		if not patient.check_for_no_duplicate_period(period):
			submitted_records = Record.objects.filter(period=period, datetime__gte=datetime.date.today()).exclude(response__deleted=True)
			html_messages = render_to_string('email/duplicate_records.html', { 'HEADER':'เกิดข้อผิดพลาด! ท่านได้ส่งข้อมูลของช่วงเวลานี้แล้ว','submitted_records': submitted_records })
			messages = "ท่านได้ส่งข้อมูลของช่วงเวลานี้แล้ว "
		else:
			record = patient.create_new_record(period, 'ivr')
			messages = '#' + str(record.id) + ' ช่วง:' + PERIODS[period] + ' '
			if weight:
				weight_entry = record.create_entry_for_record_from_voip(weight=weight)
				messages = messages + "น้ำหนัก:" + str(weight_entry.weight) + " "
			if drug:
				drug_entry = record.create_entry_for_record_from_voip( drug=drug)
				messages = messages + "ยา:" + str(drug_entry.size)+"มก."+ str(drug_entry.amount) + "เม็ด "
			if pressure:
				pressure_entry = record.create_entry_for_record_from_voip( pressure=pressure)
				messages = messages + "ความดัน:" + str(pressure_entry.up)+"/"+ str(pressure_entry.down) + " "
			if voicemail:
				record.voicemail = voicemail['path']
				record.save()
			html_messages = render_to_string('email/confirm_record.html', { 'HEADER':'ระบบบันทึกข้อมูลของท่านเรียบร้อยแล้วค่ะ', 'record': record, 'MEDIA_URL':'http://easycare.sit.kmutt.ac.th/media/' })
		sent = send_messages_to_patient(patient.confirm_by, patient.contact_number, patient.email, messages, html_messages)
		if not sent:
			record.status = "รอการตอบกลับ และยังไม่ได้รับ SMS ยืนยัน"
			record.save()

		#end the call
		self.session.destroy()
Example #3
0
	def save_and_get_messages(self, period):
		patient = self.get_patient()
		weight = self.get_weight()
		pressure = self.get_pressure()
		drug = self.get_drug()

		if period == '':
			html_messages = 'ท่านทำรายการไม่ถูกต้อง กรุณาระบุช่วงเวลาด้วยสัญลักษณ์ p หรือ P'
			messages = "ท่านทำรายการไม่ถูกต้อง กรุณาระบุช่วงเวลา"
		if not patient.check_for_no_duplicate_period(period):
			submitted_records = Record.objects.filter(period=period, datetime__gte=datetime.date.today()).exclude(response__deleted=True)
			html_messages = render_to_string('email/duplicate_records.html', { 'HEADER':'เกิดข้อผิดพลาด! ท่านได้ส่งข้อมูลของช่วงเวลานี้แล้ว','submitted_records': submitted_records })
			messages = "ท่านได้ส่งข้อมูลของช่วงเวลานี้แล้ว "
		elif not weight and not pressure and not drug:
			html_messages = "ผิดพลาด ท่านไม่ได้ใส่ข้อมูลเลย กรุณาใส่ข้อมูล"
			messages =  "ผิดพลาด ท่านไม่ได้ใส่ข้อมูลเลย กรุณาใส่ข้อมูล"
		else:
			record = patient.create_new_record(period, 'sms')
			messages = '#' + str(record.id) + ' ช่วง:' + PERIODS[period] + ' '
			if weight:
				weight_entry = record.create_entry_for_record_from_voip(weight=weight)
				messages = messages + "น้ำหนัก:" + str(weight_entry.weight) + " "
			if drug:
				drug_entry = record.create_entry_for_record_from_voip(drug=drug)
				messages = messages + "ยา:" + str(drug_entry.size)+"มก."+ str(drug_entry.amount) + "เม็ด "
			if pressure:
				pressure_entry = record.create_entry_for_record_from_voip(pressure=pressure)
				messages = messages + "ความดัน:" + str(pressure_entry.up)+"/"+ str(pressure_entry.down) + " "
			html_messages = render_to_string('email/confirm_record.html', { 'HEADER':'ระบบบันทึกข้อมูลของท่านเรียบร้อยแล้วค่ะ', 'record': record })
		
		sent = send_messages_to_patient(patient.confirm_by, patient.contact_number, patient.email, messages, html_messages)
		if not sent:
			record.status = "ระบบส่งข้อความผิดพลาด! ผู้ป่วยยังไม่ได้รับ SMS ยืนยัน"
			record.save()
Example #4
0
def record_create(request):
	if request.method == 'POST': # If the form has been submitted...
		form = RecordForm(request.POST) # A form bound to the POST data
		if form.is_valid(): # All validation rules pass
			period = form.cleaned_data['period']
			submitted_date = form.cleaned_data['submitted_date']

			from django.utils.timezone import utc
			bangkok_tz = timezone.get_default_timezone()
			date = datetime.datetime.strptime(submitted_date, "%Y-%m-%d").date()
			recorded_date = bangkok_tz.normalize(datetime.datetime.combine(date, datetime.datetime.utcnow().time()).replace(tzinfo=utc)) 

			patient = form.get_patient_from_contact_number()
			if patient:
				if patient.check_for_no_duplicate_period(period):
					new_record = patient.create_new_record(period, recorded_date, 'web')
					if new_record.create_entry_for_record_from_web(form):
						html_messages = render_to_string('email/confirm_record.html', { 'record': new_record })
						reply_messages = '#' + str(new_record.id) + ' ช่วง:' + PERIODS[period] + ' '
						if new_record.weight_set.all():
							weight_message = "น้ำหนัก:"
							for data in new_record.weight_set.all():
								weight_message = weight_message + str(data.weight) + ' '
							reply_messages = reply_messages + weight_message
						if new_record.drug_set.all():
							drug_message = "ยา:"
							for data in new_record.drug_set.all():
								drug_message = drug_message + str(data.size)+'มก.'+str(data.amount) + 'เม็ด '
							reply_messages = reply_messages + drug_message
						if new_record.pressure_set.all():
							pressure_message = "ความดัน:"
							for data in new_record.pressure_set.all():
								pressure_message = pressure_message + str(data.up)+'/'+str(data.down) + ' '
							reply_messages = reply_messages + pressure_message
						sent = send_messages_to_patient(patient.confirm_by, patient.contact_number, patient.email, reply_messages, html_messages)
						if sent:
							messages.success(request, "คำร้องขอถูกสร้างแล้ว", extra_tags='alert alert-success')
						else:
							messages.success(request, "ระบบส่งข้อความผิดพลาด คนไข้จะไม่ได้รับข้อความ", extra_tags='alert alert-error')
						return render(request, 'record/create_success.html', { 'HEADER':'ระบบบันทึกข้อมูลของท่านเรียบร้อยแล้วค่ะ', 'record': new_record })
					else:
						messages.error(request, 'ไม่สามารถเซฟได้กรุณาจดเลข "' + str(new_record.id) + '" และติดต่อพยาบาล', extra_tags='alert alert-error')
				else:
					messages.error(request, "ท่านได้ส่งข้อมูลสำหรับช่วงเวลา" + PERIODS[period] + "แล้ว", extra_tags='alert alert-error')
			else:
				messages.error(request, 'หมายเลขโทรศัพท์ของท่านยังไม่ได้ทำการลงทะเบียนเอาไว้ค่ะ', extra_tags='alert alert-error')
	else:
		form = RecordForm(
			initial={'submitted_date': timezone.now().date()},
		) # An unbound form

	return render(request, 'record/create.html', {
		'form': form,
	})
Example #5
0
def patient_remind(request, patient_id):
	success_url = reverse_lazy('patient')
	patient = Patient.objects.get(id= patient_id)
	reply_messages = 'EasyCare สวัสดีค่ะ วันนี้สุขภาพของท่านเป็นอย่างไรบ้างค่ะ สามารถส่งข้อมูลบอกเราได้ทาง 1.Website 2.SMS 3.IVR ขอบคุณค่ะ'
	html_messages = render_to_string('email/remind.html')
	sent = send_messages_to_patient('instruction', patient.contact_number, patient.email, reply_messages, html_messages)
	if sent:
		messages.success(request, "ข้อความถูกส่งไปเตือนคุณ " + patient.fullname.encode('utf-8') + " แล้ว", extra_tags='alert alert-success')
	else:
		messages.success(request, "ระบบส่งข้อความผิดพลาด คนไข้จะไม่ได้รับข้อความ", extra_tags='alert alert-error')
	return redirect(success_url)
Example #6
0
	def form_valid(self, form):
		redirect_url = super(RecordDeleteView, self).form_valid(form)
		self.record.change_status('ลบ')

		contact_number = self.record.patient.contact_number
		contact_email = self.record.patient.email
		msg_type = self.record.patient.confirm_by

		reply_messages = '#'+ str(self.record.id) + ' คำร้องขอถูกลบเรียบร้อยแล้ว'
		html_messages = render_to_string('email/reply_record.html', { 'record': self.record })

		sent = send_messages_to_patient(msg_type, contact_number, contact_email, reply_messages, html_messages)
		if sent:
			messages.success(self.request, "คำร้องขอถูกลบเรียบร้อยแล้ว", extra_tags='alert alert-success')
		else:
			messages.success(self.request, "ระบบส่งข้อความผิดพลาด คนไข้จะไม่ได้รับข้อความ", extra_tags='alert alert-error')

		return redirect_url
Example #7
0
	def form_valid(self, form):
		redirect_url = super(RecordResponseView, self).form_valid(form)
		self.record.change_status('ตอบกลับแล้ว')

		contact_number = self.record.patient.contact_number
		contact_email = self.record.patient.email
		msg_type = self.record.patient.confirm_by

		reponse_text = form.cleaned_data['reply_text'].replace('|',' ').encode('utf-8')
		reply_messages = '#'+ str(self.record.id) + ' ' + reponse_text
	
		html_messages = render_to_string('email/reply_record.html', { 'record': self.record })
		sent = send_messages_to_patient(msg_type, contact_number, contact_email, reply_messages, html_messages)
		if sent:
			messages.success(self.request, "คำร้องขอถูกตอบกลับเรียบร้อยแล้ว", extra_tags='alert alert-success')
		else:
			messages.success(self.request, "ระบบส่งข้อความผิดพลาด คนไข้จะไม่ได้รับข้อความ", extra_tags='alert alert-error')
		return redirect_url