This commit is contained in:
Marwan Alwali 2026-01-08 10:48:16 +03:00
parent 1ae0e763be
commit f8a0305caf
6 changed files with 139 additions and 33 deletions

Binary file not shown.

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PX360 1.0\n" "Project-Id-Version: PX360 1.0\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-01-08 10:32+0300\n" "POT-Creation-Date: 2026-01-08 10:47+0300\n"
"PO-Revision-Date: 2025-12-15 12:30+0300\n" "PO-Revision-Date: 2025-12-15 12:30+0300\n"
"Last-Translator: PX360 Team\n" "Last-Translator: PX360 Team\n"
"Language-Team: Arabic\n" "Language-Team: Arabic\n"
@ -607,6 +607,7 @@ msgstr "لا"
#: templates/physicians/physician_list.html:154 #: templates/physicians/physician_list.html:154
#: templates/projects/project_list.html:22 #: templates/projects/project_list.html:22
#: templates/references/folder_form.html:173 #: templates/references/folder_form.html:173
#: templates/surveys/template_list.html:44
msgid "Active" msgid "Active"
msgstr "نشط" msgstr "نشط"
@ -617,6 +618,7 @@ msgstr "نشط"
#: templates/physicians/physician_detail.html:28 #: templates/physicians/physician_detail.html:28
#: templates/physicians/physician_list.html:89 #: templates/physicians/physician_list.html:89
#: templates/physicians/physician_list.html:156 #: templates/physicians/physician_list.html:156
#: templates/surveys/template_list.html:46
msgid "Inactive" msgid "Inactive"
msgstr "غير نشط" msgstr "غير نشط"
@ -3885,6 +3887,7 @@ msgid "Select source"
msgstr "اختر المصدر" msgstr "اختر المصدر"
#: templates/complaints/complaint_form.html:231 #: templates/complaints/complaint_form.html:231
#: templates/surveys/instance_detail.html:5
msgid "Survey" msgid "Survey"
msgstr "الاستبيان" msgstr "الاستبيان"
@ -6399,13 +6402,29 @@ msgstr "ملاحظات سلبية"
msgid "Follow-up Actions" msgid "Follow-up Actions"
msgstr "إجراءات المتابعة" msgstr "إجراءات المتابعة"
#: templates/surveys/instance_detail.html:129
msgid "Action Required"
msgstr "إجراء مطلوب"
#: templates/surveys/instance_detail.html:129
msgid "Contact patient to discuss negative feedback"
msgstr "التواصل مع المريض لمناقشة الملاحظات السلبية"
#: templates/surveys/instance_detail.html:135 #: templates/surveys/instance_detail.html:135
msgid "Contact Notes *" msgid "Contact Notes *"
msgstr "ملاحظات التواصل *" msgstr "ملاحظات التواصل *"
#: templates/surveys/instance_detail.html:137 #: templates/surveys/instance_detail.html:137
msgid "Document your conversation with the patient..." msgid "Document your conversation with the patient..."
msgstr "قم بتوثيق محادثتك مع المريض..." msgstr "وثّق محادثتك مع المريض..."
#: templates/surveys/instance_detail.html:142
msgid "Issue resolved or explained to patient"
msgstr "تم حل المشكلة أو شرحها للمريض"
#: templates/surveys/instance_detail.html:146
msgid "Log Patient Contact"
msgstr "تسجيل التواصل مع المريض"
#: templates/surveys/instance_detail.html:152 #: templates/surveys/instance_detail.html:152
msgid "Patient Contacted" msgid "Patient Contacted"
@ -6415,9 +6434,45 @@ msgstr "تم التواصل مع المريض"
msgid "Contact Notes" msgid "Contact Notes"
msgstr "ملاحظات التواصل" msgstr "ملاحظات التواصل"
#: templates/surveys/instance_detail.html:164
msgid "Issue Resolved"
msgstr "تم حل المشكلة"
#: templates/surveys/instance_detail.html:166
msgid "Issue Discussed"
msgstr "تمت مناقشة المشكلة"
#: templates/surveys/instance_detail.html:172 #: templates/surveys/instance_detail.html:172
#: templates/surveys/instance_detail.html:179
msgid "Send Satisfaction Feedback" msgid "Send Satisfaction Feedback"
msgstr "إرسال تقييم الرضا" msgstr "إرسال استبيان رضا"
#: templates/surveys/instance_detail.html:174
msgid ""
"Send a feedback form to the patient to assess their satisfaction with how "
"their concerns were addressed"
msgstr "إرسال نموذج تقييم للمريض لقياس رضاه عن معالجة ملاحظاته"
#: templates/surveys/instance_detail.html:186
msgid "Satisfaction Feedback Sent"
msgstr "تم إرسال استبيان الرضا"
#: templates/surveys/instance_detail.html:192
msgid "Related Feedback"
msgstr "التقييمات ذات الصلة"
#: templates/surveys/instance_detail.html:196
msgid "View Feedback"
msgstr "عرض التقييم"
#: templates/surveys/instance_list.html:5
#: templates/surveys/instance_list.html:13
msgid "Survey Instances"
msgstr "حالات الاستبيانات"
#: templates/surveys/instance_list.html:15
msgid "Monitor survey responses and scores"
msgstr "متابعة ردود الاستبيانات والدرجات"
#: templates/surveys/instance_list.html:63 #: templates/surveys/instance_list.html:63
msgid "Survey Template" msgid "Survey Template"
@ -6427,14 +6482,54 @@ msgstr "قالب الاستبيان"
msgid "Journey Stage" msgid "Journey Stage"
msgstr "مرحلة الرحلة" msgstr "مرحلة الرحلة"
#: templates/surveys/instance_list.html:134
msgid "No surveys found"
msgstr "لا توجد استبيانات"
#: templates/surveys/invalid_token.html:7
#: templates/surveys/invalid_token.html:117 #: templates/surveys/invalid_token.html:117
msgid "Invalid Survey Link" msgid "Invalid Survey Link"
msgstr "رابط الاستبيان غير صالح" msgstr "رابط الاستبيان غير صالح"
#: templates/surveys/invalid_token.html:120
msgid "We're sorry, but this survey link is no longer valid or has expired"
msgstr "نأسف، رابط الاستبيان هذا غير صالح أو انتهت صلاحيته"
#: templates/surveys/invalid_token.html:124 #: templates/surveys/invalid_token.html:124
msgid "This could be because:" msgid "This could be because:"
msgstr "قد يكون السبب:" msgstr "قد يكون السبب:"
#: templates/surveys/invalid_token.html:126
msgid "The survey has already been completed"
msgstr "تم إكمال الاستبيان مسبقًا"
#: templates/surveys/invalid_token.html:127
msgid "The link has expired (surveys are valid for 30 days)"
msgstr "انتهت صلاحية الرابط (الاستبيانات صالحة لمدة 30 يومًا)"
#: templates/surveys/invalid_token.html:128
msgid "The link was entered incorrectly"
msgstr "تم إدخال الرابط بشكل غير صحيح"
#: templates/surveys/invalid_token.html:129
msgid "The survey has been canceled"
msgstr "تم إلغاء الاستبيان"
#: templates/surveys/invalid_token.html:134
msgid ""
"If you believe this is an error, please contact your healthcare provider for "
"assistance"
msgstr "إذا كنت تعتقد أن هذا خطأ، يرجى التواصل مع مقدم الرعاية الصحية للمساعدة"
#: templates/surveys/template_list.html:5
#: templates/surveys/template_list.html:13
msgid "Survey Templates"
msgstr "قوالب الاستبيانات"
#: templates/surveys/template_list.html:15
msgid "Manage survey templates and questions"
msgstr "إدارة قوالب الاستبيانات والأسئلة"
#: templates/surveys/template_list.html:26 #: templates/surveys/template_list.html:26
msgid "Survey Type" msgid "Survey Type"
msgstr "نوع الاستبيان" msgstr "نوع الاستبيان"
@ -6447,3 +6542,14 @@ msgstr "الأسئلة"
msgid "Scoring" msgid "Scoring"
msgstr "التقييم" msgstr "التقييم"
#: templates/surveys/template_list.html:40
msgid "questions"
msgstr "أسئلة"
#: templates/surveys/template_list.html:52
msgid "View Instances"
msgstr "عرض النماذج"
#: templates/surveys/template_list.html:60
msgid "No templates found"
msgstr "لا توجد قوالب"

