-
Notifications
You must be signed in to change notification settings - Fork 120
Add-functionality-for-Ward-Admission-and-Local-Surge #17777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: development
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -345,12 +345,32 @@ | |
| class="w-100"> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Diagnosis Card" | ||
| value="Diagnosis Card (Legacy)" | ||
| ajax="false" | ||
| action="#{admissionController.navigateToInpatientDiagnosisCard()}" | ||
| icon="fa fa-diagnoses" | ||
| class="w-100"> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Ward Admission Card" | ||
| ajax="true" | ||
| icon="pi pi-document" | ||
| styleClass="ui-button-success w-100" | ||
| action="#{inpatientClinicalDataController.loadWardAdmissionDiagnosisCard}" | ||
| oncomplete="PF('wardDiagnosisDialogDashboard').show()" | ||
| process="@this" | ||
| update="wardDiagnosisPanelDashboard"> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Local Surgery Card" | ||
| ajax="true" | ||
| icon="pi pi-document" | ||
| styleClass="ui-button-info w-100" | ||
| action="#{inpatientClinicalDataController.loadLocalSurgeryDiagnosisCard}" | ||
| oncomplete="PF('surgeryDiagnosisDialogDashboard').show()" | ||
| process="@this" | ||
| update="surgeryDiagnosisPanelDashboard"> | ||
| </p:commandButton> | ||
|
Comment on lines
+348
to
+373
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: find . -type f -name "*InpatientClinicalDataController*"Repository: hmislk/hmis Length of output: 130 🏁 Script executed: find . -type f -name "admission_profile.xhtml"Repository: hmislk/hmis Length of output: 103 🏁 Script executed: rg "loadWardAdmissionDiagnosisCard|loadLocalSurgeryDiagnosisCard" -A 10 -B 2Repository: hmislk/hmis Length of output: 11016 🏁 Script executed: head -100 ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 5777 🏁 Script executed: rg "inpatientClinicalDataController|admissionController" ./src/main/webapp/inward/admission_profile.xhtml | head -30Repository: hmislk/hmis Length of output: 3203 🏁 Script executed: head -150 ./src/main/webapp/inward/clinical_data.xhtmlRepository: hmislk/hmis Length of output: 9534 🏁 Script executed: grep -n "current\|setCurrent\|fillCurrentEncounterLists" ./src/main/java/com/divudi/bean/inward/InpatientClinicalDataController.java | head -40Repository: hmislk/hmis Length of output: 2410 🏁 Script executed: grep -n "setCurrent\|public.*current\|@PostConstruct\|preRender\|postLoad" ./src/main/java/com/divudi/bean/inward/InpatientClinicalDataController.java | head -20Repository: hmislk/hmis Length of output: 567 🏁 Script executed: rg "inpatientClinicalDataController\.current\s*=" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 37 🏁 Script executed: rg "f:viewAction|p:ajax.*event=\"load\"|@PostConstruct" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 37 🏁 Script executed: rg "preRender\|viewAction\|PostConstruct" ./src/main/java/com/divudi/bean/inward/InpatientClinicalDataController.java -B 2 -A 5Repository: hmislk/hmis Length of output: 37 🏁 Script executed: cat ./src/main/java/com/divudi/bean/inward/InpatientClinicalDataController.java | grep -A 5 "public void setCurrent"Repository: hmislk/hmis Length of output: 709 🏁 Script executed: grep -n "navigateToAdmissionProfilePage" ./src/main/java/com/divudi/bean/inward/AdmissionController.java -A 10Repository: hmislk/hmis Length of output: 456 🏁 Script executed: grep -n "f:setPropertyActionListener\|inpatientClinicalDataController" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 3250 🏁 Script executed: grep -n "p:ajax.*load\|p:poll" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 37 🏁 Script executed: wc -l ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 107 🏁 Script executed: tail -200 ./src/main/webapp/inward/admission_profile.xhtml | head -100Repository: hmislk/hmis Length of output: 6598 🏁 Script executed: sed -n '340,380p' ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 2470 🏁 Script executed: grep -B 20 "loadWardAdmissionDiagnosisCard\|loadLocalSurgeryDiagnosisCard" ./src/main/webapp/inward/admission_profile.xhtml | head -50Repository: hmislk/hmis Length of output: 2018 🏁 Script executed: grep -n "f:setPropertyActionListener.*inpatientClinicalDataController" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 37 🏁 Script executed: sed -n '1,100p' ./src/main/webapp/inward/admission_profile.xhtml | grep -i "ajax\|listener\|load\|init"Repository: hmislk/hmis Length of output: 654 🏁 Script executed: grep -n "p:ajax.*event=\"load\"\|p:remoteCommand\|onload" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 37 🏁 Script executed: grep -n "private.*current\|public.*getCurrent\|patientEncounter" ./src/main/java/com/divudi/bean/inward/AdmissionController.java | head -20Repository: hmislk/hmis Length of output: 1222 🏁 Script executed: grep -n "navigateToAdmissionProfilePage\|navigateToInpatientClinicalData\|clinical_data" ./src/main/java/com/divudi/bean/inward/AdmissionController.java -A 5 | head -40Repository: hmislk/hmis Length of output: 564 🏁 Script executed: grep -rn "inpatientClinicalDataController.setCurrent\|inpatientClinicalDataController.*current\s*=" ./src/main/webapp/inward/ --include="*.xhtml"Repository: hmislk/hmis Length of output: 37 🏁 Script executed: rg "navigateToClinical|clinical_data" ./src/main/java/com/divudi/bean/inward/AdmissionController.java -A 8Repository: hmislk/hmis Length of output: 37 🏁 Script executed: grep -n "class Admission\|extends PatientEncounter" ./src/main/java/com/divudi/entity/Admission.java | head -5Repository: hmislk/hmis Length of output: 136 🏁 Script executed: grep -n "class PatientEncounter\|private.*Admission\|getEncounter\|patientEncounter" ./src/main/java/com/divudi/entity/Admission.java | head -20Repository: hmislk/hmis Length of output: 136 🏁 Script executed: rg "navigateToAdmissionProfilePage" ./src/main/webapp/inward/ --include="*.xhtml" -B 5 -A 5Repository: hmislk/hmis Length of output: 496 🏁 Script executed: find . -type f -name "Admission.java"Repository: hmislk/hmis Length of output: 115 🏁 Script executed: rg "navigateToAdmissionProfilePage" ./src/main/webapp/inward/ -B 5 -A 5Repository: hmislk/hmis Length of output: 9073 🏁 Script executed: grep -n "class Admission" ./src/main/java/com/divudi/entity/inward/Admission.java | head -3Repository: hmislk/hmis Length of output: 143 🏁 Script executed: grep -n "class Admission" ./src/main/java/com/divudi/core/entity/inward/Admission.java | head -3Repository: hmislk/hmis Length of output: 131 🏁 Script executed: grep -n "extends PatientEncounter\|implements PatientEncounter" ./src/main/java/com/divudi/core/entity/inward/Admission.javaRepository: hmislk/hmis Length of output: 131 🏁 Script executed: head -50 ./src/main/java/com/divudi/core/entity/inward/Admission.javaRepository: hmislk/hmis Length of output: 348 🏁 Script executed: grep -n "inpatientClinicalDataController.current\|setCurrent" ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 37 🏁 Script executed: sed -n '1,20p' ./src/main/webapp/inward/admission_profile.xhtmlRepository: hmislk/hmis Length of output: 1120 Sync These buttons call Add 🤖 Prompt for AI Agents |
||
| </div> | ||
| </p:panel> | ||
|
|
||
|
|
@@ -525,6 +545,64 @@ | |
| </div> | ||
| </p:panel> | ||
|
|
||
| <!-- Ward Admission Diagnosis Card Dialog - Dashboard --> | ||
| <p:dialog id="wardDiagnosisDlgDashboard" widgetVar="wardDiagnosisDialogDashboard" modal="true" width="90%" height="90%" header="Ward Admission Diagnosis Card"> | ||
| <h:panelGroup id="wardDiagnosisPanelDashboard"> | ||
| <div class="card"> | ||
| <div class="card-body"> | ||
| <h:outputText value="#{inpatientClinicalDataController.wardAdmissionDiagnosisCardHtml}" escape="false" rendered="#{inpatientClinicalDataController.wardAdmissionDiagnosisCardHtml ne null}"/> | ||
| </div> | ||
| <div class="card-footer"> | ||
| <p:commandButton | ||
| value="Print" | ||
| ajax="true" | ||
| icon="pi pi-print" | ||
| styleClass="ui-button-success"> | ||
| <p:printer target="wardDiagnosisPanelDashboard" /> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Close" | ||
| ajax="true" | ||
| icon="pi pi-times" | ||
| oncomplete="PF('wardDiagnosisDialogDashboard').hide()" | ||
| styleClass="ui-button-secondary"> | ||
| </p:commandButton> | ||
| </div> | ||
| </div> | ||
| </h:panelGroup> | ||
| </p:dialog> | ||
|
|
||
| <!-- Local Surgery Diagnosis Card Dialog - Dashboard --> | ||
| <p:dialog id="surgeryDiagnosisDlgDashboard" widgetVar="surgeryDiagnosisDialogDashboard" modal="true" width="90%" height="90%" header="Local Surgery Diagnosis Card"> | ||
| <h:panelGroup id="surgeryDiagnosisPanelDashboard"> | ||
| <div class="card"> | ||
| <div class="card-body"> | ||
| <h:outputText value="#{inpatientClinicalDataController.localSurgeryDiagnosisCardHtml}" escape="false" rendered="#{inpatientClinicalDataController.localSurgeryDiagnosisCardHtml ne null}"/> | ||
| </div> | ||
| <div class="card-footer"> | ||
| <p:commandButton | ||
| value="Print" | ||
| ajax="true" | ||
| icon="pi pi-print" | ||
| styleClass="ui-button-success"> | ||
| <p:printer target="surgeryDiagnosisPanelDashboard" /> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Close" | ||
| ajax="true" | ||
| icon="pi pi-times" | ||
| oncomplete="PF('surgeryDiagnosisDialogDashboard').hide()" | ||
| styleClass="ui-button-secondary"> | ||
| </p:commandButton> | ||
| </div> | ||
| </div> | ||
| </h:panelGroup> | ||
| </p:dialog> | ||
|
|
||
| </h:form> | ||
| </ui:define> | ||
| </ui:composition> | ||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -56,6 +56,29 @@ | |
| <f:setPropertyActionListener value="#{bhtEditController.current.patient}" target="#{patientController.current}" ></f:setPropertyActionListener> | ||
| </p:commandButton> | ||
|
|
||
| <!-- Diagnosis Card Type Buttons --> | ||
| <p:commandButton | ||
| ajax="true" | ||
| icon="pi pi-document" | ||
| value="Ward Admission Card" | ||
| class="m-1 p-0 ui-button-success" | ||
| action="#{inpatientClinicalDataController.loadWardAdmissionDiagnosisCard}" | ||
| oncomplete="PF('wardDiagnosisDialog').show()" | ||
| process="@this" | ||
| update="wardDiagnosisPanel"> | ||
| </p:commandButton> | ||
|
|
||
| <p:commandButton | ||
| ajax="true" | ||
| icon="pi pi-document" | ||
| value="Surgery Card" | ||
| class="m-1 p-0 ui-button-info" | ||
| action="#{inpatientClinicalDataController.loadLocalSurgeryDiagnosisCard}" | ||
| oncomplete="PF('surgeryDiagnosisDialog').show()" | ||
| process="@this" | ||
| update="surgeryDiagnosisPanel"> | ||
| </p:commandButton> | ||
|
Comment on lines
+59
to
+80
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Align naming and avoid confusing duplication for diagnosis card buttons You now have four labels for essentially two concepts:
All four trigger the same two controller methods and dialogs, so this inconsistency is likely to confuse users and makes the UI harder to document. Consider:
Also applies to: 626-659 🤖 Prompt for AI Agents |
||
|
|
||
| </div> | ||
| </div> | ||
| <div class="row" > | ||
|
|
@@ -600,21 +623,96 @@ | |
| value="#{inpatientClinicalDataController.selectedDiagnosisCard.comments}"> | ||
| </p:textEditor> | ||
|
|
||
|
|
||
|
|
||
|
|
||
| <!-- Diagnosis Card Types Section --> | ||
| <div class="card m-2 p-2"> | ||
| <div class="card-header"> | ||
| <h:outputLabel value="System-Based Diagnosis Cards" /> | ||
| </div> | ||
| <div class="card-body"> | ||
| <div class="row"> | ||
| <div class="col-md-6"> | ||
| <p:commandButton | ||
| value="Ward Admission Diagnosis Card" | ||
| ajax="true" | ||
| icon="pi pi-document" | ||
| styleClass="ui-button-success w-100" | ||
| action="#{inpatientClinicalDataController.loadWardAdmissionDiagnosisCard}" | ||
| oncomplete="PF('wardDiagnosisDialog').show()" | ||
| process="@this" | ||
| update="wardDiagnosisPanel"> | ||
| </p:commandButton> | ||
| </div> | ||
| <div class="col-md-6"> | ||
| <p:commandButton | ||
| value="Local Surgery Diagnosis Card" | ||
| ajax="true" | ||
| icon="pi pi-document" | ||
| styleClass="ui-button-info w-100" | ||
| action="#{inpatientClinicalDataController.loadLocalSurgeryDiagnosisCard}" | ||
| oncomplete="PF('surgeryDiagnosisDialog').show()" | ||
| process="@this" | ||
| update="surgeryDiagnosisPanel"> | ||
| </p:commandButton> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
|
|
||
| </p:tab> | ||
| </p:tabView> | ||
| </div> | ||
| </div> | ||
|
|
||
|
|
||
|
|
||
| </h:form> | ||
|
|
||
| </ui:define> | ||
| </ui:composition> | ||
|
|
||
| </h:body> | ||
| </html> | ||
| <!-- Ward Admission Diagnosis Card Dialog --> | ||
| <p:dialog id="wardDiagnosisDlg" widgetVar="wardDiagnosisDialog" modal="true" width="90%" height="90%" header="Ward Admission Diagnosis Card"> | ||
| <h:panelGroup id="wardDiagnosisPanel"> | ||
| <div class="card"> | ||
| <div class="card-body"> | ||
| <h:outputText value="#{inpatientClinicalDataController.wardAdmissionDiagnosisCardHtml}" escape="false" rendered="#{inpatientClinicalDataController.wardAdmissionDiagnosisCardHtml ne null}"/> | ||
| </div> | ||
| <div class="card-footer"> | ||
| <p:commandButton | ||
| value="Print" | ||
| ajax="true" | ||
| icon="pi pi-print" | ||
| styleClass="ui-button-success"> | ||
| <p:printer target="wardDiagnosisPanel" /> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Close" | ||
| ajax="true" | ||
| icon="pi pi-times" | ||
| oncomplete="PF('wardDiagnosisDialog').hide()" | ||
| styleClass="ui-button-secondary"> | ||
| </p:commandButton> | ||
| </div> | ||
| </div> | ||
| </h:panelGroup> | ||
| </p:dialog> | ||
|
|
||
| <!-- Local Surgery Diagnosis Card Dialog --> | ||
| <p:dialog id="surgeryDiagnosisDlg" widgetVar="surgeryDiagnosisDialog" modal="true" width="90%" height="90%" header="Local Surgery Diagnosis Card"> | ||
| <h:panelGroup id="surgeryDiagnosisPanel"> | ||
| <div class="card"> | ||
| <div class="card-body"> | ||
| <h:outputText value="#{inpatientClinicalDataController.localSurgeryDiagnosisCardHtml}" escape="false" rendered="#{inpatientClinicalDataController.localSurgeryDiagnosisCardHtml ne null}"/> | ||
| </div> | ||
| <div class="card-footer"> | ||
| <p:commandButton | ||
| value="Print" | ||
| ajax="true" | ||
| icon="pi pi-print" | ||
| styleClass="ui-button-success"> | ||
| <p:printer target="surgeryDiagnosisPanel" /> | ||
| </p:commandButton> | ||
| <p:commandButton | ||
| value="Close" | ||
| ajax="true" | ||
| icon="pi pi-times" | ||
| oncomplete="PF('surgeryDiagnosisDialog').hide()" | ||
| styleClass="ui-button-secondary"> | ||
| </p:commandButton> | ||
| </div> | ||
| </div> | ||
| </h:panelGroup> | ||
| </p:dialog> | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Reset diagnosis card HTML on failure and ensure encounter context is fully prepared
In
loadWardAdmissionDiagnosisCard()/loadLocalSurgeryDiagnosisCard():Two points:
current, or missing template),wardAdmissionDiagnosisCardHtml/localSurgeryDiagnosisCardHtmlandselectedDiagnosisCardTypeHtmlare left unchanged.oncomplete, this can show a previous patient’s card (or previous encounter) when the current call fails, which is misleading and potentially sensitive.Consider clearing state at the start of each method:
(and similarly for
localSurgeryDiagnosisCardHtml).createReplacementsMap(current)createReplacementsMap()iterates over lists likegetEncounterInvestigations(),getEncounterProcedures(),getPatientAllergies(), etc. Some getters (e.g.getEncounterInvestigations()) can returnnulluntilfillCurrentEncounterLists(current)/fillCurrentPatientLists(current.getPatient())have been called.clinical_data.xhtml, but these new loaders are now also called fromadmission_profile.xhtml. Ifcurrentis ever set without also populating the encounter lists, you could getNullPointerExceptions here.A defensive pattern would be:
before building the HTML, to ensure all lists are in a known good state.
🤖 Prompt for AI Agents