A sample configuration setup for bahmni.
HTML enhanced for web apps
Pull request review commentBahmni/bahmni-java-utils
BAH-1127|Buvaneswari|OpenElis not syncing with OpenMRS
public HttpRequestDetails getRequestDetails(URI uri) { @Override public HttpRequestDetails refreshRequestDetails(URI uri) {- DefaultHttpClient httpClient = new DefaultHttpClient(); try {+ CookieStore cookieStore = new BasicCookieStore(); HttpContext httpContext = new BasicHttpContext();- httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);-- httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, authenticationDetails.getReadTimeout());- httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, authenticationDetails.getConnectionTimeout());-+ httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); HttpPost httpPost = new HttpPost(uri); logger.info(String.format("Executing request: %s", httpPost.getRequestLine()));+ RequestConfig requestConfig = RequestConfig.custom()+ .setConnectTimeout(authenticationDetails.getReadTimeout())+ .setSocketTimeout(60000)
@buvaneswari-arun can we have constant defined here instead of hardcoding the value
comment created time in 41 minutes
PR opened Bahmni/openmrs-module-bahmni.ie.apps
pr created time in 4 hours
Pull request review commentBahmni/default-config
BAH-1125 - Swati/Praveena - Hide 'Join teleconsultation' button on non-teleconsultation Appointments
angular.module('bahmni.common.displaycontrol.custom') var jitsiMeetingId = $scope.upcomingAppointmentsUUIDs[appointmentIndex]; appService.setTeleConsultationVars(jitsiMeetingId, true); };+ $scope.showJoinTeleconsultationOption = function (appointmentIndex) {
Please refrain from hard-coding texts. 'Scheduled' - please pull it from config.
comment created time in 5 hours
Pull request review commentBahmni/bahmni-core
BAH-1127|Buvaneswari|openElis to OpenMRS sync
<version>${calculationModuleVersion}</version> <scope>test</scope> </dependency>+
Agreed. Will remove this.
comment created time in 18 hours
Pull request review commentBahmni/bahmni-core
BAH-1127|Buvaneswari|openElis to OpenMRS sync
<version>${calculationModuleVersion}</version> <scope>test</scope> </dependency>+
are these needed? jaxb are all XML schema and binding dependencies.
comment created time in 18 hours
Pull request review commentBahmni/bahmni-java-utils
BAH-1127|Buvaneswari|OpenElis not syncing with OpenMRS
public HttpResponse get(HttpRequestDetails requestDetails) { } public HttpResponse get(HttpRequestDetails requestDetails, HttpHeaders httpHeaders) {- defaultHttpClient = (connectionManager == null) ? new DefaultHttpClient() : new DefaultHttpClient(connectionManager);- defaultHttpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, readTimeout);- defaultHttpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, connectTimeout); HttpGet httpGet = new HttpGet(requestDetails.getUri());+ RequestConfig requestConfig = RequestConfig.custom()+ .setConnectTimeout(readTimeout)+ .setSocketTimeout(connectTimeout)+ .build();+ if(connectionManager == null) {+ connectionManager = new PoolingHttpClientConnectionManager();+ }+ closeableHttpClient = HttpClientBuilder.create()
you could have done with try with resources block, then you would not have to handle the closing part. But if caller is calling the closeConnection() and you wouldn't want to refactor that - then its ok
comment created time in 18 hours
Pull request review commentBahmni/bahmni-java-utils
BAH-1127|Buvaneswari|OpenElis not syncing with OpenMRS
<scope>test</scope> </dependency> </dependencies>+ <build>
is this required? the httpcomponents is mentioned as provided dependency anyway
comment created time in 18 hours
push eventbahmni-msf/amman-config
commit sha b505df23075ffbaf921d96964d9b0eb6eacf5b73
Vinisha, Supriya | MOBN-1579 | Add video concept to Video Upload section
push time in 19 hours
push eventbahmni-msf/amman-config
commit sha 9fcf178a56c4e22590beebbba63b99a324574e02
Supriya, Vinisha, Tarun | MOBN-1575 | MOBN-1579 | Add set members to Form sections
push time in a day
push eventbahmni-msf/amman-config
commit sha f9f375505e7bdb83200359fb4c8c1ed8172f52d3
Vinisha, Supriya | MOBN-1575 |MOBN-1579 | Add migrations to liquibase.xml
push time in a day
issue openedBahmni/bahmni-playbooks
Successfully installed bahmni, but failed to install dcm4chee.
Use docker container (centos 7.6) and bahmni install command to deploy bahmni(0.92) successfully, and can access services such as Bahmni-EMR and Bahmni-LAB through the web. But cannot access http://172.17.0.2/dcm4chee-web3, because dcm4chee has not been installed correctly. Querying Bahmni Wiki: Advanced Installation Options did not find out how to install dcm4chee through bahmni install. Any help would be appreciated.
bahmni start:
PLAY [pacs-integration-db:pacs-integration-db-slave] ***************************
skipping: no hosts matched
[WARNING]: Could not match supplied host pattern, ignoring: pacs-integration
PLAY [pacs-integration] ********************************************************
skipping: no hosts matched
PLAY [atomfeed-console] ********************************************************
META: ran handlers
META: ran handlers
META: ran handlers
[WARNING]: Could not match supplied host pattern, ignoring: dcm4chee-db
[WARNING]: Could not match supplied host pattern, ignoring: dcm4chee-db-slave
PLAY [dcm4chee-db,dcm4chee-db-slave] *******************************************
skipping: no hosts matched
[WARNING]: Could not match supplied host pattern, ignoring: dcm4chee
PLAY [dcm4chee] ****************************************************************
skipping: no hosts matched
[WARNING]: Could not match supplied host pattern, ignoring: bahmni-event-log-
service
PLAY [bahmni-event-log-service] ************************************************
skipping: no hosts matched
created time in 2 days
push eventbahmni-msf/amman-config
commit sha 26985eca206f818c2f56b38c2950ae85628dc9f9
Vinisha, Supriya | MOBN-1575 |MOBN-1579 | Add migrations to liquibase.xml
push time in 3 days
push eventbahmni-msf/amman-config
commit sha db2b46c46446eb56b2151e562d1a1333f4f54aa4
Vinisha, Supriya | MOBN-1575 |MOBN-1579 | Add migrations to liquibase.xml
push time in 3 days
push eventbahmni-msf/amman-config
commit sha 833e57122a30c861763316993da0957f046e3a4c
Vinisha, Supriya | MOBN-1575 | MOBN-1579 | Add mappings of child concepts to parent concepts and references to CEIL concepts for Network Physiotherapy form
commit sha 7b869c18a75e0d70fbb958f5d85a39b5ac59be07
Vinisha, Supriya | MOBN-1575 | Change concept name to Network Physiotherapy
push time in 3 days
Pull request review commentBahmni/default-config
BAH-1125 - Swati/Praveena - Hide 'Join teleconsultation' button on non-teleconsultation Appointments
<h2 class="section-title" ng-click="goToListView()"><span style="border-bottom: {{detail}} </td> <td>- <button style="background: #669998; color: white;" ng-if="appointment.DASHBOARD_APPOINTMENTS_STATUS_KEY == 'Scheduled'" ng-click="openJitsiMeet($index)">+ <button style="background: #669998; color: white;" ng-if="appointment.DASHBOARD_APPOINTMENTS_STATUS_KEY == 'Scheduled' && appointment.DASHBOARD_APPOINTMENTS_TELECONSULTATION == true" ng-click="openJitsiMeet($index)">
changes done
comment created time in 3 days
push eventbahmni-msf/amman-config
commit sha f8ee7b5cbb80a3d67aa3be5cfa62b2cb9e1cc549
Vinisha, Supriya | MOBN-1575 | MOBN-1579 | Add mappings of child concepts to parent concepts and references to CEIL concepts for Network Physiotherapy form
push time in 3 days
push eventbahmni-msf/amman-config
commit sha 001a519dbd98fbf9a953edfca22c4d45736f2807
Vinisha,Supriya,Tarun | MOBN-1575 | Modify concept names to correct values.
push time in 3 days
Pull request review commentBahmni/bahmni-offline-sync
BAh-1106 | Gopi,Shriram | Changes Related To Zipping of AddressHierarchy and OfflineConcepts
+package org.bahmni.module.bahmniOfflineSync.strategy;++import org.apache.commons.logging.Log;+import org.apache.commons.logging.LogFactory;+import org.bahmni.module.bahmniOfflineSync.eventLog.EventLog;+import org.bahmni.module.bahmniOfflineSync.utils.AddressHierarchyLevelWithLevelEntryName;+import org.bahmni.module.bahmniOfflineSync.utils.SelectiveSyncStrategyHelper;+import org.ict4h.atomfeed.server.domain.EventRecord;+import org.openmrs.*;+import org.openmrs.api.context.Context;+import org.openmrs.module.addresshierarchy.AddressHierarchyEntry;+import org.openmrs.module.addresshierarchy.AddressHierarchyLevel;+import org.openmrs.module.addresshierarchy.service.AddressHierarchyService;+import org.springframework.util.StringUtils;++import java.sql.SQLException;+import java.util.*;++public class SelectiveSyncStrategy extends AbstractOfflineSyncStrategy {+ private static final String ATTRIBUTE_TYPE_NAME = "addressCode";+ protected static Log log = LogFactory.getLog(SelectiveSyncStrategy.class);+ private static AddressHierarchyService addressHierarchyService = Context.getService(AddressHierarchyService.class);++ public SelectiveSyncStrategy() throws SQLException {+ super();++ }++ protected String evaluateFilterForPatient(String uuid) {+ String patientFilter = null;+ Patient patient = patientService.getPatientByUuid(uuid);++ if (patient != null && patient.getAttribute(ATTRIBUTE_TYPE_NAME) != null) {+ patientFilter = patient.getAttribute(ATTRIBUTE_TYPE_NAME).getValue();+ }++ return patientFilter;+ }++ private String evaluateFilterForEncounter(String uuid) {+ String filter = null;+ Encounter encounter = encounterService.getEncounterByUuid(uuid);+ if (encounter != null)+ filter = evaluateFilterForPatient(encounter.getPatient().getUuid());+ return filter;+ }++ private String evaluateFilterForAddressHierarchy(String uuid) {+ String addressHierarchyFilter = null;+ AddressHierarchyService addressHierarchyService = Context.getService(AddressHierarchyService.class);+ AddressHierarchyEntry addressHierarchyEntry = addressHierarchyService.getAddressHierarchyEntryByUuid(uuid);+ if (addressHierarchyEntry != null && addressHierarchyEntry.getLevel() != null && addressHierarchyEntry.getLevel().getId() > 3) {+ addressHierarchyFilter = addressHierarchyEntry.getUserGeneratedId();+ }+ return addressHierarchyFilter;+ }+++ public Map<String, List<String>> getFilterForDevice(String providerUuid, String addressUuid, String loginLocationUuid) {+ if(addressUuid.equals("null") || addressUuid.isEmpty()) {+ throw new RuntimeException("Please give address for this login location in openmrs");+ }+ Map<String, List<String>> categoryFilterMap = new HashMap();+ AddressHierarchyService addressHierarchyService = Context.getService(AddressHierarchyService.class);+ AddressHierarchyEntry addressHierarchyEntry = addressHierarchyService.getAddressHierarchyEntryByUuid(addressUuid);+ List transactionalDataFilters = getTransactionalDataFilters(loginLocationUuid, addressHierarchyService, addressHierarchyEntry);+ categoryFilterMap.put("patient", transactionalDataFilters);+ categoryFilterMap.put("encounter", transactionalDataFilters);+ categoryFilterMap.put("addressHierarchy", getFiltersForAddressHierarchy(addressHierarchyEntry));+ //categoryFilterMap.put("parentAddressHierarchy", new ArrayList<String>());+ categoryFilterMap.put("offline-concepts", new ArrayList<String>());+ categoryFilterMap.put("forms", new ArrayList<>());+ return categoryFilterMap;+ }++ private List getTransactionalDataFilters(String loginLocationUuid, AddressHierarchyService addressHierarchyService, AddressHierarchyEntry addressHierarchyEntry) {+ List transactionalDataFilters = new ArrayList();+ if (addressHierarchyEntry != null) {+ LocationAttributeType catchmentFiltersAttribute = locationService.getLocationAttributeTypeByName("catchmentFilters");+ String userGeneratedId = addressHierarchyEntry.getUserGeneratedId();+ LocationAttribute catchmentFilters = getCatchmentFilters(loginLocationUuid, catchmentFiltersAttribute);+ List<AddressHierarchyEntry> childAddressHierarchyEntries = addressHierarchyService.getChildAddressHierarchyEntries(addressHierarchyEntry);+ List<String> transactionalFilters = getCatchmentIds(catchmentFilters, childAddressHierarchyEntries, addressHierarchyService, addressHierarchyEntry);+ transactionalDataFilters.add(userGeneratedId);+ transactionalDataFilters.addAll(transactionalFilters);+ }+ return transactionalDataFilters;+ }++ private LocationAttribute getCatchmentFilters(String loginLocationUuid, LocationAttributeType catchmentFiltersAttribute) {+ Location location = locationService.getLocationByUuid(loginLocationUuid);+ List<LocationAttribute> attributes = (List<LocationAttribute>) location.getActiveAttributes();+ for (LocationAttribute attribute : attributes) {+ if (attribute.getAttributeType().equals(catchmentFiltersAttribute)) {+ return attribute;+ }+ }+ return null;+ }++ private List<String> getCatchmentIds(LocationAttribute catchmentFilters, List<AddressHierarchyEntry> childAddressHierarchyEntries, AddressHierarchyService addressHierarchyService, AddressHierarchyEntry addressHierarchyEntry) {+ List<String> wardIDs = new ArrayList();+ if (catchmentFilters != null) {+ String wardsName = trim(catchmentFilters.getValue().toString());+ Set<String> wardsNameList = StringUtils.commaDelimitedListToSet(wardsName);+ for (String wardName : wardsNameList) {+ AddressHierarchyEntry childAddressHierarchyEntry = addressHierarchyService.getChildAddressHierarchyEntryByName(addressHierarchyEntry, wardName);+ if (childAddressHierarchyEntry == null) {+ throw new RuntimeException("Please check your catchmentFilters configuration in openmrs!!");+ } else {+ getAllWardIds(childAddressHierarchyEntry, addressHierarchyService, wardIDs);+ }+ }+ } else {+ updateWardIds(addressHierarchyService, wardIDs, childAddressHierarchyEntries);+ }+ return wardIDs;+ }++ private void getAllWardIds(AddressHierarchyEntry addressHierarchyEntry, AddressHierarchyService addressHierarchyService, List<String> wardIDs) {+ if (addressHierarchyEntry == null) {+ return;+ }+ wardIDs.add(addressHierarchyEntry.getUserGeneratedId());+ List<AddressHierarchyEntry> childAddressHierarchyEntries = addressHierarchyService.getChildAddressHierarchyEntries(addressHierarchyEntry);+ updateWardIds(addressHierarchyService, wardIDs, childAddressHierarchyEntries);+ }++ private void updateWardIds(AddressHierarchyService addressHierarchyService, List<String> wardIDs, List<AddressHierarchyEntry> childAddressHierarchyEntries) {+ for (AddressHierarchyEntry childAddressHierarchyEntry : childAddressHierarchyEntries) {+ getAllWardIds(childAddressHierarchyEntry, addressHierarchyService, wardIDs);+ }+ }++ private String trim(String content) {+ content = content.trim();+ return content.replaceAll("(\\s*,\\s*)", ",");+ }++ @Override+ public List<String> getEventCategoriesList() {+ List<String> eventCategoryList = new ArrayList();++ eventCategoryList.add("patient");+ eventCategoryList.add("encounter");+ eventCategoryList.add("addressHierarchy");+ eventCategoryList.add("parentAddressHierarchy");+ eventCategoryList.add("offline-concepts");+ eventCategoryList.add("forms");++ return eventCategoryList;+ }++++ private List<String> getFiltersForAddressHierarchy(AddressHierarchyEntry addressHierarchyEntry) {+ List addressHierarchyFilters = new ArrayList();+ while (addressHierarchyEntry.getParent() != null) {+ if (addressHierarchyEntry.getUserGeneratedId().length() == 6) {+ addressHierarchyFilters.add(addressHierarchyEntry.getUserGeneratedId());+ break;+ }+ addressHierarchyEntry = addressHierarchyEntry.getParent();+ }+ return addressHierarchyFilters;+ }++ @Override+ public List<EventLog> getEventLogsFromEventRecords(List<EventRecord> eventRecords) {+ List<EventLog> eventLogs = new ArrayList<EventLog>();++ for (EventRecord er : eventRecords) {+ EventLog eventLog = new EventLog(er.getUuid(),er.getCategory(),er.getTimeStamp(),er.getContents(), null, er.getUuid());+ String category = er.getCategory();+ String uuid = getUuidFromURL(er.getContents());+ String filter = null;++ if (!uuid.isEmpty()) {+ if (category.equalsIgnoreCase("all-concepts")) {+ if (isOfflineConceptEvent(uuid)) {+ eventLog.setCategory("offline-concepts");+ } else {+ eventLog.setCategory("concepts");+ }+ }++ if (category.equalsIgnoreCase("Patient")|| category.equalsIgnoreCase("LabOrderResults")) {+ // filter = evaluateFilterForPatient(uuid);
Removed comments @binduak
comment created time in 3 days
Pull request review commentBahmni/bahmni-connect
'use strict'; angular.module('bahmni.home')- .controller('DashboardController', ['$scope', '$state', 'appService', 'locationService', 'spinner', '$bahmniCookieStore', '$window', '$q', 'offlineService', 'schedulerService', 'eventQueue', 'offlineDbService', 'androidDbService', 'networkStatusService', 'messagingService', '$translate',- function ($scope, $state, appService, locationService, spinner, $bahmniCookieStore, $window, $q, offlineService, schedulerService, eventQueue, offlineDbService, androidDbService, networkStatusService, messagingService, $translate) {+ .controller('DashboardController', ['$scope', '$state', 'appService', 'locationService', 'spinner', '$bahmniCookieStore', '$window', '$q', 'offlineService', 'schedulerService', 'eventQueue', 'offlineDbService', 'androidDbService', 'networkStatusService', 'messagingService', '$translate', '$http',+ function ($scope, $state, appService, locationService, spinner, $bahmniCookieStore, $window, $q, offlineService, schedulerService, eventQueue, offlineDbService, androidDbService, networkStatusService, messagingService, $translate, $http) { $scope.appExtensions = appService.getAppDescriptor().getExtensions($state.current.data.extensionPointId, "link") || []; $scope.selectedLocationUuid = {}; $scope.isOfflineApp = offlineService.isOfflineApp(); $scope.isPWAapp = offlineService.isChromeApp();+ $scope.isSelectiveSyncStrategy = false;++ var verifySelectiveSync = function () {+ $http.get('/openmrs/ws/rest/v1/eventlog/filter/globalProperty/', {+ method: "GET",+ params: { q: 'bahmniOfflineSync.strategy' },
We didn't have any service that will do the needful Bindu. if it's better to use service we will create a new service . please suggest us .
comment created time in 3 days
pull request commentBahmni/bahmni-connect
@gopikrishna-yaramothu the below files doesn't have any new test cases added selectiveSyncService.js , selectiveSchedulerService.js
comment created time in 3 days
Pull request review commentBahmni/bahmni-connect
'use strict'; angular.module('bahmni.registration')- .controller('NavigationController', ['$scope', '$rootScope', '$location', 'sessionService', '$window', 'appService', '$sce', 'offlineService', 'schedulerService',- function ($scope, $rootScope, $location, sessionService, $window, appService, $sce, offlineService, schedulerService) {+ .controller('NavigationController', ['$scope', '$rootScope', '$location', 'sessionService', '$window', 'appService', '$sce', 'offlineService', 'schedulerService', '$http',+ function ($scope, $rootScope, $location, sessionService, $window, appService, $sce, offlineService, schedulerService, $http) { $scope.extensions = appService.getAppDescriptor().getExtensions("org.bahmni.registration.navigation", "link"); $scope.isOfflineApp = offlineService.isOfflineApp();+ $scope.isSelectiveSyncStrategy = false;++ var verifySelectiveSync = function () {+ $http.get('/openmrs/ws/rest/v1/eventlog/filter/globalProperty/', {+ method: "GET",+ params: { q: 'bahmniOfflineSync.strategy' },
@gopikrishna-yaramothu same as mentioned above
comment created time in 3 days
Pull request review commentBahmni/bahmni-connect
'use strict'; angular.module('bahmni.home')- .controller('DashboardController', ['$scope', '$state', 'appService', 'locationService', 'spinner', '$bahmniCookieStore', '$window', '$q', 'offlineService', 'schedulerService', 'eventQueue', 'offlineDbService', 'androidDbService', 'networkStatusService', 'messagingService', '$translate',- function ($scope, $state, appService, locationService, spinner, $bahmniCookieStore, $window, $q, offlineService, schedulerService, eventQueue, offlineDbService, androidDbService, networkStatusService, messagingService, $translate) {+ .controller('DashboardController', ['$scope', '$state', 'appService', 'locationService', 'spinner', '$bahmniCookieStore', '$window', '$q', 'offlineService', 'schedulerService', 'eventQueue', 'offlineDbService', 'androidDbService', 'networkStatusService', 'messagingService', '$translate', '$http',+ function ($scope, $state, appService, locationService, spinner, $bahmniCookieStore, $window, $q, offlineService, schedulerService, eventQueue, offlineDbService, androidDbService, networkStatusService, messagingService, $translate, $http) { $scope.appExtensions = appService.getAppDescriptor().getExtensions($state.current.data.extensionPointId, "link") || []; $scope.selectedLocationUuid = {}; $scope.isOfflineApp = offlineService.isOfflineApp(); $scope.isPWAapp = offlineService.isChromeApp();+ $scope.isSelectiveSyncStrategy = false;++ var verifySelectiveSync = function () {+ $http.get('/openmrs/ws/rest/v1/eventlog/filter/globalProperty/', {+ method: "GET",+ params: { q: 'bahmniOfflineSync.strategy' },
this shouldn't be part of controller. Do we have any service that it talks to. If yes, we can move the code to the service file @gopikrishna-yaramothu
comment created time in 3 days
Pull request review commentBahmni/bahmni-offline-sync
BAh-1106 | Gopi,Shriram | Changes Related To Zipping of AddressHierarchy and OfflineConcepts
+package org.bahmni.module.bahmniOfflineSync.strategy;++import org.apache.commons.logging.Log;+import org.apache.commons.logging.LogFactory;+import org.bahmni.module.bahmniOfflineSync.eventLog.EventLog;+import org.bahmni.module.bahmniOfflineSync.utils.AddressHierarchyLevelWithLevelEntryName;+import org.bahmni.module.bahmniOfflineSync.utils.SelectiveSyncStrategyHelper;+import org.ict4h.atomfeed.server.domain.EventRecord;+import org.openmrs.*;+import org.openmrs.api.context.Context;+import org.openmrs.module.addresshierarchy.AddressHierarchyEntry;+import org.openmrs.module.addresshierarchy.AddressHierarchyLevel;+import org.openmrs.module.addresshierarchy.service.AddressHierarchyService;+import org.springframework.util.StringUtils;++import java.sql.SQLException;+import java.util.*;++public class SelectiveSyncStrategy extends AbstractOfflineSyncStrategy {+ private static final String ATTRIBUTE_TYPE_NAME = "addressCode";+ protected static Log log = LogFactory.getLog(SelectiveSyncStrategy.class);+ private static AddressHierarchyService addressHierarchyService = Context.getService(AddressHierarchyService.class);++ public SelectiveSyncStrategy() throws SQLException {+ super();++ }++ protected String evaluateFilterForPatient(String uuid) {+ String patientFilter = null;+ Patient patient = patientService.getPatientByUuid(uuid);++ if (patient != null && patient.getAttribute(ATTRIBUTE_TYPE_NAME) != null) {+ patientFilter = patient.getAttribute(ATTRIBUTE_TYPE_NAME).getValue();+ }++ return patientFilter;+ }++ private String evaluateFilterForEncounter(String uuid) {+ String filter = null;+ Encounter encounter = encounterService.getEncounterByUuid(uuid);+ if (encounter != null)+ filter = evaluateFilterForPatient(encounter.getPatient().getUuid());+ return filter;+ }++ private String evaluateFilterForAddressHierarchy(String uuid) {+ String addressHierarchyFilter = null;+ AddressHierarchyService addressHierarchyService = Context.getService(AddressHierarchyService.class);+ AddressHierarchyEntry addressHierarchyEntry = addressHierarchyService.getAddressHierarchyEntryByUuid(uuid);+ if (addressHierarchyEntry != null && addressHierarchyEntry.getLevel() != null && addressHierarchyEntry.getLevel().getId() > 3) {+ addressHierarchyFilter = addressHierarchyEntry.getUserGeneratedId();+ }+ return addressHierarchyFilter;+ }+++ public Map<String, List<String>> getFilterForDevice(String providerUuid, String addressUuid, String loginLocationUuid) {+ if(addressUuid.equals("null") || addressUuid.isEmpty()) {+ throw new RuntimeException("Please give address for this login location in openmrs");+ }+ Map<String, List<String>> categoryFilterMap = new HashMap();+ AddressHierarchyService addressHierarchyService = Context.getService(AddressHierarchyService.class);+ AddressHierarchyEntry addressHierarchyEntry = addressHierarchyService.getAddressHierarchyEntryByUuid(addressUuid);+ List transactionalDataFilters = getTransactionalDataFilters(loginLocationUuid, addressHierarchyService, addressHierarchyEntry);+ categoryFilterMap.put("patient", transactionalDataFilters);+ categoryFilterMap.put("encounter", transactionalDataFilters);+ categoryFilterMap.put("addressHierarchy", getFiltersForAddressHierarchy(addressHierarchyEntry));+ //categoryFilterMap.put("parentAddressHierarchy", new ArrayList<String>());+ categoryFilterMap.put("offline-concepts", new ArrayList<String>());+ categoryFilterMap.put("forms", new ArrayList<>());+ return categoryFilterMap;+ }++ private List getTransactionalDataFilters(String loginLocationUuid, AddressHierarchyService addressHierarchyService, AddressHierarchyEntry addressHierarchyEntry) {+ List transactionalDataFilters = new ArrayList();+ if (addressHierarchyEntry != null) {+ LocationAttributeType catchmentFiltersAttribute = locationService.getLocationAttributeTypeByName("catchmentFilters");+ String userGeneratedId = addressHierarchyEntry.getUserGeneratedId();+ LocationAttribute catchmentFilters = getCatchmentFilters(loginLocationUuid, catchmentFiltersAttribute);+ List<AddressHierarchyEntry> childAddressHierarchyEntries = addressHierarchyService.getChildAddressHierarchyEntries(addressHierarchyEntry);+ List<String> transactionalFilters = getCatchmentIds(catchmentFilters, childAddressHierarchyEntries, addressHierarchyService, addressHierarchyEntry);+ transactionalDataFilters.add(userGeneratedId);+ transactionalDataFilters.addAll(transactionalFilters);+ }+ return transactionalDataFilters;+ }++ private LocationAttribute getCatchmentFilters(String loginLocationUuid, LocationAttributeType catchmentFiltersAttribute) {+ Location location = locationService.getLocationByUuid(loginLocationUuid);+ List<LocationAttribute> attributes = (List<LocationAttribute>) location.getActiveAttributes();+ for (LocationAttribute attribute : attributes) {+ if (attribute.getAttributeType().equals(catchmentFiltersAttribute)) {+ return attribute;+ }+ }+ return null;+ }++ private List<String> getCatchmentIds(LocationAttribute catchmentFilters, List<AddressHierarchyEntry> childAddressHierarchyEntries, AddressHierarchyService addressHierarchyService, AddressHierarchyEntry addressHierarchyEntry) {+ List<String> wardIDs = new ArrayList();+ if (catchmentFilters != null) {+ String wardsName = trim(catchmentFilters.getValue().toString());+ Set<String> wardsNameList = StringUtils.commaDelimitedListToSet(wardsName);+ for (String wardName : wardsNameList) {+ AddressHierarchyEntry childAddressHierarchyEntry = addressHierarchyService.getChildAddressHierarchyEntryByName(addressHierarchyEntry, wardName);+ if (childAddressHierarchyEntry == null) {+ throw new RuntimeException("Please check your catchmentFilters configuration in openmrs!!");+ } else {+ getAllWardIds(childAddressHierarchyEntry, addressHierarchyService, wardIDs);+ }+ }+ } else {+ updateWardIds(addressHierarchyService, wardIDs, childAddressHierarchyEntries);+ }+ return wardIDs;+ }++ private void getAllWardIds(AddressHierarchyEntry addressHierarchyEntry, AddressHierarchyService addressHierarchyService, List<String> wardIDs) {+ if (addressHierarchyEntry == null) {+ return;+ }+ wardIDs.add(addressHierarchyEntry.getUserGeneratedId());+ List<AddressHierarchyEntry> childAddressHierarchyEntries = addressHierarchyService.getChildAddressHierarchyEntries(addressHierarchyEntry);+ updateWardIds(addressHierarchyService, wardIDs, childAddressHierarchyEntries);+ }++ private void updateWardIds(AddressHierarchyService addressHierarchyService, List<String> wardIDs, List<AddressHierarchyEntry> childAddressHierarchyEntries) {+ for (AddressHierarchyEntry childAddressHierarchyEntry : childAddressHierarchyEntries) {+ getAllWardIds(childAddressHierarchyEntry, addressHierarchyService, wardIDs);+ }+ }++ private String trim(String content) {+ content = content.trim();+ return content.replaceAll("(\\s*,\\s*)", ",");+ }++ @Override+ public List<String> getEventCategoriesList() {+ List<String> eventCategoryList = new ArrayList();++ eventCategoryList.add("patient");+ eventCategoryList.add("encounter");+ eventCategoryList.add("addressHierarchy");+ eventCategoryList.add("parentAddressHierarchy");+ eventCategoryList.add("offline-concepts");+ eventCategoryList.add("forms");++ return eventCategoryList;+ }++++ private List<String> getFiltersForAddressHierarchy(AddressHierarchyEntry addressHierarchyEntry) {+ List addressHierarchyFilters = new ArrayList();+ while (addressHierarchyEntry.getParent() != null) {+ if (addressHierarchyEntry.getUserGeneratedId().length() == 6) {+ addressHierarchyFilters.add(addressHierarchyEntry.getUserGeneratedId());+ break;+ }+ addressHierarchyEntry = addressHierarchyEntry.getParent();+ }+ return addressHierarchyFilters;+ }++ @Override+ public List<EventLog> getEventLogsFromEventRecords(List<EventRecord> eventRecords) {+ List<EventLog> eventLogs = new ArrayList<EventLog>();++ for (EventRecord er : eventRecords) {+ EventLog eventLog = new EventLog(er.getUuid(),er.getCategory(),er.getTimeStamp(),er.getContents(), null, er.getUuid());+ String category = er.getCategory();+ String uuid = getUuidFromURL(er.getContents());+ String filter = null;++ if (!uuid.isEmpty()) {+ if (category.equalsIgnoreCase("all-concepts")) {+ if (isOfflineConceptEvent(uuid)) {+ eventLog.setCategory("offline-concepts");+ } else {+ eventLog.setCategory("concepts");+ }+ }++ if (category.equalsIgnoreCase("Patient")|| category.equalsIgnoreCase("LabOrderResults")) {+ // filter = evaluateFilterForPatient(uuid);
@gopikrishna-yaramothu not realised before.. i see comments here too. are these required here ?
comment created time in 3 days
push eventbahmni-msf/amman-config
commit sha 6b8b481591ff7688836946e7fb11e1a39c8308a5
Tarun | MOBN-1573 | Add caretaker program
commit sha 9e62b1d9327a8532d6ca64e4eaec1ddb6e7c9df7
Merge pull request #6 from bahmni-msf/MOBN-1573 Tarun | MOBN-1573 | Add caretaker program
push time in 6 days
PR opened Bahmni/form-controls
-
Tarun,Supriya | MOBN-1188 | Fix issues with complex concepts when addMore is enabled
-
Supriya, Tarun | MOBN-1188 | Fix unit tests
-
Supriya, Tarun | MOBN-1188 | Fix issues for complex concepts with addMore enabled
-
Supriya, Tarun | MOBN-1188 | Fix issues for complex concepts with addMore enabled
-
Supriya, Tarun | MOBN-1188 | Add unit tests for canAddNextFormFieldPath Co-authored-by: Supriya Muppiri supriya.muppiri@thoughtworks.com
https://bahmni.atlassian.net/browse/BAH-1132
pr created time in 7 days
PR opened Bahmni/form-controls
-
Supriya, Vinisha | MOBN-1559 | Add step attribute to numeric input field
-
Supriya, Vinisha | MOBN-1559 | Bump up version to 0.93.1
https://bahmni.atlassian.net/browse/BAH-1131
pr created time in 7 days