View File

@ -2,7 +2,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block title %}Survey #{{ survey.id|slice:":8" }} - PX360{% endblock %} {% block title %}{{ _("Survey") }} #{{ survey.id|slice:":8" }} - PX360{% endblock %}
{% block content %} {% block content %}
<div class="container-fluid"> <div class="container-fluid">
@ -126,7 +126,7 @@
{% if not survey.patient_contacted %} {% if not survey.patient_contacted %}
<div class="alert alert-warning mb-3"> <div class="alert alert-warning mb-3">
<i class="bi bi-info-circle me-2"></i> <i class="bi bi-info-circle me-2"></i>
<strong>Action Required:</strong> Contact patient to discuss negative feedback. <strong>{{ _("Action Required")}}:</strong> {{ _("Contact patient to discuss negative feedback")}}.
</div> </div>
<form method="post" action="{% url 'surveys:log_patient_contact' survey.id %}"> <form method="post" action="{% url 'surveys:log_patient_contact' survey.id %}">
@ -139,11 +139,11 @@
<div class="form-check mb-3"> <div class="form-check mb-3">
<input class="form-check-input" type="checkbox" id="issue_resolved" name="issue_resolved"> <input class="form-check-input" type="checkbox" id="issue_resolved" name="issue_resolved">
<label class="form-check-label" for="issue_resolved"> <label class="form-check-label" for="issue_resolved">
Issue resolved or explained to patient {{ _("Issue resolved or explained to patient")}}
</label> </label>
</div> </div>
<button type="submit" class="btn btn-warning w-100"> <button type="submit" class="btn btn-warning w-100">
<i class="bi bi-telephone me-2"></i>Log Patient Contact <i class="bi bi-telephone me-2"></i>{{ _("Log Patient Contact")}}
</button> </button>
</form> </form>
{% else %} {% else %}
@ -161,9 +161,9 @@
<div class="mb-3"> <div class="mb-3">
<strong>{{ _("Status") }}:</strong><br> <strong>{{ _("Status") }}:</strong><br>
{% if survey.issue_resolved %} {% if survey.issue_resolved %}
<span class="badge bg-success">Issue Resolved</span> <span class="badge bg-success">{{ _("Issue Resolved")}}</span>
{% else %} {% else %}
<span class="badge bg-warning">Issue Discussed</span> <span class="badge bg-warning">{{ _("Issue Discussed")}}</span>
{% endif %} {% endif %}
</div> </div>
@ -171,29 +171,29 @@
<hr> <hr>
<h6 class="mb-3">{% trans "Send Satisfaction Feedback" %}</h6> <h6 class="mb-3">{% trans "Send Satisfaction Feedback" %}</h6>
<p class="text-muted small mb-3"> <p class="text-muted small mb-3">
Send a feedback form to the patient to assess their satisfaction with how their concerns were addressed. {{ _("Send a feedback form to the patient to assess their satisfaction with how their concerns were addressed")}}.
</p> </p>
<form method="post" action="{% url 'surveys:send_satisfaction_feedback' survey.id %}"> <form method="post" action="{% url 'surveys:send_satisfaction_feedback' survey.id %}">
{% csrf_token %} {% csrf_token %}
<button type="submit" class="btn btn-primary w-100"> <button type="submit" class="btn btn-primary w-100">
<i class="bi bi-send me-2"></i>Send Satisfaction Feedback <i class="bi bi-send me-2"></i>{{ _("Send Satisfaction Feedback")}}
</button> </button>
</form> </form>
{% else %} {% else %}
<hr> <hr>
<div class="alert alert-info mb-0"> <div class="alert alert-info mb-0">
<i class="bi bi-check-circle me-2"></i> <i class="bi bi-check-circle me-2"></i>
<strong>Satisfaction Feedback Sent</strong><br> <strong>{{ _("Satisfaction Feedback Sent")}}</strong><br>
<small>{{ survey.satisfaction_feedback_sent_at|date:"M d, Y H:i" }}</small> <small>{{ survey.satisfaction_feedback_sent_at|date:"M d, Y H:i" }}</small>
</div> </div>
{% if survey.follow_up_feedbacks.exists %} {% if survey.follow_up_feedbacks.exists %}
<div class="mt-3"> <div class="mt-3">
<strong>Related Feedback:</strong> <strong>{{ _("Related Feedback")}}:</strong>
{% for feedback in survey.follow_up_feedbacks.all %} {% for feedback in survey.follow_up_feedbacks.all %}
<div class="mt-2"> <div class="mt-2">
<a href="{% url 'feedback:feedback_detail' feedback.id %}" class="btn btn-sm btn-outline-primary"> <a href="{% url 'feedback:feedback_detail' feedback.id %}" class="btn btn-sm btn-outline-primary">
<i class="bi bi-chat-left-text me-1"></i>View Feedback #{{ feedback.id|slice:":8" }} <i class="bi bi-chat-left-text me-1"></i>{{ _("View Feedback")}} #{{ feedback.id|slice:":8" }}
</a> </a>
</div> </div>
{% endfor %} {% endfor %}

