Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,26 @@ public String editTickler() {
String providerNo = loggedInInfo.getLoggedInProviderNo();

String ticklerNoStr = request.getParameter("ticklerNo");
Integer ticklerNo = Integer.parseInt(ticklerNoStr);
if (ticklerNoStr == null || ticklerNoStr.trim().isEmpty()) {
addActionError(getText("tickler.ticklerEdit.arg.error"));
return "failure";
}
Integer ticklerNo;
try {
ticklerNo = Integer.parseInt(ticklerNoStr.trim());
} catch (NumberFormatException e) {
logger.error("Invalid ticklerNo parameter: '{}'", ticklerNoStr);
addActionError(getText("tickler.ticklerEdit.arg.error"));
return "failure";
}

String status = request.getParameter("status");
String priority = request.getParameter("priority");
String assignedTo = request.getParameter("assignedToProviders");
String serviceDate = request.getParameter("xml_appointment_date");
String parentAjaxId = request.getParameter("parentAjaxId");

if ((ticklerNo == null)
|| (status == null)
if ((status == null)
|| (priority == null)
|| (serviceDate == null)
|| (assignedTo == null)) {
Expand Down Expand Up @@ -173,6 +183,7 @@ public String editTickler() {
isUpdate = true;
} catch (java.text.ParseException e) {
logger.error("Service Date cannot be parsed:", e);
addActionError(getText("tickler.ticklerEdit.arg.error"));
return "error";
}
}
Expand All @@ -182,7 +193,13 @@ public String editTickler() {
}

if (isComment || isUpdate) {
ticklerManager.updateTickler(loggedInInfo, t);
try {
ticklerManager.updateTickler(loggedInInfo, t);
} catch (Exception e) {
logger.error("Failed to update tickler: ticklerNo={}, providerNo={}", ticklerNo, providerNo, e);
addActionError(getText("tickler.ticklerEdit.arg.error"));
return "error";
}
}

if (emailFailed) {
Expand All @@ -201,6 +218,11 @@ public String editTickler() {
public String updateTextSuggest() {

LoggedInInfo loggedInInfo = LoggedInInfo.getLoggedInInfoFromSession(request);

if (!securityInfoManager.hasPrivilege(loggedInInfo, "_tickler", "u", null)) {
throw new RuntimeException("missing required sec object (_tickler)");
}

String providerNo = loggedInInfo.getLoggedInProviderNo();

if (activeText == null) {
Expand Down
17 changes: 17 additions & 0 deletions src/main/resources/oscarResources_en.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5132,6 +5132,11 @@ tickler.ticklerMain.tooltipAddNote=Add Encounter Note
tickler.ticklerMain.tooltipViewAttachment=View attachment
tickler.ticklerMain.noteDialogTitle=Edit Tickler Note
tickler.ticklerMain.noteLabel=Tickler Note
tickler.ticklerMain.errorLoadFailed=Failed to load tickler list. Please refresh.
tickler.ticklerMain.errorNoteLoadFailed=Failed to load the existing note. Please try again.
tickler.ticklerMain.errorLabReqFailed=Failed to generate renal lab requisition. Please try again.
tickler.ticklerMain.errorNoteSaveFailed=Unable to save the note. Please try again.
tickler.ticklerMain.errorSaveViewFailed=Failed to save view preferences. Please try again.
tickler.ticklerMain.noteDate=Date:
tickler.ticklerMain.noteRev=Rev:
tickler.ticklerMain.noteEditor=Editor:
Expand Down Expand Up @@ -5175,6 +5180,10 @@ tickler.ticklerTextSuggest.cancel=Cancel
tickler.ticklerAdd.title=Tickler
tickler.ticklerAdd.msgInvalidDemographic=Invalid demographic information, please verify!
tickler.ticklerAdd.msgMissingDate=Missing service date, please verify!
tickler.ticklerAdd.errorNetworkFailed=A network error occurred saving the tickler. Please try again.
tickler.ticklerAdd.errorSessionExpired=Your session may have expired. Please log in again and re-submit the tickler.
tickler.ticklerAdd.errorSaveFailed=The tickler could not be saved. Please try again.
tickler.ticklerAdd.warnLinkFailed=The tickler was saved, but the document link could not be attached. Please link the document manually.
tickler.ticklerAdd.msgTickler=<font size="3">Tickler</font>
tickler.ticklerAdd.formDemoName=Demographic Name
tickler.ticklerAdd.btnSearch=Search
Expand Down Expand Up @@ -6983,6 +6992,14 @@ tickler.ticklerMain.stActive=Active
tickler.ticklerMain.stComplete=Complete
tickler.ticklerMain.stDeleted=Deleted

# ticklerMain.jsp new keys added 2026-03-14
tickler.ticklerMain.labelFrom=From:
tickler.ticklerMain.labelTo=To:
tickler.ticklerMain.managerHeading=Tickler Manager

# ticklerEdit.jsp new keys added 2026-03-14
tickler.ticklerEdit.btnToday=Today

messenger.config.MessengerAdmin.title=Group Configurator
messenger.config.MessengerAdmin.2ndTitle=Group Configurator
messenger.config.MessengerAdmin.msgCreateNewGroup=- Click here to create a new group on this Level
Expand Down
17 changes: 17 additions & 0 deletions src/main/resources/oscarResources_es.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4149,6 +4149,11 @@ tickler.ticklerMain.tooltipAddNote=A\u00f1adir nota de consulta
tickler.ticklerMain.tooltipViewAttachment=Ver adjunto
tickler.ticklerMain.noteDialogTitle=Editar nota de recordatorio
tickler.ticklerMain.noteLabel=Nota de recordatorio
tickler.ticklerMain.errorLoadFailed=No se pudo cargar la lista de recordatorios. Por favor, actualice.
tickler.ticklerMain.errorNoteLoadFailed=No se pudo cargar la nota existente. Por favor, int\u00e9ntelo de nuevo.
tickler.ticklerMain.errorLabReqFailed=No se pudo generar la solicitud de laboratorio. Por favor, int\u00e9ntelo de nuevo.
tickler.ticklerMain.errorNoteSaveFailed=No se pudo guardar la nota. Por favor, int\u00e9ntelo de nuevo.
tickler.ticklerMain.errorSaveViewFailed=No se pudieron guardar las preferencias de vista. Por favor, int\u00e9ntelo de nuevo.
tickler.ticklerMain.noteDate=Fecha:
tickler.ticklerMain.noteRev=Rev.:
tickler.ticklerMain.noteEditor=Editor:
Expand Down Expand Up @@ -4191,6 +4196,10 @@ tickler.ticklerTextSuggest.cancel=Cancel
tickler.ticklerAdd.title=Recordatorios
tickler.ticklerAdd.msgInvalidDemographic=Informacion del paciente invalida, por favor controle los datos!
tickler.ticklerAdd.msgMissingDate=Fecha de prestacion incompleta, por favor completarla!
tickler.ticklerAdd.errorNetworkFailed=Se produjo un error de red al guardar el recordatorio. Por favor, int\u00e9ntelo de nuevo.
tickler.ticklerAdd.errorSessionExpired=Su sesi\u00f3n puede haber expirado. Inicie sesi\u00f3n de nuevo y reenv\u00ede el recordatorio.
tickler.ticklerAdd.errorSaveFailed=No se pudo guardar el recordatorio. Por favor, int\u00e9ntelo de nuevo.
tickler.ticklerAdd.warnLinkFailed=El recordatorio fue guardado, pero no se pudo adjuntar el enlace al documento. Vincule el documento manualmente.
tickler.ticklerAdd.msgTickler=oscar<font size="3">Recordatorio</font>
tickler.ticklerAdd.formDemoName=Nombre paciente
tickler.ticklerAdd.btnSearch=Buscar
Expand Down Expand Up @@ -5842,6 +5851,14 @@ tickler.ticklerMain.stActive=Activo
tickler.ticklerMain.stComplete=Complete
tickler.ticklerMain.stDeleted=Borrado

# ticklerMain.jsp new keys added 2026-03-14
tickler.ticklerMain.labelFrom=Desde:
tickler.ticklerMain.labelTo=Hasta:
tickler.ticklerMain.managerHeading=Administrador de avisos

# ticklerEdit.jsp new keys added 2026-03-14
tickler.ticklerEdit.btnToday=Hoy

messenger.config.MessengerAdmin.title=Configurador de grupo
messenger.config.MessengerAdmin.2ndTitle=Configurador de grupo
messenger.config.MessengerAdmin.msgCreateNewGroup=- Click aqui para crear un nuevo grupo en este nivel
Expand Down
17 changes: 17 additions & 0 deletions src/main/resources/oscarResources_fr.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3740,12 +3740,21 @@ tickler.ticklerMain.tooltipAddNote=Ajouter une note de consultation
tickler.ticklerMain.tooltipViewAttachment=Voir la pi\u00e8ce jointe
tickler.ticklerMain.noteDialogTitle=Modifier la note de suivi
tickler.ticklerMain.noteLabel=Note de suivi
tickler.ticklerMain.errorLoadFailed=Impossible de charger la liste des rappels. Veuillez actualiser.
tickler.ticklerMain.errorNoteLoadFailed=Impossible de charger la note existante. Veuillez r\u00e9essayer.
tickler.ticklerMain.errorLabReqFailed=Impossible de g\u00e9n\u00e9rer la requ\u00eate de laboratoire. Veuillez r\u00e9essayer.
tickler.ticklerMain.errorNoteSaveFailed=Impossible d\u2019enregistrer la note. Veuillez r\u00e9essayer.
tickler.ticklerMain.errorSaveViewFailed=Impossible d\u2019enregistrer les pr\u00e9f\u00e9rences de vue. Veuillez r\u00e9essayer.
tickler.ticklerMain.noteDate=Date :
tickler.ticklerMain.noteRev=R\u00e9v. :
tickler.ticklerMain.noteEditor=\u00c9diteur :
tickler.ticklerAdd.title=oscarTickler
tickler.ticklerAdd.msgInvalidDemographic=Information d\u00e9mographique non valide, veuillez v\u00e9rifier\!
tickler.ticklerAdd.msgMissingDate=Date du service manquante, veuillez v\u00e9rifier\!
tickler.ticklerAdd.errorNetworkFailed=Une erreur r\u00e9seau s'est produite lors de l'enregistrement. Veuillez r\u00e9essayer.
tickler.ticklerAdd.errorSessionExpired=Votre session a peut-\u00eatre expir\u00e9. Reconnectez-vous et resoumettez le rappel.
tickler.ticklerAdd.errorSaveFailed=Le rappel n'a pas pu \u00eatre enregistr\u00e9. Veuillez r\u00e9essayer.
tickler.ticklerAdd.warnLinkFailed=Le rappel a \u00e9t\u00e9 enregistr\u00e9, mais le lien vers le document n\u2019a pas pu \u00eatre cr\u00e9\u00e9. Veuillez lier le document manuellement.
tickler.ticklerAdd.msgTickler=oscar<font size\="3">Tickler</font>
tickler.ticklerAdd.formDemoName=Nom du patient
tickler.ticklerAdd.btnSearch=Recherche
Expand Down Expand Up @@ -5079,6 +5088,14 @@ oscarMDS.search.btnSearch=Rechercher
tickler.ticklerMain.stActive=Actif
tickler.ticklerMain.stComplete=Complet
tickler.ticklerMain.stDeleted=Supprim\u00e9

# ticklerMain.jsp new keys added 2026-03-14
tickler.ticklerMain.labelFrom=De\u00a0:
tickler.ticklerMain.labelTo=\u00c0\u00a0:
tickler.ticklerMain.managerHeading=Gestionnaire de suivis

# ticklerEdit.jsp new keys added 2026-03-14
tickler.ticklerEdit.btnToday=Aujourd'hui
messenger.config.MessengerAdmin.title=Configurateur de groupe
messenger.config.MessengerAdmin.2ndTitle=Configurateur de groupe
messenger.config.MessengerAdmin.msgCreateNewGroup=- Cliquez ici afin de cr\u00e9er un nouveau groupe \u00e0 ce niveau
Expand Down
17 changes: 17 additions & 0 deletions src/main/resources/oscarResources_pl.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3692,13 +3692,22 @@ tickler.ticklerMain.tooltipAddNote=Dodaj notatk\u0119 z wizyty
tickler.ticklerMain.tooltipViewAttachment=Poka\u017c za\u0142\u0105cznik
tickler.ticklerMain.noteDialogTitle=Edytuj notatk\u0119 ticklera
tickler.ticklerMain.noteLabel=Notatka ticklera
tickler.ticklerMain.errorLoadFailed=Nie mo\u017cna za\u0142adowa\u0107 listy przypomnie\u0144. Od\u015bwie\u017c stron\u0119.
tickler.ticklerMain.errorNoteLoadFailed=Nie mo\u017cna za\u0142adowa\u0107 notatki. Spr\u00f3buj ponownie.
tickler.ticklerMain.errorLabReqFailed=Nie mo\u017cna wygenerowa\u0107 zlecenia laboratoryjnego. Spr\u00f3buj ponownie.
tickler.ticklerMain.errorNoteSaveFailed=Nie mo\u017cna zapisa\u0107 notatki. Spr\u00f3buj ponownie.
tickler.ticklerMain.errorSaveViewFailed=Nie mo\u017cna zapisa\u0107 preferencji widoku. Spr\u00f3buj ponownie.
tickler.ticklerMain.noteDate=Data:
tickler.ticklerMain.noteRev=Rew.:
tickler.ticklerMain.noteEditor=Edytor:

tickler.ticklerAdd.title=Tickler
tickler.ticklerAdd.msgInvalidDemographic=Nieprawid&#X142;owe dane demograficzne, sprawd&#X17a;!
tickler.ticklerAdd.msgMissingDate Brak daty=us&#X142;ug, sprawd&#X17a;!
tickler.ticklerAdd.errorNetworkFailed=Wyst\u0105pi\u0142 b\u0142\u0105d sieci podczas zapisywania. Spr\u00f3buj ponownie.
tickler.ticklerAdd.errorSessionExpired=Twoja sesja mog\u0142a wygas\u0107. Zaloguj si\u0119 ponownie i prze\u015blij przypomnienie.
tickler.ticklerAdd.errorSaveFailed=Nie mo\u017cna zapisa\u0107 przypomnienia. Spr\u00f3buj ponownie.
tickler.ticklerAdd.warnLinkFailed=Przypomnienie zosta\u0142o zapisane, ale nie uda\u0142o si\u0119 doda\u0107 linku do dokumentu. Prosz\u0119 r\u0119cznie po\u0142\u0105czy\u0107 dokument.
tickler.ticklerAdd.msgTickler=<font size="3"> Tickler </ font>
tickler.ticklerAdd.formDemoName=demograficzne Nazwa
tickler.ticklerAdd.btnSearch=Szukaj
Expand Down Expand Up @@ -5245,6 +5254,14 @@ tickler.ticklerMain.stActive=Aktywne
tickler.ticklerMain.stComplete=Complete
tickler.ticklerMain.stDeleted=skre&#X15b;lony

# ticklerMain.jsp new keys added 2026-03-14
tickler.ticklerMain.labelFrom=Od:
tickler.ticklerMain.labelTo=Do:
tickler.ticklerMain.managerHeading=Mened\u017cer przypomnien

# ticklerEdit.jsp new keys added 2026-03-14
tickler.ticklerEdit.btnToday=Dzi\u015b

messenger.config.MessengerAdmin.title=Grupa Konfigurator
messenger.config.MessengerAdmin.2ndTitle=Grupa Konfigurator
messenger.config.MessengerAdmin.msgCreateNewGroup=- Kliknij tutaj, aby utworzy&#X107; now&#X105; grup&#X119; na tym poziomie
Expand Down
17 changes: 17 additions & 0 deletions src/main/resources/oscarResources_pt_BR.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4963,6 +4963,11 @@ tickler.ticklerMain.tooltipAddNote=Adicionar nota de consulta
tickler.ticklerMain.tooltipViewAttachment=Ver anexo
tickler.ticklerMain.noteDialogTitle=Editar nota do lembrete
tickler.ticklerMain.noteLabel=Nota do lembrete
tickler.ticklerMain.errorLoadFailed=Falha ao carregar a lista de lembretes. Por favor, atualize.
tickler.ticklerMain.errorNoteLoadFailed=Falha ao carregar a nota existente. Por favor, tente novamente.
tickler.ticklerMain.errorLabReqFailed=Falha ao gerar a requisi\u00e7\u00e3o de laborat\u00f3rio. Por favor, tente novamente.
tickler.ticklerMain.errorNoteSaveFailed=N\u00e3o foi poss\u00edvel salvar a nota. Por favor, tente novamente.
tickler.ticklerMain.errorSaveViewFailed=Falha ao salvar as prefer\u00eancias de visualiza\u00e7\u00e3o. Por favor, tente novamente.
tickler.ticklerMain.noteDate=Data:
tickler.ticklerMain.noteRev=Rev.:
tickler.ticklerMain.noteEditor=Editor:
Expand Down Expand Up @@ -5006,6 +5011,10 @@ tickler.ticklerTextSuggest.cancel=Cancelar
tickler.ticklerAdd.title=Queixa
tickler.ticklerAdd.msgInvalidDemographic=Informa\u00E7\u00F5es demogr\u00E1ficas inv\u00E1lidas, verifique!
tickler.ticklerAdd.msgMissingDate=Data de servi\u00E7o ausente, verifique!
tickler.ticklerAdd.errorNetworkFailed=Ocorreu um erro de rede ao salvar o lembrete. Por favor, tente novamente.
tickler.ticklerAdd.errorSessionExpired=Sua sess\u00e3o pode ter expirado. Fa\u00e7a login novamente e reenvie o lembrete.
tickler.ticklerAdd.errorSaveFailed=N\u00e3o foi poss\u00edvel salvar o lembrete. Por favor, tente novamente.
tickler.ticklerAdd.warnLinkFailed=O lembrete foi salvo, mas o link para o documento n\u00e3o p\u00f4de ser criado. Por favor, vincule o documento manualmente.
tickler.ticklerAdd.msgTickler=<font size="3">Tickler</font>
tickler.ticklerAdd.formDemoName=Nome demogr\u00E1fico
tickler.ticklerAdd.btnSearch=Pesquisa
Expand Down Expand Up @@ -6790,6 +6799,14 @@ tickler.ticklerMain.stActive=Ativo
tickler.ticklerMain.stComplete=Completo
tickler.ticklerMain.stDeleted=Excluir

# ticklerMain.jsp new keys added 2026-03-14
tickler.ticklerMain.labelFrom=De:
tickler.ticklerMain.labelTo=At\u00e9:
tickler.ticklerMain.managerHeading=Gerenciador de lembretes

# ticklerEdit.jsp new keys added 2026-03-14
tickler.ticklerEdit.btnToday=Hoje

messenger.config.MessengerAdmin.title=Configurador de Grupo
messenger.config.MessengerAdmin.2ndTitle=Configurador de Grupo
messenger.config.MessengerAdmin.msgCreateNewGroup=- Clique aqui para ir ao grupo de pais
Expand Down
2 changes: 1 addition & 1 deletion src/main/webapp/WEB-INF/classes/struts.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1993,7 +1993,7 @@
<result name="error">/hospitalReportManager/displayHRMReport.jsp</result>
</action>
<action name="tickler/EditTickler" class="io.github.carlos_emr.carlos.tickler.pageUtil.EditTickler2Action">
<result name="close">/closenreload.jsp</result>
<result name="close">/tickler/ticklerEditSuccess.jsp</result>
<result name="failure">/failure.jsp</result>
<result name="error">/errorpage.jsp</result>
</action>
Expand Down
37 changes: 32 additions & 5 deletions src/main/webapp/casemgmt/newEncounterLayout.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,30 @@
popColumn(url, name, name, null, null);
}

// Listen for tickler refresh broadcasts from ticklerAdd/ticklerEdit popup windows
var ticklerChannel = null;
try {
ticklerChannel = new BroadcastChannel('carlos_tickler_refresh_<%=Encode.forJavaScript(request.getParameter("demographicNo") != null ? request.getParameter("demographicNo") : "0")%>');
ticklerChannel.onmessage = function(event) {
var data = event.data;
if (data === 'refresh' || (data && data.action === 'refresh')) {
try {
reloadNav('tickler');
} catch (reloadErr) {
console.error('[newEncounterLayout] reloadNav failed:', reloadErr);
}
}
};
ticklerChannel.onmessageerror = function(event) {
console.error('[newEncounterLayout] BroadcastChannel message deserialization error:', event);
};
} catch (e) {
console.warn('[newEncounterLayout] BroadcastChannel not available:', e);
}
window.addEventListener('unload', function() {
if (ticklerChannel) { ticklerChannel.close(); }
});

function addPrintOption(name, bean) {
var test1Str = "<img style=\"cursor: pointer;\" title=\"Print " + name + "\" id=\"img" + name + "\" alt=\"Print " + name + "\" onclick=\"return printInfo(this, 'extPrint" + name + "');\" src=\"" + ctx + "/oscarEncounter/graphics/printer.png\">&nbsp;" + name;
jQuery("#printDateRow").before("<tr><td></td><td>" + test1Str + "</tr></tr>");
Expand All @@ -336,11 +360,14 @@
}


<%if(request.getParameter("appointmentNo") != null && request.getParameter("appointmentNo").length()>0) { %>
var appointmentNo = <%=request.getParameter("appointmentNo")%>;
<% } else { %>
var appointmentNo = 0;
<%}%>
<%
int appointmentNoVal = 0;
String appointmentNoParam = request.getParameter("appointmentNo");
if (appointmentNoParam != null && !appointmentNoParam.isEmpty()) {
try { appointmentNoVal = Integer.parseInt(appointmentNoParam); } catch (NumberFormatException ignored) {}
}
%>
var appointmentNo = <%=appointmentNoVal%>;

var savedNoteId = 0;
</script>
Expand Down
2 changes: 0 additions & 2 deletions src/main/webapp/documentManager/documentReport.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,6 @@
<link href="${pageContext.request.contextPath}/library/DataTables/DataTables-1.13.4/css/dataTables.bootstrap5.min.css"
rel="stylesheet" type="text/css"/>

<script src="${pageContext.request.contextPath}/library/jquery/jquery-ui-1.14.2.min.js"
type="text/javascript"></script>
<script type="text/javascript"
src="${pageContext.request.contextPath}/library/DataTables/DataTables-1.13.4/js/jquery.dataTables.min.js"></script>
<script type="text/javascript"
Expand Down
2 changes: 1 addition & 1 deletion src/main/webapp/includes/global-head.jspf
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
- global.js (legacy focus/refresh helpers)
- jQuery 3.7.1
- Bootstrap 5.3.3 (JS bundle + CSS)
- jQuery UI 1.14.2 CSS
- jQuery UI 1.14.2 CSS (JS must be included page-specifically where dialogs/widgets are needed)
- Font Awesome 6.7.2 (icon library)
- searchBox.css (shared search/form styles)
- global.css (CARLOS design tokens and common classes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -514,9 +514,9 @@

<script type="text/javascript"
src="<%=request.getContextPath()%>/library/jquery/jquery-ui-1.14.2.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery_oscar_defaults.js"></script>
<link href="<%=request.getContextPath() %>/library/jquery/jquery-ui-1.14.2.min.css" rel="stylesheet"
media="screen"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery_oscar_defaults.js"></script>

<!-- Instead of importing conreq.js using the CME tag (as done in Oscar19/OscarPro), we are opting to directly import conreq.js without utilizing the CME tag. -->
<% if ("ocean".equals(props.get("cme_js"))) {
Expand Down
Loading
Loading