profile
viewpoint

Bahmni/bahmni-core 74

Core OpenMRS modules for Bahmni (including ERP & ELIS Atom Feed Clients)

Bahmni/bahmni-playbooks 10

Ansible playbooks for Bahmni (used for Bahmni deployments and Installer)

Bahmni/bahmni-vagrant 9

Management of Vagrant box using Packer. Out-Of-The-Box bahmni on CentOS 6.7

Bahmni/default-config 8

Default configuration setup for bahmni.

Bahmni/bahmni-offline 5

Repo to hold bahmni offline code. This will support Chromium app and Android app as of now.

Bahmni/emr-functional-tests 4

emr functional tests

Bahmni/bahmni-docker 3

Configuration required to build and run bahmni docker images

Bahmni/bahmni-java-utils 3

This repository has various functional utilities needed by bahmni.

Bahmni/bahmni-package 3

Repository of bahmni deployment and RPMs

Bahmni/bahmni-connect 2

Front end for the Bahmni Connect, written in AngularJS

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.

praveenadayanand

comment created time in 3 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.

buvaneswari-arun

comment created time in 16 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.

buvaneswari-arun

comment created time in 16 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

buvaneswari-arun

comment created time in 16 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

buvaneswari-arun

comment created time in 16 hours

delete branch ProjectEKA/hip-service

delete branch : add-immunization

delete time in 20 hours

push eventProjectEKA/hip-service

Mritunjay Dubey

commit sha c44aeb9c917f1c8d0c45069221ccb4085b4991a8

Immunization records for kabir, sadio and Mritunhjay (#437)

view details

push time in 20 hours

create barnchProjectEKA/hip-service

branch : add-immunization

created branch time in 20 hours

push eventProjectEKA/hiu-ui

MD Dubey

commit sha c727dc3963f9e4e29cab21fb4240d159b26aa7fd

Dubey | 000 | Change valeuset URL to be the controller url

view details

Mritunjay Dubey

commit sha b2233e8d6c74533adaa6074d550b95aa393dd1da

Merge pull request #238 from ProjectEKA/change-valueset-url Dubey | 000 | Change valeuset URL to be the controller url

view details

Dheeraj Pundir

commit sha 26f7e3abbfbfc4979c2fc7838f2f980b82707c7d

Dheeraj | Replace set-env with EnvFiles in github actions

view details

Dheeraj Pundir

commit sha e3ee4d91a3ccc455045134169c11797bf34ef960

Merge pull request #239 from ProjectEKA/update-github-action Dheeraj | Replace set-env with EnvFiles in github actions

view details

Dheeraj Pundir

commit sha d37b7039cebd15435cb57772c3181e331a02dcd6

Dheeraj | Add Immunizations Record

view details

Dheeraj Pundir

commit sha 63e63be2bcb10b93b2f9e0880f7c7d72af6856c5

Dheeraj | Add Lot Number, Route, Manufacturer, Dose Number and Reason

view details

Dheeraj Pundir

commit sha c6a758fd275b8d657a171e95394769b868a8db16

Merge pull request #247 from ProjectEKA/immunizations Dheeraj | Add Immunizations Record

view details

Dheeraj Pundir

commit sha 19145a687dbc25257400678b7f5213f4b348acfb

Merge branch 'master' into nha

view details

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 eventProjectEKA/hiu-ui

Dheeraj Pundir

commit sha d37b7039cebd15435cb57772c3181e331a02dcd6

Dheeraj | Add Immunizations Record

view details

Dheeraj Pundir

commit sha 63e63be2bcb10b93b2f9e0880f7c7d72af6856c5

Dheeraj | Add Lot Number, Route, Manufacturer, Dose Number and Reason

view details

Dheeraj Pundir

commit sha c6a758fd275b8d657a171e95394769b868a8db16

Merge pull request #247 from ProjectEKA/immunizations Dheeraj | Add Immunizations Record

view details

push time in 3 days

delete branch ProjectEKA/hiu-ui

delete branch : immunizations

delete time in 3 days

PR merged ProjectEKA/hiu-ui

Dheeraj | Add Immunizations Record
+165 -2

0 comment

5 changed files

dheeraj-p

pr closed 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

praveenadayanand

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);

Removed comments @binduak

gopikrishna-yaramothu

comment created time in 3 days

Pull request review commentBahmni/bahmni-connect

BAH 1109, BAH 1106 | Shriram , Gopi , Rakesh , Aakash , Som | Zipping and importing AddressHierarchy & OfflineConcepts Data in BahmniConnect & Selective Sync Strategy

 '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 .

gopikrishna-yaramothu

comment created time in 3 days

delete branch ProjectEKA/hip-service

delete branch : fix-data

delete time in 3 days

push eventProjectEKA/hip-service

Dheeraj Pundir

commit sha 99d92a353f560cde10581a05d8d55595a3d592ed

Dheeraj | Fix PDF document reference for immunization (#436)

view details

push time in 3 days

push eventProjectEKA/hiu-ui

Dheeraj Pundir

commit sha 63e63be2bcb10b93b2f9e0880f7c7d72af6856c5

Dheeraj | Add Lot Number, Route, Manufacturer, Dose Number and Reason

view details

push time in 3 days

create barnchProjectEKA/hip-service

branch : fix-data

created branch time in 3 days

PR opened ProjectEKA/hiu-ui

Dheeraj | Add Immunizations Record
+108 -2

0 comment

5 changed files

pr created time in 3 days

create barnchProjectEKA/hiu-ui

branch : immunizations

created branch time in 3 days

delete branch ProjectEKA/otp_service

delete branch : update-template-id

delete time in 3 days

push eventProjectEKA/otp_service

MD Dubey

commit sha 31172a0567ed021b9b74da2a7ea1bd59311e34b4

Dubey | 000 | Change placeholder template ID

view details

Mritunjay Dubey

commit sha 21f54d4da5b059b8b587422806ea1b3f91dc0b36

Merge pull request #25 from ProjectEKA/update-template-id Dubey | 000 | Change placeholder template ID

view details

push time in 3 days

more