View File

@ -2,7 +2,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block title %}Survey Instances - PX360{% endblock %} {% block title %}{{ _("Survey Instances")}} - PX360{% endblock %}
{% block content %} {% block content %}
<div class="container-fluid"> <div class="container-fluid">
@ -10,9 +10,9 @@
<div> <div>
<h2 class="mb-1"> <h2 class="mb-1">
<i class="bi bi-clipboard-data text-info me-2"></i> <i class="bi bi-clipboard-data text-info me-2"></i>
Survey Instances {{ _("Survey Instances")}}
</h2> </h2>
<p class="text-muted mb-0">Monitor survey responses and scores</p> <p class="text-muted mb-0">{{ _("Monitor survey responses and scores")}}</p>
</div> </div>
</div> </div>
@ -131,7 +131,7 @@
<tr> <tr>
<td colspan="8" class="text-center py-5"> <td colspan="8" class="text-center py-5">
<i class="bi bi-inbox" style="font-size: 3rem; color: #ccc;"></i> <i class="bi bi-inbox" style="font-size: 3rem; color: #ccc;"></i>
<p class="text-muted mt-3">No surveys found</p> <p class="text-muted mt-3">{{ _("No surveys found")}}</p>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@ -4,7 +4,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Invalid Survey Link - PX360</title> <title>{{ _("Invalid Survey Link")}} - PX360</title>
<!-- Bootstrap 5 CSS --> <!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
@ -117,21 +117,21 @@
<h1>{% trans "Invalid Survey Link" %}</h1> <h1>{% trans "Invalid Survey Link" %}</h1>
<p> <p>
We're sorry, but this survey link is no longer valid or has expired. {{ _("We're sorry, but this survey link is no longer valid or has expired")}}.
</p> </p>
<div class="reasons"> <div class="reasons">
<h3>{% trans "This could be because:" %}</h3> <h3>{% trans "This could be because:" %}</h3>
<ul> <ul>
<li>The survey has already been completed</li> <li>{{ _("The survey has already been completed")}}</li>
<li>The link has expired (surveys are valid for 30 days)</li> <li>{{ _("The link has expired (surveys are valid for 30 days)")}}</li>
<li>The link was entered incorrectly</li> <li>{{ _("The link was entered incorrectly")}}</li>
<li>The survey has been cancelled</li> <li>{{ _("The survey has been canceled")}}</li>
</ul> </ul>
</div> </div>
<p class="contact-info"> <p class="contact-info">
If you believe this is an error, please contact your healthcare provider for assistance. {{ _("If you believe this is an error, please contact your healthcare provider for assistance")}}.
</p> </p>
</div> </div>
</body> </body>

