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, 'ท่านทำรายการไม่ถูกต้อง', 'ท่านทำรายการไม่ถูกต้อง')
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()
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()
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, })
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)
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
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