Master Facility List for DHIS2
Group project in INF5750 - Open Source Development.
The project readme contains information about usage, installation, detailed package/framework/library use etc.
- Tor Jan Derek Berstad
- Odd-Tørres Lunde
- Celina Moldestad
- Åsmund J. Rosendahl
- FU1: When searching the user shall be able to see a list of all the facilities, they can choose one of them or type in the specific facilities. The application have the autocomplete-ability, so it is easy for the user to use the search functionality.
- FU2: When the user finds a specific facility they shall be able to click on that and get more information about that facility, and GIS coordinates on the map, when available.
- FU3: On the map the user can move around and click on groups of facilities, or click on a specific facility and get the information about that facility.
- FU4: The user are able to do advanced search with specific queries (using filtering) to get information about the facilities. Like searching within a chosen country or city. The advanced search functionality enables the user to do searching based on the facilities in one city, or searching/browsing based on organisation unit groups.
- FU5: When the user is on the information page to a specific facility they shall be able to propose changes to the information being displayed. They click on the edit-symbol to go to the edit-view. The changes shall then be approved by an administrator in order to be changed. The changes could, for example, be either improvement or filling in the blanks (patch/put and post requests).
- FA1: Admin is a user with appropriate user authorities, and therefore should be able to perform more operations than a regular user.
- FA2: The admins should therefore be able to approve or ignore the proposed changes request from the users on the configuration-page. On the page the admin sees a list of all the proposed changes (if created/available).
- FA3: The list on the configuration-page should be filtered to show only proposals relevant for the particular administrator (i.e. an administrator for District A should only see proposals for related to organisation units in District A, not those in District B). The admin can approve the changes or just choose to ignore that request.
- FA4: The administrator shall also be able to configure the app to show data element and/or indicator values for the particular organisation unit for the current/last year, such as population estimates, staff count etc. On the "configuration" page the administrator can also configure the app, by select what data to display.
The application are also split into two views, the user-view and the admin-view. (You must have the admin-authorities to use the admin-page.)
The design of the application are split into four window-parts: The search box, the filter box, the information box and the map.
- The search box is where the user can search for different facilities and in combination with the filter box they can specify their search.
- The filter box: The user can choose between different filters, such as country, city and organization unit groups.
- The information box: The information about the facility
- Map: Shows where the particular facility is localized.
After a discussion in the group. We decided to go for React as the framework for this group project. We considered several different architecture/frameworks. Django was considered, but we don't currently require a backend. So Django felt like "overkill" for this assignment.
The application is split into four main parts, and it is a microarchitecture:
- APP.js - The main node
- Search.js - This function calls upon the API-interface which gets the information from the info.js and the map.js components, and render the information on the screen.
- API.js - An interface that gets the search queries and collect the correct information from info.js and map.js.
- Leaf - components: Info.js, map.js and text.js.
This hieratic makes the components somehow independent, which makes the microarchitecture.
When a user searches, by selecting filters and writing queries the Search function gets a get-request like this "https://inf5750.dhis2.org/demo/api/organisationUnits/<id>". The query that the user types in gets converted to its id so that we can get the information. We uses Material UI's autocomplete, so we have all the facilities.
Endpoints from DHIS2 API documentation:
1.7. Metadata object filter
1.8. Metadata field filter
1.56. Data sets - /api/26/dataSets
- react-google-maps - Collaborates with React.
- Material UI - We chose to adopt some of Material UI's components because it is a nice way to design the web page.
Division of labour
We used Github's projects as an collaboration tool for projects. It works like Trello, you can make problems and sub-problems, and label them as ToDo, doing and done.
Tor Jan: Developer - Map, UI, Readme
Odd-Tørres: Developer - All, filter
Celina: Developer - Information page
Åsmund: Developer - All
Week 43 and 44 - The setup-stage
- Project planning (description plan)
- Write wiki-page
- Discussed framework, design and architecture
- Create features
- Get to know react.js
- Get to know DHIS api’s documentation.
- List data (Master Facilities)
- Search-function (Attribute search)
- Simple use of map-structure
- Advanced search-function with filtration
- List specific data
- Show map and use of “advanced” map.
- Bug-fix and handling issues
- Propose changes
- The admin configuration-page
- Combo search-function with different filters.
- The admin configuration-page
- Propose changes
- Show more data