View File

@ -2,7 +2,7 @@
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block title %}Survey Templates - PX360{% endblock %} {% block title %}{{ _("Survey Templates")}} - PX360{% endblock %}
{% block content %} {% block content %}
<div class="container-fluid"> <div class="container-fluid">
@ -10,9 +10,9 @@
<div> <div>
<h2 class="mb-1"> <h2 class="mb-1">
<i class="bi bi-clipboard2 text-info me-2"></i> <i class="bi bi-clipboard2 text-info me-2"></i>
Survey Templates {{ _("Survey Templates")}}
</h2> </h2>
<p class="text-muted mb-0">Manage survey templates and questions</p> <p class="text-muted mb-0">{{ _("Manage survey templates and questions")}}</p>
</div> </div>
</div> </div>
@ -37,19 +37,19 @@
<td><strong>{{ template.name }}</strong></td> <td><strong>{{ template.name }}</strong></td>
<td><span class="badge bg-info">{{ template.get_survey_type_display }}</span></td> <td><span class="badge bg-info">{{ template.get_survey_type_display }}</span></td>
<td><small>{{ template.hospital.name_en }}</small></td> <td><small>{{ template.hospital.name_en }}</small></td>
<td><span class="badge bg-secondary">{{ template.questions.count }} questions</span></td> <td><span class="badge bg-secondary">{{ template.questions.count }} {{ _("questions") }}</span></td>
<td><small>{{ template.get_scoring_method_display }}</small></td> <td><small>{{ template.get_scoring_method_display }}</small></td>
<td> <td>
{% if template.is_active %} {% if template.is_active %}
<span class="badge bg-success">Active</span> <span class="badge bg-success">{{ _("Active") }}</span>
{% else %} {% else %}
<span class="badge bg-secondary">Inactive</span> <span class="badge bg-secondary">{{ _("Inactive") }}</span>
{% endif %} {% endif %}
</td> </td>
<td> <td>
<a href="{% url 'surveys:instance_list' %}?survey_type={{ template.survey_type }}" <a href="{% url 'surveys:instance_list' %}?survey_type={{ template.survey_type }}"
class="btn btn-sm btn-outline-primary"> class="btn btn-sm btn-outline-primary">
View Instances {{ _("View Instances")}}
</a> </a>
</td> </td>
</tr> </tr>
@ -57,7 +57,7 @@
<tr> <tr>
<td colspan="7" class="text-center py-5"> <td colspan="7" class="text-center py-5">
<i class="bi bi-inbox" style="font-size: 3rem; color: #ccc;"></i> <i class="bi bi-inbox" style="font-size: 3rem; color: #ccc;"></i>
<p class="text-muted mt-3">No templates found</p> <p class="text-muted mt-3">{{ _("No templates found")}}</p>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}