From 503d52eeff78273e1732758275bf317e640a0fba Mon Sep 17 00:00:00 2001 From: Lubwama Samuel Date: Tue, 14 Jan 2020 15:38:05 +0300 Subject: [PATCH] Adding counselling workflow --- .../module/aijar/api/AijarService.java | 6 ++++ .../deploy/bundle/CommonMetadataBundle.java | 1 + .../aijar/api/impl/AijarServiceImpl.java | 9 ++--- .../module/aijar/metadata/core/Locations.java | 34 +++++++++++++++++++ .../tasks/StopActiveFacilityVisitTask.java | 22 ++++++++++++ api/src/main/resources/liquibase.xml | 23 +++++++++++++ .../resources/metadata/Role_Privilege.xml | 11 +++++- .../117-Viral-Load Non-SupressedRegister.xml | 2 +- 8 files changed, 102 insertions(+), 6 deletions(-) create mode 100644 api/src/main/java/org/openmrs/module/aijar/tasks/StopActiveFacilityVisitTask.java diff --git a/api/src/main/java/org/openmrs/module/aijar/api/AijarService.java b/api/src/main/java/org/openmrs/module/aijar/api/AijarService.java index 684641b75..1e486d5ed 100644 --- a/api/src/main/java/org/openmrs/module/aijar/api/AijarService.java +++ b/api/src/main/java/org/openmrs/module/aijar/api/AijarService.java @@ -15,9 +15,14 @@ import org.openmrs.Patient; import org.openmrs.Person; +import org.openmrs.annotation.Authorized; import org.openmrs.api.OpenmrsService; +import org.openmrs.util.OpenmrsConstants; +import org.openmrs.util.PrivilegeConstants; import org.springframework.transaction.annotation.Transactional; +import java.util.Date; + /** * This service exposes module's core functionality. It is a Spring managed bean which is configured in moduleApplicationContext.xml. @@ -59,4 +64,5 @@ public interface AijarService extends OpenmrsService { * This method when called generates and saves UIC (Unique Identifier Code) for all patients who dont have the UIC */ public void generateAndSaveUICForPatientsWithOut(); + } \ No newline at end of file diff --git a/api/src/main/java/org/openmrs/module/aijar/api/deploy/bundle/CommonMetadataBundle.java b/api/src/main/java/org/openmrs/module/aijar/api/deploy/bundle/CommonMetadataBundle.java index 7e44ad7f7..3f2e415fe 100644 --- a/api/src/main/java/org/openmrs/module/aijar/api/deploy/bundle/CommonMetadataBundle.java +++ b/api/src/main/java/org/openmrs/module/aijar/api/deploy/bundle/CommonMetadataBundle.java @@ -81,6 +81,7 @@ public void install() throws Exception { install(Locations.PHARMACY); install(Locations.RECEPTION); install(Locations.TRIAGE); + install(Locations.COUNSELING_CENTER); // Install Encounter Role install(encounterRole(EncounterRoles.ASSISTANT_CIRCUMCISER_NAME,EncounterRoles.ASSISTANT_CIRCUMCISER_DESCRIPTION,EncounterRoles.ASSISTANT_CIRCUMCISER_UUID)); diff --git a/api/src/main/java/org/openmrs/module/aijar/api/impl/AijarServiceImpl.java b/api/src/main/java/org/openmrs/module/aijar/api/impl/AijarServiceImpl.java index 0c6bc224f..9db77b5ed 100644 --- a/api/src/main/java/org/openmrs/module/aijar/api/impl/AijarServiceImpl.java +++ b/api/src/main/java/org/openmrs/module/aijar/api/impl/AijarServiceImpl.java @@ -19,15 +19,15 @@ import java.util.Date; import java.util.Calendar; - import org.openmrs.Patient; -import org.openmrs.PatientIdentifierType; -import org.openmrs.PatientIdentifier; import org.openmrs.Person; import org.openmrs.Relationship; import org.openmrs.User; import org.openmrs.api.PatientService; import org.openmrs.api.PersonService; +import org.openmrs.PatientIdentifierType; +import org.openmrs.PatientIdentifier; +import org.openmrs.api.VisitService; import org.openmrs.api.context.Context; import org.openmrs.api.impl.BaseOpenmrsService; import org.apache.commons.logging.Log; @@ -37,6 +37,8 @@ import org.openmrs.module.aijar.metadata.core.Locations; import org.openmrs.module.aijar.metadata.core.PatientIdentifierTypes; import org.openmrs.notification.Alert; +import org.openmrs.util.OpenmrsConstants; +import org.openmrs.util.OpenmrsUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -300,5 +302,4 @@ private String replaceLettersWithNumber(String letter) { } return numberToReturn; } - } \ No newline at end of file diff --git a/api/src/main/java/org/openmrs/module/aijar/metadata/core/Locations.java b/api/src/main/java/org/openmrs/module/aijar/metadata/core/Locations.java index 9fca1c806..488fe7d03 100755 --- a/api/src/main/java/org/openmrs/module/aijar/metadata/core/Locations.java +++ b/api/src/main/java/org/openmrs/module/aijar/metadata/core/Locations.java @@ -233,4 +233,38 @@ public List tags() { }; + public static LocationDescriptor COUNSELING_CENTER = new LocationDescriptor(){ + + @Override + public String uuid() { + return "7c231e1a-1db5-11ea-978f-2e728ce88125"; + } + + @Override + public String description() { + return "A location where counseling and screening is done for a patient"; + } + + @Override + public String name() { + return "Counseling Center"; + } + + @Override + public LocationDescriptor parent() { + return PARENT; + } + + @Override + public List tags() { + + return Arrays.asList( + LocationTags.LOGIN_LOCATION, + LocationTags.VISIT_LOCATION + ); + + } + + }; + } diff --git a/api/src/main/java/org/openmrs/module/aijar/tasks/StopActiveFacilityVisitTask.java b/api/src/main/java/org/openmrs/module/aijar/tasks/StopActiveFacilityVisitTask.java new file mode 100644 index 000000000..f43a0799f --- /dev/null +++ b/api/src/main/java/org/openmrs/module/aijar/tasks/StopActiveFacilityVisitTask.java @@ -0,0 +1,22 @@ +package org.openmrs.module.aijar.tasks; + +import org.openmrs.Visit; +import org.openmrs.api.VisitService; +import org.openmrs.api.context.Context; +import org.openmrs.scheduler.tasks.AbstractTask; +import org.openmrs.util.OpenmrsUtil; + +import java.util.List; + +public class StopActiveFacilityVisitTask extends AbstractTask { + @Override + public void execute() { + VisitService visitService = Context.getVisitService(); + List visitList = visitService.getAllVisits(); + for (Visit visit : visitList) { + if (visit.getStopDatetime() == null && visit.getVisitType()==visitService.getVisitTypeByUuid("7b0f5697-27e3-40c4-8bae-f4049abfb4ed")) { + visitService.endVisit(visit, OpenmrsUtil.getLastMomentOfDay(visit.getStartDatetime())); + } + } + } +} diff --git a/api/src/main/resources/liquibase.xml b/api/src/main/resources/liquibase.xml index b3fbfa0c6..768eb0e21 100644 --- a/api/src/main/resources/liquibase.xml +++ b/api/src/main/resources/liquibase.xml @@ -260,4 +260,27 @@ + + + + + SELECT COUNT(*) FROM scheduler_task_config + WHERE schedulable_class = 'org.openmrs.module.aijar.tasks.StopActiveFacilityVisitTask' + + + Close all active facility visits + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/src/main/resources/metadata/Role_Privilege.xml b/api/src/main/resources/metadata/Role_Privilege.xml index 722e6b1b6..498ab2c6f 100644 --- a/api/src/main/resources/metadata/Role_Privilege.xml +++ b/api/src/main/resources/metadata/Role_Privilege.xml @@ -22,6 +22,9 @@ + + + @@ -120,6 +123,7 @@ + @@ -231,6 +235,12 @@ + + + + + + @@ -270,7 +280,6 @@ - diff --git a/omod/src/main/webapp/resources/htmlforms/117-Viral-Load Non-SupressedRegister.xml b/omod/src/main/webapp/resources/htmlforms/117-Viral-Load Non-SupressedRegister.xml index 147065082..b34f2ff73 100644 --- a/omod/src/main/webapp/resources/htmlforms/117-Viral-Load Non-SupressedRegister.xml +++ b/omod/src/main/webapp/resources/htmlforms/117-Viral-Load Non-SupressedRegister.xml @@ -7,7 +7,7 @@ formUILocation="patientDashboard.visitActions" formOrder="3" formIcon="icon-medkit" - formShowIf="(visit.active || !visit.active) && patient.person.dead==false && sessionLocation.uuid=='86863db4-6101-4ecf-9a86-5e716d6504e4'" + formShowIf="(visit.active || !visit.active) && patient.person.dead==false && (sessionLocation.uuid=='86863db4-6101-4ecf-9a86-5e716d6504e4' || sessionLocation.uuid=='7c231e1a-1db5-11ea-978f-2e728ce88125')" formDisplayStyle="Standard">