PICO SulTeng (Pusat Informasi COVID-19 Sulawesi Tengah/COVID-19 Information Center of Central Sulawesi) is an android-based application developed to facilitate the people of Central Sulawesi in obtaining information about the current situation of COVID-19 in Central Sulawesi.
This is the English version of the README.md file, press the badge to read the Bahasa Indonesia version.
-
Landing page PICO
Click the image below to visit the landing page of PICO SulTeng App.
-
Download APK
Here are some links for downloading PICO
-
PICO installation and usage guide
-
Data Source
This application uses data from PICO API. To view the PICO API documentation, please click here.
-
Minimum OS version
- Android Lolipop (5.0)
-
To import into Android Studio :
- Use the latest version of Android Studio - version 3.6.3
- RAM : 4 GB
Some features that have been developed:
-
- Get notifications about COVID-19 situation
-
- The latest update on the COVID-19 situation in Central Sulawesi (Positive, Recovered, Death, Negative).
- Information on the number of ODP and PDP in Central Sulawesi.
- Table of distribution of COVID-19 cases by Regency/City in Central Sulawesi Province.
- Map of the spread of COVID-19 cases per Regency / City in Central Sulawesi Province.
- Important telephone/phone numbers about COVID-19 with tap to call feature.
-
- Tap on the telephone number to call the hospital (Tap to call).
- Tap on an email to send an email to the hospital (Tap to Email).
- Hospital directions button.
-
- Tap on the telephone number to call (Tap to call).
-
- Do a COVID-19 self-examination with a virtual assistant from Detexi App. Detexi is a local startup in Central Sulawesi which is engaged in health and is currently working with the government of Central Sulawesi, IDI of Central Sulawesi, and PDUI of Central Sulawesi.
-
- Statistics of COVID-19 cases in Indonesia
-
- Map of the spread of COVID-19 cases by Province in Indonesia.
-
- PICO supports Indonesian and English.
To-do List :
- Push notification
- Notification of the current situation of COVID-19 in Indonesia
- Notification of the current situation of COVID-19 in Central Sulawesi
- Notify user if he/she is/had been in the red zone
- Notify user he/she has interacted with a COVID-19 patient
- Notify user if there is a case of COVID-19 nearby
- In-App push messaging
- Infographics around COVID-19 (Prevention, treatment, etc.)
- COVID-19 self-examination
- Data on the current situation of COVID-19 in Central Sulawesi
- Regency/City
- ODP cases
- Under Observation cases
- Completed Observation cases
- PDP cases
- Under Supervision cases
- Completed Supervision cases
- Positive cases
- Negative cases
- Death cases
- Recovered cases
- Latest update
- Daily report of COVID-19 cases in Central Sulawesi
- Table of distribution of COVID-19 cases in Central Sulawesi
- Map of the spread of COVID-19 in Central Sulawesi
- Statistical data on the COVID-19 situation in Indonesia
- Province
- Positive cases
- Recovered cases
- Death cases
- Cumulative number of COVID-19 Positive cases
- Cumulative number of Recovered from COVID-19 cases
- Cumulative number of Death caused by COVID-19
- Daily report of COVID-19 cases in Indonesia.
- Map of the spread of COVID-19 in Indonesia
- Data of COVID-19 referral hospital in Central Sulawesi
- Hospital name
- Hospital address
- Hospital phone number
- Hospital email
- COVID-19 Task Force post data
- The location of the post
- The name of the person in charge
- Phone number
- User data
- Registration
- Sign in
- Name
- Age
- Location
- Status COVID-19 (ODP, OTG, PDP, etc.)
- Phone number
This application was built using MVVM design pattern. Some of the libraries needed include:
- Recycler View - version 1.1.0
- Butter Knife - version 10.1.0
- RxJava - version 2.1.1
- Spin Kit - version 1.4.0
- Glide - version 4.11.0
- Google Material - version 1.1.0
- AnyChart - version 1.1.2
- MPAndroidChart - version 3.1.0
- Gravity SnapHelper -version 2.2.0
- Scrolling Pager Indicator - version 1.0.6
- TableView - version 0.8.9
- Retrofit - version 2.7.1
- OneSignal Androdi SDK - version 3.13.1
- Androidx Room - version 2.2.5
- Android Lifecycle - version 1.1.1
- Google Maps - version 17.0.0
-
Clone this repository to your PC/laptop
-
Import it into Android Studio
-
After it was imported into Android Studio, rebuild the project
-
Add Google API Key from the Google Cloud Console to the file main/res/values/strings.xml :
<string name="API_KEY" translatable="false">Put Your Google API Key Here</string>
-
If you want to change the GeoJson layer on the COVID-19 spread map at MainActivity.java, please replace the file map.json with your GeoJson file
-
To change the column labels in the table, you can change the file /res/values/strings.xml for the English version and /res/values-in-rID/strings.xml for the Indonesian version :
-
<string name="district">District/City</string> <string name="odp">ODP</string> <string name="completed_odp">Completed ODP</string> <string name="in_odp">In ODP</string> <string name="pdp">PDP</string> <string name="completed_pdp">Completed PDP</string> <string name="in_pdp">In PDP</string> <string name="positive">Positive</string> <string name="negative">Negative</string> <string name="dead">Death</string> <string name="recovered">Recovered</string>
-
/res/values-in-rID/strings.xml
<string name="district">Kabupaten/Kota</string> <string name="odp">ODP</string> <string name="completed_odp">Selesai ODP</string> <string name="in_odp">Sisa ODP</string> <string name="pdp">PDP</string> <string name="completed_pdp">Selesai PDP</string> <string name="in_pdp">Sisa PDP</string> <string name="positive">Positif</string> <string name="negative">Negatif</string> <string name="dead">Meninggal</string> <string name="recovered">Sembuh</string>
-
-
To change text alignment or table column order, you can do it on MyTableViewModel.java and ColumnHeaderModel.java :
-
public class MyTableViewModel { .... private List<ColumnHeaderModel> createColumnHeaderModelList() { List<ColumnHeaderModel> list = new ArrayList<>(); // Create Column Headers list.add(new ColumnHeaderModel(res.getString(R.string.district))); list.add(new ColumnHeaderModel(res.getString(R.string.odp))); list.add(new ColumnHeaderModel(res.getString(R.string.completed_odp))); list.add(new ColumnHeaderModel(res.getString(R.string.in_odp))); list.add(new ColumnHeaderModel(res.getString(R.string.pdp))); list.add(new ColumnHeaderModel(res.getString(R.string.completed_pdp))); list.add(new ColumnHeaderModel(res.getString(R.string.in_pdp))); list.add(new ColumnHeaderModel(res.getString(R.string.positive))); list.add(new ColumnHeaderModel(res.getString(R.string.negative))); list.add(new ColumnHeaderModel(res.getString(R.string.dead))); list.add(new ColumnHeaderModel(res.getString(R.string.recovered))); return list; } private List<List<CellModel>> createCellModelList(List<District> districtList) { List<List<CellModel>> lists = new ArrayList<>(); for (int i = 0; i < districtList.size(); i++) { District district = districtList.get(i); List<CellModel> list = new ArrayList<>(); list.add(new CellModel("1-" + i, district.getName())); list.add(new CellModel("2-" + i, district.getODP())); list.add(new CellModel("3-" + i, district.getFinishedODP())); list.add(new CellModel("4-" + i, district.getInODP())); list.add(new CellModel("5-" + i, district.getPDP())); list.add(new CellModel("6-" + i, district.getFinishedPDP())); list.add(new CellModel("7-" + i, district.getInPDP())); list.add(new CellModel("8-" + i, district.getPositive())); list.add(new CellModel("9-" + i, district.getNegative())); list.add(new CellModel("10-" + i, district.getDeath())); list.add(new CellModel("11-" + i, district.getRecovered())); lists.add(list); } return lists; } .... }
-
public class ColumnHeaderModel { .... static final int[] COLUMN_TEXT_ALIGNS = { //city name Gravity.START, //Rata Kiri //pdp Gravity.CENTER, //Rata Tengah //Finish PDP Gravity.CENTER, //In PDP Gravity.CENTER, //odp Gravity.CENTER, //Finish ODP Gravity.CENTER, //In ODP Gravity.CENTER, //positive Gravity.CENTER, //negative Gravity.CENTER, //death Gravity.CENTER, //recovered Gravity.CENTER, }; .... }
-
-
Base URL API can be changed in the NetworkClient.java file and endpoint in the Api.java file. PICO uses Retrofit to make HTTP requests :
-
public class NetworkClient { .... private static final String BASE_URL_API = "Put Your API Base Url Here"; .... }
-
public interface Api { @GET("query") Call<ResponseBody> getCovidStats( @QueryMap Map<String, Object> queryMap ); @GET("kabupaten") Call<ResponseBody> getAllCity(); @GET("rumahsakit") Call<ResponseBody> getAllHospital(); @GET("provinsi") Call<ResponseBody> getAllProvince(); @GET("posko") Call<ResponseBody> getAllPosts(); }
-
This project has been released with the latest version 3.0.1 and will continue to be developed.
MIT License.
Copyright (c) 2020 Fajrian Aidil Pratama
Created by @ryanaidilp_ - feel free to contact me!