diff --git a/guiche/templates/guiche/tv1.html b/guiche/templates/guiche/tv1.html
index 50467dc..cf25bcd 100644
--- a/guiche/templates/guiche/tv1.html
+++ b/guiche/templates/guiche/tv1.html
@@ -1,160 +1,22 @@
-{% load static %}
-
-
-
-
-
-
-
+
-
+
{% if ultima_chamada %}
{{ ultima_chamada.paciente.nome_completo }} - Guichê {{ ultima_chamada.guiche.numero }}
{% else %}
- Nenhuma senha chamada no momento.
+ Nenhuma senha chamada no momento.
{% endif %}
-
Por favor, dirija-se ao guichê.
+ {% if ultima_chamada %}
+
Por favor, dirija-se ao guichê.
+ {% endif %}
@@ -168,182 +30,59 @@
Histórico de Chamadas
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ },
+ error: function (_, t) { console.error("Erro ao atualizar o histórico:", t); }
+ });
+ }
-
-
\ No newline at end of file
+ setInterval(atualizarTela, 5000);
+ setInterval(atualizarHistorico, 5000);
+ atualizarHistorico();
+ });
+
+{% endblock %}
diff --git a/guiche/views.py b/guiche/views.py
index 743c869..7679f36 100644
--- a/guiche/views.py
+++ b/guiche/views.py
@@ -415,7 +415,7 @@ def tv1_historico_api_view(request) -> JsonResponse:
historico_chamadas = (
Chamada.objects.filter(acao="confirmado")
.select_related("paciente", "guiche")
- .order_by("-data_hora")[:8]
+ .order_by("-data_hora")[:5]
)
historico_data: List[Dict[str, Any]] = []
diff --git a/profissional_saude/forms.py b/profissional_saude/forms.py
index a16582f..93a145a 100644
--- a/profissional_saude/forms.py
+++ b/profissional_saude/forms.py
@@ -74,7 +74,8 @@ class SelecionarSalaForm(forms.Form):
"""
sala = forms.ChoiceField(
- choices=[(str(i), f"Sala {i}") for i in range(1, 21)], # Salas 1 a 20
+ choices=[(str(i), f"Sala {i}") for i in range(1, 21)]
+ + [("enfermaria", "Enfermaria")], # Salas 1 a 20 + Enfermaria
label="Sala do dia",
widget=forms.Select(
attrs={
diff --git a/profissional_saude/templates/profissional_saude/tv2.html b/profissional_saude/templates/profissional_saude/tv2.html
index 5db863c..a5fb081 100644
--- a/profissional_saude/templates/profissional_saude/tv2.html
+++ b/profissional_saude/templates/profissional_saude/tv2.html
@@ -1,162 +1,23 @@
-{% load static %}
-
-
-
-
-
-
Painel de Chamadas
-
-
-
-
-
-
-

-
-
-
-
-
+{% block main %}
+
-
-
-
+
{% if senha_chamada %}
-
-
+
{{ nome_completo }} - Sala: {{ sala_profissional }}
+
Por favor, dirija-se à sala.
{% else %}
-
- Nenhuma senha chamada no momento.
-
+
+ Nenhuma senha chamada no momento.
+
{% endif %}
@@ -165,186 +26,68 @@
Histórico de Confirmações
{% for chamada in historico_senhas %}
-
- {{ chamada.paciente.senha }} - {{ chamada.paciente.nome_completo }} - Profissional: {{ chamada.profissional_saude.first_name }}
+ ✓ {{ chamada.paciente.senha }} - {{ chamada.paciente.nome_completo }} - Profissional: {{ chamada.profissional_saude.first_name }}
{% endfor %}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ },
+ error: function (_, t) { console.error("Erro ao atualizar o histórico:", t); }
+ });
+ }
-
-
\ No newline at end of file
+ setInterval(atualizarTela, 5000);
+ setInterval(atualizarHistorico, 5000);
+ atualizarHistorico();
+ });
+
+{% endblock %}
diff --git a/profissional_saude/views.py b/profissional_saude/views.py
index dd7aac0..60b8b98 100644
--- a/profissional_saude/views.py
+++ b/profissional_saude/views.py
@@ -66,10 +66,15 @@ def realizar_acao_profissional(request, paciente_id, acao):
# Tenta enviar mensagem via WhatsApp
numero_celular_paciente = paciente.telefone_e164()
if numero_celular_paciente:
+ sala_display = (
+ f"Sala {profissional_saude.sala}"
+ if str(profissional_saude.sala).isdigit()
+ else str(profissional_saude.sala).capitalize()
+ )
mensagem = (
f"Olá {paciente.nome_completo.split()[0]}! "
f"O(a) Dr(a). {profissional_saude.first_name}, lhe aguarda. "
- f"Por favor, dirija-se à Sala {profissional_saude.sala}."
+ f"Por favor, dirija-se à {sala_display}."
)
twilio_response = enviar_whatsapp(numero_celular_paciente, mensagem)
else:
@@ -94,10 +99,15 @@ def realizar_acao_profissional(request, paciente_id, acao):
# Reenviar o WhatsApp no reanuncio
numero_celular_paciente = paciente.telefone_e164()
if numero_celular_paciente:
+ sala_display = (
+ f"Sala {profissional_saude.sala}"
+ if str(profissional_saude.sala).isdigit()
+ else str(profissional_saude.sala).capitalize()
+ )
mensagem = (
f"Olá {paciente.nome_completo.split()[0]}! "
f"O(A) Dr(a). {profissional_saude.first_name} está chamando novamente. "
- f"Por favor, dirija-se à Sala {profissional_saude.sala}."
+ f"Por favor, dirija-se à {sala_display}."
)
twilio_response = enviar_whatsapp(numero_celular_paciente, mensagem)
else:
@@ -271,7 +281,7 @@ def selecionar_sala(request):
if request.method == "POST":
form = SelecionarSalaForm(request.POST)
if form.is_valid():
- sala_numero = int(form.cleaned_data["sala"])
+ sala_numero = form.cleaned_data["sala"]
# Verificar se outro profissional já está usando esta sala
outro_profissional = (
diff --git a/requirements-docker.txt b/requirements-docker.txt
index fe8eb98..3effe4e 100644
--- a/requirements-docker.txt
+++ b/requirements-docker.txt
@@ -1,4 +1,4 @@
-Django==5.2.11
+Django==5.2.13
djangorestframework==3.16.1
gunicorn==23.0.0
gTTS==2.5.4
@@ -7,4 +7,4 @@ dj-database-url==3.0.1
psycopg2-binary==2.9.11
python-decouple==3.8
twilio==9.8.5
-python-dotenv==1.2.1
+python-dotenv==1.2.2
diff --git a/requirements.txt b/requirements.txt
index b2ea838..94d5a4d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-Django==5.2.11
+Django==5.2.13
djangorestframework==3.16.1
gunicorn==23.0.0
gTTS==2.5.4
@@ -7,4 +7,4 @@ dj-database-url==3.0.1
psycopg2-binary==2.9.11
python-decouple==3.8
twilio==9.8.5
-python-dotenv==1.2.1
\ No newline at end of file
+python-dotenv==1.2.2
\ No newline at end of file
diff --git a/sga/urls.py b/sga/urls.py
index 9ecbf6d..40442a3 100644
--- a/sga/urls.py
+++ b/sga/urls.py
@@ -1,7 +1,14 @@
from django.contrib import admin
+from django.shortcuts import render
from django.urls import include, path
+
+def tv_selecao_view(request):
+ return render(request, "tv.html")
+
+
urlpatterns = [
+ path("tv/", tv_selecao_view, name="tv_selecao"),
path("admin/", admin.site.urls),
path("", include("core.urls")),
path("administrador/", include("administrador.urls")),
diff --git a/templates/tv.html b/templates/tv.html
new file mode 100644
index 0000000..1141dc8
--- /dev/null
+++ b/templates/tv.html
@@ -0,0 +1,20 @@
+{% extends "tv_base.html" %}
+
+{% block title %}Painel de Chamadas - Seleção{% endblock %}
+
+{% block main %}
+
+
+{% endblock %}
diff --git a/templates/tv_base.html b/templates/tv_base.html
new file mode 100644
index 0000000..8963b97
--- /dev/null
+++ b/templates/tv_base.html
@@ -0,0 +1,372 @@
+{% load static %}
+
+
+
+
+
+
{% block title %}Painel de Chamadas{% endblock %}
+
+
+ {% block extra_style %}{% endblock %}
+
+
+
+
+

+
+
+
+
+
+ {% block main %}{% endblock %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% block scripts %}{% endblock %}
+
+
diff --git a/tests/tests/functional/profissional_saude_tests.py b/tests/tests/functional/profissional_saude_tests.py
index 1e8eada..20865c8 100644
--- a/tests/tests/functional/profissional_saude_tests.py
+++ b/tests/tests/functional/profissional_saude_tests.py
@@ -346,7 +346,9 @@ def test_tv2_view_with_calls(self):
self.assertEqual(
response.context["nome_completo"], self.paciente2.nome_completo
)
- self.assertEqual(response.context["sala_profissional"], self.profissional1.sala)
+ self.assertEqual(
+ response.context["sala_profissional"], str(self.profissional1.sala)
+ )
self.assertEqual(
len(response.context["historico_senhas"]), 1
) # Uma chamada anterior
@@ -378,7 +380,7 @@ def test_tv2_api_view_with_calls(self):
self.assertEqual(data["senha"], self.paciente1.senha)
self.assertEqual(data["nome_completo"], self.paciente1.nome_completo)
- self.assertEqual(data["sala_profissional"], self.profissional1.sala)
+ self.assertEqual(data["sala_profissional"], str(self.profissional1.sala))
self.assertEqual(data["id"], chamada.id)
def test_tv2_api_view_no_calls(self):