diff --git a/opensrp-brac-hnpp/build.gradle b/opensrp-brac-hnpp/build.gradle
index 0238803d6..dfae4a5b4 100644
--- a/opensrp-brac-hnpp/build.gradle
+++ b/opensrp-brac-hnpp/build.gradle
@@ -45,7 +45,7 @@ android {
buildConfigField "String[]", "ALLOWED_LOCATION_LEVELS", '{"MOH Jhpiego Facility Name" , "Village"}'
buildConfigField "String", 'DEFAULT_LOCATION', '"Village"'
buildConfigField "boolean", 'SUPPORT_QR', 'false'
- buildConfigField "int", "DATABASE_VERSION", '23'
+ buildConfigField "int", "DATABASE_VERSION", '25'
buildConfigField "int", "DATA_SYNC_DURATION_MINUTES", '10'
buildConfigField "long", "MAX_SERVER_TIME_DIFFERENCE", "1800000l"
buildConfigField "boolean", "TIME_CHECK", "false"
diff --git a/opensrp-brac-hnpp/src/main/AndroidManifest.xml b/opensrp-brac-hnpp/src/main/AndroidManifest.xml
index 2de6029cf..1cda19a65 100644
--- a/opensrp-brac-hnpp/src/main/AndroidManifest.xml
+++ b/opensrp-brac-hnpp/src/main/AndroidManifest.xml
@@ -118,6 +118,22 @@
android:name="org.smartregister.brac.hnpp.activity.HnppAncRegisterActivity"
android:screenOrientation="portrait"
android:theme="@style/HNPPTheme.NoActionBar" />
+
+
+
+
getNavigationItems() {
if (navigationOptions.size() == 0) {
navigationOptions.add(new NavigationOption(R.mipmap.sidemenu_families, R.mipmap.sidemenu_families_active, R.string.menu_all_families, CoreConstants.DrawerMenu.ALL_FAMILIES, 0));
navigationOptions.add(new NavigationOption(R.mipmap.sidemenu_families, R.mipmap.sidemenu_families_active, R.string.menu_all_member, CoreConstants.DrawerMenu.ALL_MEMBER, 0));
- navigationOptions.add(new NavigationOption(R.mipmap.sidemenu_families, R.mipmap.sidemenu_families_active, R.string.menu_elco_clients, CoreConstants.DrawerMenu.ELCO_CLIENT, 0));
- navigationOptions.add(new NavigationOption(R.mipmap.sidemenu_anc, R.mipmap.sidemenu_anc_active, R.string.menu_anc_clients, CoreConstants.DrawerMenu.ANC, 0));
- navigationOptions.add(new NavigationOption(R.mipmap.sidemenu_pnc, R.mipmap.sidemenu_pnc_active, R.string.menu_pnc_clients, CoreConstants.DrawerMenu.PNC, 0));
- navigationOptions.add(new NavigationOption(R.mipmap.sidemenu_children, R.mipmap.sidemenu_children_active, R.string.menu_child_clients, CoreConstants.DrawerMenu.CHILD_CLIENTS, 0));
+
+ NavigationOption optionElco = new NavigationOption(R.mipmap.sidemenu_families, R.mipmap.sidemenu_families_active, R.string.menu_elco_clients, CoreConstants.DrawerMenu.ELCO_CLIENT, 0);
+ optionElco.setNeedToExpand(true);
+ optionElco.setNavigationSubModel(new NavigationSubModel(R.string.menu_anc_risk_clients,0,CoreConstants.DrawerMenu.ELCO_RISK));
+ navigationOptions.add(optionElco);
+
+ NavigationOption option = new NavigationOption(R.mipmap.sidemenu_anc, R.mipmap.sidemenu_anc_active, R.string.menu_anc_clients, CoreConstants.DrawerMenu.ANC, 0);
+ option.setNeedToExpand(true);
+ option.setNavigationSubModel(new NavigationSubModel(R.string.menu_anc_risk_clients,0,CoreConstants.DrawerMenu.ANC_RISK));
+ navigationOptions.add(option);
+
+ NavigationOption optionPnc = new NavigationOption(R.mipmap.sidemenu_pnc, R.mipmap.sidemenu_pnc_active, R.string.menu_pnc_clients, CoreConstants.DrawerMenu.PNC, 0);
+ optionPnc.setNeedToExpand(true);
+ optionPnc.setNavigationSubModel(new NavigationSubModel(R.string.menu_anc_risk_clients,0,CoreConstants.DrawerMenu.PNC_RISK));
+ navigationOptions.add(optionPnc);
+
+
+ NavigationOption optionChild = new NavigationOption(R.mipmap.sidemenu_children, R.mipmap.sidemenu_children_active, R.string.menu_child_clients, CoreConstants.DrawerMenu.CHILD_CLIENTS, 0);
+ optionChild.setNeedToExpand(true);
+ optionChild.setNavigationSubModel(new NavigationSubModel(R.string.menu_anc_risk_clients,0,CoreConstants.DrawerMenu.CHILD_RISK));
+ navigationOptions.add(optionChild);
+
navigationOptions.add(new NavigationOption(R.drawable.ic_forum_un, R.drawable.ic_forum, R.string.menu_forum, CoreConstants.DrawerMenu.FORUM, -1));
navigationOptions.add(new NavigationOption(R.drawable.ic_ss_icon_un, R.drawable.ic_ss_icon, R.string.menu_ss_info, CoreConstants.DrawerMenu.SS_INFO, -1));
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppBaseAncRegisterPresenter.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppBaseAncRegisterPresenter.java
deleted file mode 100644
index eb9014a91..000000000
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppBaseAncRegisterPresenter.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.smartregister.brac.hnpp.presenter;
-
-import org.smartregister.chw.anc.contract.BaseAncRegisterContract;
-import org.smartregister.chw.anc.presenter.BaseAncRegisterPresenter;
-
-import timber.log.Timber;
-
-
-public class HnppBaseAncRegisterPresenter extends BaseAncRegisterPresenter {
- public HnppBaseAncRegisterPresenter(BaseAncRegisterContract.View view, BaseAncRegisterContract.Model model, BaseAncRegisterContract.Interactor interactor) {
- super(view, model, interactor);
- }
- @Override
- public void saveForm(String jsonString, boolean isEditMode, String table) {
- try {
- interactor.saveRegistration(jsonString, isEditMode, this, table);
- } catch (Exception e) {
- Timber.e(e);
- }
- }
-}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskAncRegisterFragmentPresenter.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskAncRegisterFragmentPresenter.java
new file mode 100644
index 000000000..66df64e54
--- /dev/null
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskAncRegisterFragmentPresenter.java
@@ -0,0 +1,18 @@
+package org.smartregister.brac.hnpp.presenter;
+
+import org.smartregister.brac.hnpp.utils.HnppDBConstants;
+import org.smartregister.chw.anc.contract.BaseAncRegisterFragmentContract;
+import org.smartregister.chw.anc.util.DBConstants;
+import org.smartregister.chw.core.presenter.AncRegisterFragmentPresenter;
+import org.smartregister.chw.core.utils.CoreConstants;
+
+public class HnppRiskAncRegisterFragmentPresenter extends AncRegisterFragmentPresenter {
+ public HnppRiskAncRegisterFragmentPresenter(BaseAncRegisterFragmentContract.View view, BaseAncRegisterFragmentContract.Model model, String viewConfigurationIdentifier) {
+ super(view, model, viewConfigurationIdentifier);
+ }
+
+ @Override
+ public String getMainCondition() {
+ return super.getMainCondition()+" AND "+ CoreConstants.TABLE_NAME.FAMILY_MEMBER + ".is_risk = 'true'";
+ }
+}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskChildRegisterFragmentPresenter.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskChildRegisterFragmentPresenter.java
new file mode 100644
index 000000000..261403a7a
--- /dev/null
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskChildRegisterFragmentPresenter.java
@@ -0,0 +1,28 @@
+package org.smartregister.brac.hnpp.presenter;
+
+import org.smartregister.brac.hnpp.utils.ChildDBConstants;
+import org.smartregister.chw.core.contract.CoreChildRegisterFragmentContract;
+import org.smartregister.chw.core.presenter.CoreChildRegisterFragmentPresenter;
+import org.smartregister.chw.core.utils.CoreConstants;
+import org.smartregister.family.util.DBConstants;
+
+public class HnppRiskChildRegisterFragmentPresenter extends CoreChildRegisterFragmentPresenter {
+
+ public HnppRiskChildRegisterFragmentPresenter(CoreChildRegisterFragmentContract.View view, CoreChildRegisterFragmentContract.Model model, String viewConfigurationIdentifier) {
+ super(view, model, viewConfigurationIdentifier);
+ }
+
+ @Override
+ public String getMainCondition() {
+ return String.format(" %s is null AND %s %s", CoreConstants.TABLE_NAME.CHILD+ "." + DBConstants.KEY.DATE_REMOVED,ChildDBConstants.childAgeLimitFilter(CoreConstants.TABLE_NAME.CHILD),ChildDBConstants.riskChildPatient());
+ }
+
+ @Override
+ public String getMainCondition(String tableName) {
+ return String.format(" %s is null AND %s %s", tableName + "." + DBConstants.KEY.DATE_REMOVED, ChildDBConstants.childAgeLimitFilter(tableName),ChildDBConstants.riskChildPatient());
+ }
+ @Override
+ public String getDefaultSortQuery() {
+ return CoreConstants.TABLE_NAME.CHILD+ "." +DBConstants.KEY.LAST_INTERACTED_WITH + " DESC" ;
+ }
+}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskElcoMemberRegisterFragmentPresenter.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskElcoMemberRegisterFragmentPresenter.java
new file mode 100644
index 000000000..eea8eea9c
--- /dev/null
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskElcoMemberRegisterFragmentPresenter.java
@@ -0,0 +1,59 @@
+package org.smartregister.brac.hnpp.presenter;
+
+import org.smartregister.brac.hnpp.model.HnppElcoMemberRegisterFragmentModel;
+import org.smartregister.chw.core.contract.CoreChildRegisterFragmentContract;
+import org.smartregister.chw.core.presenter.CoreChildRegisterFragmentPresenter;
+import org.smartregister.chw.core.utils.ChildDBConstants;
+import org.smartregister.chw.core.utils.CoreConstants;
+import org.smartregister.configurableviews.model.Field;
+import org.smartregister.family.util.DBConstants;
+
+import java.util.List;
+
+public class HnppRiskElcoMemberRegisterFragmentPresenter extends CoreChildRegisterFragmentPresenter {
+
+ private HnppElcoMemberRegisterFragmentModel model;
+
+ public HnppRiskElcoMemberRegisterFragmentPresenter(CoreChildRegisterFragmentContract.View view, CoreChildRegisterFragmentContract.Model model, String viewConfigurationIdentifier) {
+ super(view, model, viewConfigurationIdentifier);
+ this.model = (HnppElcoMemberRegisterFragmentModel)model;
+ }
+ @Override
+ public void processViewConfigurations() {
+ super.processViewConfigurations();
+
+ }
+
+ @Override
+ public void initializeQueries(String mainCondition) {
+ String countSelect = model.countSelect(CoreConstants.TABLE_NAME.FAMILY_MEMBER, mainCondition);
+ String mainSelect = model.mainSelect(null,CoreConstants.TABLE_NAME.FAMILY, CoreConstants.TABLE_NAME.FAMILY_MEMBER, mainCondition);
+ getView().initializeQueryParams(CoreConstants.TABLE_NAME.FAMILY_MEMBER, countSelect, mainSelect);
+ getView().initializeAdapter(visibleColumns);
+
+ getView().countExecute();
+
+ getView().filterandSortInInitializeQueries();
+ }
+ @Override
+ public void updateSortAndFilter(List filterList, Field sortField) {
+ String filterText = model.getFilterText(filterList, getView().getString(org.smartregister.R.string.filter));
+ String sortText = model.getSortText(sortField);
+
+ getView().updateFilterAndFilterStatus(filterText, sortText);
+ }
+
+ @Override
+ public String getMainCondition() {
+ return String.format(" %s is null AND %s", CoreConstants.TABLE_NAME.FAMILY_MEMBER+"."+DBConstants.KEY.DATE_REMOVED, ChildDBConstants.riskElcoFilterWithTableName());
+ }
+
+ @Override
+ public String getMainCondition(String tableName) {
+ return String.format(" %s is null AND %s", tableName + "." + DBConstants.KEY.DATE_REMOVED, ChildDBConstants.riskElcoFilter());
+ }
+ @Override
+ public String getDefaultSortQuery() {
+ return CoreConstants.TABLE_NAME.FAMILY_MEMBER+"."+DBConstants.KEY.LAST_INTERACTED_WITH + " DESC ";// AND "+ChildDBConstants.childAgeLimitFilter();
+ }
+}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskPncRegisterFragmentPresenter.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskPncRegisterFragmentPresenter.java
new file mode 100644
index 000000000..a5109d492
--- /dev/null
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/presenter/HnppRiskPncRegisterFragmentPresenter.java
@@ -0,0 +1,16 @@
+package org.smartregister.brac.hnpp.presenter;
+
+import org.smartregister.chw.anc.contract.BaseAncRegisterFragmentContract;
+import org.smartregister.chw.core.presenter.AncRegisterFragmentPresenter;
+import org.smartregister.chw.core.utils.CoreConstants;
+
+public class HnppRiskPncRegisterFragmentPresenter extends AncRegisterFragmentPresenter {
+ public HnppRiskPncRegisterFragmentPresenter(BaseAncRegisterFragmentContract.View view, BaseAncRegisterFragmentContract.Model model, String viewConfigurationIdentifier) {
+ super(view, model, viewConfigurationIdentifier);
+ }
+
+ @Override
+ public String getMainCondition() {
+ return super.getMainCondition()+" AND "+ CoreConstants.TABLE_NAME.FAMILY_MEMBER + ".is_risk = 'true'";
+ }
+}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAllMemberRegisterProvider.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAllMemberRegisterProvider.java
index edc001099..978796af1 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAllMemberRegisterProvider.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAllMemberRegisterProvider.java
@@ -9,6 +9,7 @@
import org.apache.commons.lang3.text.WordUtils;
import org.smartregister.brac.hnpp.R;
import org.smartregister.brac.hnpp.utils.HnppConstants;
+import org.smartregister.brac.hnpp.utils.HnppDBUtils;
import org.smartregister.chw.core.holders.RegisterViewHolder;
import org.smartregister.chw.core.provider.CoreChildRegisterProvider;
import org.smartregister.chw.core.task.UpdateLastAsyncTask;
@@ -89,6 +90,12 @@ public void populatePatientColumn(CommonPersonObjectClient pc, SmartRegisterClie
viewHolder.profileImage.setImageResource(org.smartregister.family.util.Utils.getMemberProfileImageResourceIDentifier(entityType));
viewHolder.textViewAddressGender.setTextColor(ContextCompat.getColor(context, android.R.color.black));
addButtonClickListeners(client, viewHolder);
+ String baseEntityId = Utils.getValue(pc.getColumnmaps(), DBConstants.KEY.BASE_ENTITY_ID, false);
+ if(HnppDBUtils.isRiskAll(baseEntityId)){
+ viewHolder.riskView.setVisibility(View.VISIBLE);
+ }else{
+ viewHolder.riskView.setVisibility(View.GONE);
+ }
}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAncRegisterProvider.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAncRegisterProvider.java
index 85ab3c5c8..b4dc5cd15 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAncRegisterProvider.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppAncRegisterProvider.java
@@ -5,6 +5,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.TextView;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
@@ -12,6 +13,7 @@
import org.joda.time.DateTime;
import org.joda.time.Years;
import org.smartregister.brac.hnpp.utils.HnppConstants;
+import org.smartregister.brac.hnpp.utils.HnppDBUtils;
import org.smartregister.chw.anc.fragment.BaseAncRegisterFragment;
import org.smartregister.chw.anc.provider.AncRegisterProvider;
import org.smartregister.chw.anc.util.DBConstants;
@@ -39,7 +41,8 @@ public HnppAncRegisterProvider(Context context, CommonRepository commonRepositor
}
@Override
- protected void populatePatientColumn(@NotNull CommonPersonObjectClient pc, SmartRegisterClient client, @NotNull final AncRegisterProvider.RegisterViewHolder viewHolder) {
+ protected void populatePatientColumn(@NotNull CommonPersonObjectClient pc, SmartRegisterClient client, @NotNull final AncRegisterProvider.RegisterViewHolder viewHolder1) {
+ HnppAncRegisterViewHolder viewHolder = (HnppAncRegisterViewHolder)viewHolder1;
String fname = Utils.getName(
Utils.getValue(pc.getColumnmaps(), DBConstants.KEY.FIRST_NAME, true),
Utils.getValue(pc.getColumnmaps(), DBConstants.KEY.MIDDLE_NAME, true)
@@ -89,11 +92,30 @@ protected void populatePatientColumn(@NotNull CommonPersonObjectClient pc, Smart
viewHolder.registerColumns.setOnClickListener(v -> viewHolder.patientColumn.performClick());
viewHolder.dueWrapper.setOnClickListener(v -> viewHolder.dueButton.performClick());
+ String baseEntityId = Utils.getValue(pc.getColumnmaps(), DBConstants.KEY.BASE_ENTITY_ID, false);
+ if(HnppDBUtils.isAncRisk(baseEntityId)){
+ viewHolder.riskView.setVisibility(View.VISIBLE);
+ }else{
+ viewHolder.riskView.setVisibility(View.GONE);
+ }
+ if(HnppConstants.isEddImportant(lmpString)){
+ viewHolder.eddView.setVisibility(View.VISIBLE);
+ }else{
+ viewHolder.eddView.setVisibility(View.GONE);
+ }
}
@Override
public AncRegisterProvider.RegisterViewHolder createViewHolder(ViewGroup parent) {
View view = inflater.inflate(R.layout.anc_register_list_row, parent, false);
- return new AncRegisterProvider.RegisterViewHolder(view);
+ return new HnppAncRegisterViewHolder(view);
+ }
+ public class HnppAncRegisterViewHolder extends AncRegisterProvider.RegisterViewHolder{
+ public TextView riskView,eddView;
+ public HnppAncRegisterViewHolder(View itemView) {
+ super(itemView);
+ riskView = itemView.findViewById(R.id.risk_view);
+ eddView = itemView.findViewById(R.id.edd_view);
+ }
}
}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppChildRegisterProvider.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppChildRegisterProvider.java
index 10b8efca8..7d309c619 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppChildRegisterProvider.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppChildRegisterProvider.java
@@ -8,6 +8,7 @@
import org.apache.commons.lang3.text.WordUtils;
import org.smartregister.brac.hnpp.R;
+import org.smartregister.brac.hnpp.utils.HnppDBConstants;
import org.smartregister.brac.hnpp.utils.HnppDBUtils;
import org.smartregister.brac.hnpp.utils.HnppConstants;
import org.smartregister.chw.core.holders.RegisterViewHolder;
@@ -98,6 +99,13 @@ public void populatePatientColumn(CommonPersonObjectClient pc, SmartRegisterClie
setAddressAndGender(pc, viewHolder);
addButtonClickListeners(client, viewHolder);
+ String baseEntityId = Utils.getValue(pc.getColumnmaps(), DBConstants.KEY.BASE_ENTITY_ID, false);
+
+ if(HnppDBUtils.childRisk(baseEntityId)){
+ viewHolder.riskView.setVisibility(View.VISIBLE);
+ }else{
+ viewHolder.riskView.setVisibility(View.GONE);
+ }
}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppPncRegisterProvider.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppPncRegisterProvider.java
index bf33fcb17..858c56bc5 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppPncRegisterProvider.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/provider/HnppPncRegisterProvider.java
@@ -4,14 +4,19 @@
import android.database.Cursor;
import android.os.AsyncTask;
import android.text.TextUtils;
+import android.view.LayoutInflater;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.TextView;
+
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
import org.jeasy.rules.api.Rules;
import org.smartregister.brac.hnpp.HnppApplication;
import org.smartregister.brac.hnpp.R;
import org.smartregister.brac.hnpp.utils.HnppConstants;
+import org.smartregister.brac.hnpp.utils.HnppDBUtils;
import org.smartregister.chw.anc.AncLibrary;
import org.smartregister.chw.anc.domain.Visit;
import org.smartregister.chw.anc.util.DBConstants;
@@ -45,11 +50,19 @@ public HnppPncRegisterProvider(Context context, CommonRepository commonRepositor
}
@Override
- public void getView(Cursor cursor, SmartRegisterClient client, RegisterViewHolder viewHolder) {
- super.getView(cursor, client, viewHolder);
+ public RegisterViewHolder createViewHolder(ViewGroup parent) {
+ View view = LayoutInflater.from(context).inflate(R.layout.pnc_register_list_row, parent, false);
+ return new HnppPncRegisterViewHolder(view);
+ }
+
+ @Override
+ public void getView(Cursor cursor, SmartRegisterClient client, RegisterViewHolder viewHolder1) {
+ super.getView(cursor, client, new HnppPncRegisterViewHolder(viewHolder1.itemView));
+ HnppPncRegisterViewHolder viewHolder = (HnppPncRegisterViewHolder) viewHolder1;
CommonPersonObjectClient pc = (CommonPersonObjectClient) client;
- String patientName = Utils.getValue(pc.getColumnmaps(), "first_name", true);
+ String baseEntityId = Utils.getValue(pc.getColumnmaps(), DBConstants.KEY.BASE_ENTITY_ID, false);
+
String serialNo = org.smartregister.family.util.Utils.getValue(pc.getColumnmaps(), HnppConstants.KEY.SERIAL_NO, true);
@@ -65,6 +78,19 @@ public void getView(Cursor cursor, SmartRegisterClient client, RegisterViewHolde
viewHolder.dueButton.setVisibility(View.GONE);
viewHolder.dueButton.setOnClickListener(null);
Utils.startAsyncTask(new UpdateAsyncTask(context, viewHolder, pc), null);
+ if(HnppDBUtils.isRisk(baseEntityId, HnppConstants.EVENT_TYPE.PNC_REGISTRATION)){
+ viewHolder.riskView.setVisibility(View.VISIBLE);
+ }else{
+ viewHolder.riskView.setVisibility(View.GONE);
+ }
+ }
+ public class HnppPncRegisterViewHolder extends PncRegisterProvider.RegisterViewHolder{
+ public TextView riskView,eddView;
+ public HnppPncRegisterViewHolder(View itemView) {
+ super(itemView);
+ riskView = itemView.findViewById(R.id.risk_view);
+ eddView = itemView.findViewById(R.id.edd_view);
+ }
}
private void updateDueColumn(Context context, RegisterViewHolder viewHolder, PncVisitAlertRule pncVisitAlertRule) {
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/HnppChwRepository.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/HnppChwRepository.java
index a705903a5..2a368a5b3 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/HnppChwRepository.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/HnppChwRepository.java
@@ -64,6 +64,7 @@ protected void onCreation(SQLiteDatabase database) {
upgradeToVersion20(context,database);
upgradeToVersion21(context,database);
upgradeToVersion22(context,database);
+ upgradeToVersion25(context,database);
}
@@ -116,6 +117,9 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
case 23:
upgradeToVersion23(context,db);
break;
+ case 25:
+ upgradeToVersion25(context,db);
+ break;
default:
break;
}
@@ -160,7 +164,12 @@ private void upgradeToVersion19(Context context, SQLiteDatabase db) {
DistrictListRepository.createTable(db);
}
+ private void upgradeToVersion25(Context context, SQLiteDatabase db) {
+ db.execSQL("ALTER TABLE ec_family_member ADD COLUMN risk_event_type VARCHAR;");
+ db.execSQL("ALTER TABLE ec_child ADD COLUMN is_risk VARCHAR;");
+ RiskDetailsRepository.createTable(db);
+ }
private void upgradeToVersion18(Context context, SQLiteDatabase db) {
db.execSQL(VaccineRepository.UPDATE_TABLE_ADD_EVENT_ID_COL);
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/RiskDetailsRepository.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/RiskDetailsRepository.java
new file mode 100644
index 000000000..64cd3ed52
--- /dev/null
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/repository/RiskDetailsRepository.java
@@ -0,0 +1,111 @@
+package org.smartregister.brac.hnpp.repository;
+
+import android.content.ContentValues;
+import android.util.Log;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import net.sqlcipher.Cursor;
+import net.sqlcipher.database.SQLiteDatabase;
+
+import org.joda.time.DateTime;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.smartregister.brac.hnpp.location.SSLocations;
+import org.smartregister.brac.hnpp.location.SSModel;
+import org.smartregister.brac.hnpp.utils.RiskyModel;
+import org.smartregister.repository.BaseRepository;
+import org.smartregister.repository.LocationRepository;
+import org.smartregister.repository.Repository;
+import org.smartregister.util.DateTimeTypeConverter;
+
+import java.util.ArrayList;
+
+/**
+ * Created by mahmud on 11/23/18.
+ */
+public class RiskDetailsRepository extends BaseRepository {
+
+ protected static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
+ .registerTypeAdapter(DateTime.class, new DateTimeTypeConverter()).create();
+
+ protected static final String ID = "_id";
+
+ protected static final String RISKY_TABLE = "risky_details";
+ protected static final String BASE_ENTITY_ID = "base_entity_id";
+ protected static final String EVENT_TYPE = "event_type";
+ protected static final String RISKY_KEY = "risky_key";
+ protected static final String RISKY_VALUE = "risky_value";
+
+
+ protected static final String[] COLUMNS = new String[]{ID, BASE_ENTITY_ID, EVENT_TYPE,RISKY_KEY};
+
+ private static final String CREATE_LOCATION_TABLE =
+ "CREATE TABLE " + RISKY_TABLE + " (" +
+ ID + " INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
+ BASE_ENTITY_ID + " VARCHAR , " +EVENT_TYPE + " VARCHAR , " + RISKY_VALUE+ " VARCHAR NOT NULL,"+
+ RISKY_KEY + " VARCHAR NOT NULL ) ";
+
+ private static final String CREATE_LOCATION_NAME_INDEX = "CREATE INDEX "
+ + RISKY_TABLE + "_" + BASE_ENTITY_ID + "_ind ON " + RISKY_TABLE + "(" + BASE_ENTITY_ID + ")";
+
+
+ public RiskDetailsRepository(Repository repository) {
+ super(repository);
+ }
+
+ protected String getLocationTableName() {
+ return RISKY_TABLE;
+ }
+
+ public static void createTable(SQLiteDatabase database) {
+ database.execSQL(CREATE_LOCATION_TABLE);
+ database.execSQL(CREATE_LOCATION_NAME_INDEX);
+ }
+ public void dropTable(){
+ getWritableDatabase().execSQL("delete from "+getLocationTableName());
+ }
+
+ public void addOrUpdate(RiskyModel riskyModel) {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(BASE_ENTITY_ID, riskyModel.baseEntityId);
+ contentValues.put(RISKY_KEY, riskyModel.riskyKey);
+ contentValues.put(EVENT_TYPE, riskyModel.eventType);
+ contentValues.put(RISKY_VALUE, riskyModel.riskyValue);
+ long inserted = getWritableDatabase().replace(getLocationTableName(), null, contentValues);
+
+
+ }
+
+ public ArrayList getRiskyKeyByEntityId(String baseEntityId) {
+ Cursor cursor = null;
+ ArrayList locations = new ArrayList<>();
+ try {
+ cursor = getReadableDatabase().rawQuery("SELECT * FROM " + getLocationTableName()+" where base_entity_id = '"+baseEntityId+"", null);
+ while (cursor.moveToNext()) {
+ locations.add(readCursor(cursor));
+ }
+ cursor.close();
+ } catch (Exception e) {
+ Log.e(LocationRepository.class.getCanonicalName(), e.getMessage(), e);
+ } finally {
+ if (cursor != null)
+ cursor.close();
+ }
+ return locations;
+ }
+
+ protected RiskyModel readCursor(Cursor cursor) {
+ String riskyKey = cursor.getString(cursor.getColumnIndex(RISKY_KEY));
+ String eventType = cursor.getString(cursor.getColumnIndex(EVENT_TYPE));
+ String baseEntityId = cursor.getString(cursor.getColumnIndex(BASE_ENTITY_ID));
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.baseEntityId = baseEntityId;
+ riskyModel.eventType = eventType;
+ riskyModel.riskyKey = riskyKey;
+ return riskyModel;
+ }
+
+}
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/service/VisitLogIntentService.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/service/VisitLogIntentService.java
index 690edb069..ab2f7ef2e 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/service/VisitLogIntentService.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/service/VisitLogIntentService.java
@@ -21,6 +21,7 @@
import org.smartregister.brac.hnpp.utils.HnppConstants;
import org.smartregister.brac.hnpp.utils.HnppDBUtils;
import org.smartregister.brac.hnpp.utils.HnppJsonFormUtils;
+import org.smartregister.brac.hnpp.utils.RiskyModel;
import org.smartregister.brac.hnpp.utils.VisitLog;
import org.smartregister.chw.anc.AncLibrary;
import org.smartregister.chw.anc.domain.Visit;
@@ -182,6 +183,7 @@ else if( HnppConstants.EVENT_TYPE.MEMBER_REFERRAL.equalsIgnoreCase(encounter_typ
if(details.containsKey("pregnancy_test_result")&&!StringUtils.isEmpty(details.get("pregnancy_test_result"))){
log.setPregnantStatus(details.get("pregnancy_test_result"));
}
+ updateElcoRisk(base_entity_id,details);
}
if(ANC1_REGISTRATION.equalsIgnoreCase(encounter_type) || ANC2_REGISTRATION.equalsIgnoreCase(encounter_type)
|| ANC3_REGISTRATION.equalsIgnoreCase(encounter_type)){
@@ -199,6 +201,7 @@ else if( HnppConstants.EVENT_TYPE.MEMBER_REFERRAL.equalsIgnoreCase(encounter_typ
FamilyLibrary.getInstance().context().allSharedPreferences().savePreference(base_entity_id+"_BRAC_ANC",1+"");
}
}
+ updateAncHomeVisitRisk(encounter_type,base_entity_id,details);
}
if(PNC_REGISTRATION.equalsIgnoreCase(encounter_type)|| encounter_type.equalsIgnoreCase(CoreConstants.EventType.PNC_HOME_VISIT)){
@@ -235,11 +238,15 @@ else if( HnppConstants.EVENT_TYPE.MEMBER_REFERRAL.equalsIgnoreCase(encounter_typ
}
}
+ updatePncRisk(base_entity_id,details);
}
if(ANC_REGISTRATION.equalsIgnoreCase(encounter_type)){
FamilyLibrary.getInstance().context().allSharedPreferences().savePreference(base_entity_id+"_BRAC_ANC",0+"");
FamilyLibrary.getInstance().context().allSharedPreferences().savePreference(base_entity_id+"_BRAC_PNC",0+"");
-
+ updateAncRegistrationRisk(base_entity_id,details);
+ }
+ if(IYCF_PACKAGE.equalsIgnoreCase(encounter_type)){
+ updateIYCFRisk(base_entity_id,details);
}
if(HOME_VISIT_FAMILY.equalsIgnoreCase(encounter_type)){
log.setFamilyId(base_entity_id);
@@ -269,6 +276,315 @@ else if( HnppConstants.EVENT_TYPE.MEMBER_REFERRAL.equalsIgnoreCase(encounter_typ
}
processAncregistration();
}
+ private void updateAncRegistrationRisk(String baseEntityId,HashMapdetails){
+ if(details.containsKey("no_prev_preg") && !StringUtils.isEmpty(details.get("no_prev_preg"))){
+ String ancValue = details.get("no_prev_preg");
+ if(!TextUtils.isEmpty(ancValue)){
+ int nP = Integer.parseInt(ancValue);
+ if (nP>4){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = ancValue;
+ riskyModel.riskyKey = "no_prev_preg";
+ riskyModel.eventType = ANC_REGISTRATION;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskFamilyMember(baseEntityId,"true",ANC_REGISTRATION);
+ return;
+ }
+
+ }
+ }
+ if(details.containsKey("height") && !StringUtils.isEmpty(details.get("height"))){
+ String hight = details.get("height");
+ if(!TextUtils.isEmpty(hight)){
+ int h = Integer.parseInt(hight);
+ if (h<145){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = hight;
+ riskyModel.riskyKey = "height";
+ riskyModel.eventType = ANC_REGISTRATION;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskFamilyMember(baseEntityId,"true",ANC_REGISTRATION);
+ return;
+ }
+
+ }
+ }
+
+ }
+ private void updateAncHomeVisitRisk(String eventType , String baseEntityId,HashMapdetails){
+ if(details.containsKey("blood_pressure_systolic") && !StringUtils.isEmpty(details.get("blood_pressure_systolic"))){
+ String bps = details.get("blood_pressure_systolic");
+ if(!TextUtils.isEmpty(bps)){
+ int nBPS = Integer.parseInt(bps);
+ if(details.containsKey("blood_pressure_diastolic") && !StringUtils.isEmpty(details.get("blood_pressure_diastolic"))){
+ String bpd = details.get("blood_pressure_diastolic");
+ if(!TextUtils.isEmpty(bpd)) {
+ int nBPD = Integer.parseInt(bpd);
+ if(details.containsKey("has_edema") && !StringUtils.isEmpty(details.get("has_edema"))){
+ String edema = details.get("has_edema");
+ if(!TextUtils.isEmpty(edema)) {
+ if(details.containsKey("albumin_test") && !StringUtils.isEmpty(details.get("albumin_test"))){
+ String albumin = details.get("albumin_test");
+ if(!TextUtils.isEmpty(albumin))
+ {
+ if(edema.equalsIgnoreCase("yes") && (nBPS >=120 || nBPD >= 80) && albumin.equalsIgnoreCase("yes")){
+
+ HnppDBUtils.updateIsRiskFamilyMember(baseEntityId,"true",eventType);
+
+ RiskyModel riskynBPSModel = new RiskyModel();
+ riskynBPSModel.riskyValue = bps;
+ riskynBPSModel.riskyKey = "blood_pressure_systolic";
+ riskynBPSModel.eventType = eventType;
+ riskynBPSModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskynBPSModel);
+ RiskyModel riskynBPDModel = new RiskyModel();
+ riskynBPDModel.riskyValue = bpd;
+ riskynBPDModel.riskyKey = "blood_pressure_diastolic";
+ riskynBPDModel.eventType = eventType;
+ riskynBPDModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskynBPDModel);
+ RiskyModel riskyedemaModel = new RiskyModel();
+ riskyedemaModel.riskyValue = edema;
+ riskyedemaModel.riskyKey = "has_edema";
+ riskyedemaModel.eventType = eventType;
+ riskyedemaModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyedemaModel);
+
+ RiskyModel riskyalbuminModel = new RiskyModel();
+ riskyalbuminModel.riskyValue = albumin;
+ riskyalbuminModel.riskyKey = "albumin";
+ riskyalbuminModel.eventType = eventType;
+ riskyalbuminModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyalbuminModel);
+
+ }
+
+ }
+
+ }
+
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+ private void updatePncRisk(String baseEntityId,HashMapdetails){
+ if(details.containsKey("excess_bleeding") && !StringUtils.isEmpty(details.get("excess_bleeding"))){
+ String eb = details.get("excess_bleeding");
+ if(!TextUtils.isEmpty(eb) && eb.equalsIgnoreCase("yes")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = eb;
+ riskyModel.riskyKey = "excess_bleeding";
+ riskyModel.eventType = PNC_REGISTRATION;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskFamilyMember(baseEntityId,"true",PNC_REGISTRATION);
+ return;
+
+
+ }
+ }
+ if(details.containsKey("obsessive_compulsive_disorder") && !StringUtils.isEmpty(details.get("obsessive_compulsive_disorder"))){
+ String obs = details.get("obsessive_compulsive_disorder");
+ if(!TextUtils.isEmpty(obs) && obs.equalsIgnoreCase("yes")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = obs;
+ riskyModel.riskyKey = "obsessive_compulsive_disorder";
+ riskyModel.eventType = PNC_REGISTRATION;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskFamilyMember(baseEntityId,"true",PNC_REGISTRATION);
+ return;
+
+
+ }
+ }
+
+ }
+
+ private void updateElcoRisk(String baseEntityId,HashMapdetails){
+ if(details.containsKey("complications_known") && !StringUtils.isEmpty(details.get("complications_known"))){
+ String pck = details.get("complications_known");
+ if(!TextUtils.isEmpty(pck) && pck.equalsIgnoreCase("yes")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = pck;
+ riskyModel.riskyKey = "complications_known";
+ riskyModel.eventType = ELCO;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskFamilyMember(baseEntityId,"true",ELCO);
+ return;
+
+
+ }
+ }
+
+ }
+ private void updateIYCFRisk(String baseEntityId,HashMapdetails){
+ if(details.containsKey("head_balance") && !StringUtils.isEmpty(details.get("head_balance"))){
+ String head_balance = details.get("head_balance");
+ if(!TextUtils.isEmpty(head_balance) && head_balance.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = head_balance;
+ riskyModel.riskyKey = "head_balance";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_sit") && !StringUtils.isEmpty(details.get("can_sit"))){
+ String can_sit = details.get("can_sit");
+ if(!TextUtils.isEmpty(can_sit) && can_sit.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_sit;
+ riskyModel.riskyKey = "can_sit";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_sound") && !StringUtils.isEmpty(details.get("can_sound"))){
+ String can_sound = details.get("can_sound");
+ if(!TextUtils.isEmpty(can_sound) && can_sound.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_sound;
+ riskyModel.riskyKey = "can_sound";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_crap") && !StringUtils.isEmpty(details.get("can_crap"))){
+ String can_crap = details.get("can_crap");
+ if(!TextUtils.isEmpty(can_crap) && can_crap.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_crap;
+ riskyModel.riskyKey = "can_crap";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_sound_baba_maa") && !StringUtils.isEmpty(details.get("can_sound_baba_maa"))){
+ String can_sound_baba_maa = details.get("can_sound_baba_maa");
+ if(!TextUtils.isEmpty(can_sound_baba_maa) && can_sound_baba_maa.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_sound_baba_maa;
+ riskyModel.riskyKey = "can_sound_baba_maa";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_catch") && !StringUtils.isEmpty(details.get("can_catch"))){
+ String can_catch = details.get("can_catch");
+ if(!TextUtils.isEmpty(can_catch) && can_catch.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_catch;
+ riskyModel.riskyKey = "can_catch";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_make_word") && !StringUtils.isEmpty(details.get("can_make_word"))){
+ String can_make_word = details.get("can_make_word");
+ if(!TextUtils.isEmpty(can_make_word) && can_make_word.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_make_word;
+ riskyModel.riskyKey = "can_make_word";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_walk") && !StringUtils.isEmpty(details.get("can_walk"))){
+ String can_walk = details.get("can_walk");
+ if(!TextUtils.isEmpty(can_walk) && can_walk.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_walk;
+ riskyModel.riskyKey = "can_walk";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_two_sound") && !StringUtils.isEmpty(details.get("can_two_sound"))){
+ String can_two_sound = details.get("can_two_sound");
+ if(!TextUtils.isEmpty(can_two_sound) && can_two_sound.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_two_sound;
+ riskyModel.riskyKey = "can_two_sound";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_one_walk") && !StringUtils.isEmpty(details.get("can_one_walk"))){
+ String can_one_walk = details.get("can_one_walk");
+ if(!TextUtils.isEmpty(can_one_walk) && can_one_walk.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_one_walk;
+ riskyModel.riskyKey = "can_one_walk";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_run") && !StringUtils.isEmpty(details.get("can_run"))){
+ String can_run = details.get("can_run");
+ if(!TextUtils.isEmpty(can_run) && can_run.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_run;
+ riskyModel.riskyKey = "can_run";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+ if(details.containsKey("can_make_sentance") && !StringUtils.isEmpty(details.get("can_make_sentance"))){
+ String can_make_sentance = details.get("can_make_sentance");
+ if(!TextUtils.isEmpty(can_make_sentance) && can_make_sentance.equalsIgnoreCase("no")){
+ RiskyModel riskyModel = new RiskyModel();
+ riskyModel.riskyValue = can_make_sentance;
+ riskyModel.riskyKey = "can_make_sentance";
+ riskyModel.eventType = IYCF_PACKAGE;
+ riskyModel.baseEntityId = baseEntityId;
+ HnppApplication.getRiskDetailsRepository().addOrUpdate(riskyModel);
+ HnppDBUtils.updateIsRiskChild(baseEntityId,"true");
+
+ }
+ }
+
+ }
private boolean isForumEvent(String eventType){
switch (eventType) {
case HnppConstants.EVENT_TYPE.FORUM_CHILD:
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppConstants.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppConstants.java
index ad15bcf13..01bc7b8f0 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppConstants.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppConstants.java
@@ -12,8 +12,10 @@
import com.google.common.collect.ImmutableMap;
import org.joda.time.DateTime;
+import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.Months;
+import org.joda.time.format.DateTimeFormat;
import org.json.JSONException;
import org.json.JSONObject;
import org.smartregister.brac.hnpp.BuildConfig;
@@ -27,6 +29,7 @@
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Locale;
@@ -70,6 +73,14 @@ public class OTHER_SERVICE_TYPE{
public static final int TYPE_NCD = 3;
public static final int TYPE_IYCF = 4;
}
+ public static boolean isEddImportant(String lmp){
+ DateTime lmpDate = DateTimeFormat.forPattern("dd-MM-yyyy").parseDateTime(lmp);
+
+ LocalDate lastMenstrualPeriod = new LocalDate(lmpDate);
+ LocalDate expectedDeliveryDate = lastMenstrualPeriod.plusDays(280);
+ int dayDiff = Days.daysBetween(lastMenstrualPeriod, expectedDeliveryDate).getDays();
+ return dayDiff <=30;
+ }
public static String getHomeVisitStatus(long lastHomeVisit , String dateCreatedStr){
@@ -239,6 +250,7 @@ public static final class KEY {
public static final String HOUSE_HOLD_ID = "house_hold_id";
public static final String HOUSE_HOLD_NAME = "house_hold_name";
public static final String SS_NAME = "ss_name";
+ public static final String IS_RISK = "is_risk";
public static final String SERIAL_NO = "serial_no";
public static final String CHILD_MOTHER_NAME_REGISTERED = "mother_name";
public static final String CHILD_MOTHER_NAME = "Mother_Guardian_First_Name_english";
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppDBUtils.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppDBUtils.java
index 5c756068e..577672330 100644
--- a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppDBUtils.java
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/HnppDBUtils.java
@@ -54,6 +54,28 @@ public static void updateCoronaFamilyMember(String base_entity_id, String value)
}
}
+ public static void updateIsRiskFamilyMember(String base_entity_id, String value, String eventType){
+ try{
+ SQLiteDatabase database = CoreChwApplication.getInstance().getRepository().getWritableDatabase();
+ String sql = "update ec_family_member set is_risk = '"+value+"', risk_event_type ='"+eventType+"' where " +
+ "base_entity_id = '"+base_entity_id+"' ;";
+ database.execSQL(sql);
+ }catch(Exception e){
+ e.printStackTrace();
+
+ }
+ }
+ public static void updateIsRiskChild(String base_entity_id, String value){
+ try{
+ SQLiteDatabase database = CoreChwApplication.getInstance().getRepository().getWritableDatabase();
+ String sql = "update ec_child set is_risk = '"+value+"' where " +
+ "base_entity_id = '"+base_entity_id+"' ;";
+ database.execSQL(sql);
+ }catch(Exception e){
+ e.printStackTrace();
+
+ }
+ }
public static ArrayList getPreviousForum(){
String query = "select * from ec_visit_log where event_type ='"+HnppConstants.EVENT_TYPE.FORUM_CHILD+"' OR event_type = '"+HnppConstants.EVENT_TYPE.FORUM_ADO+"'" +
@@ -131,6 +153,81 @@ public static String getGuid(String baseEntityId){
}
return birthWeight;
}
+ public static boolean isRisk(String baseEntityId, String eventType){
+
+ String query = "select count(*) from ec_family_member where base_entity_id = '"+baseEntityId+"' and is_risk ='true' and risk_event_type ='"+ eventType+"'";
+ Cursor cursor = null;
+ int count=0;
+ try {
+ cursor = CoreChwApplication.getInstance().getRepository().getReadableDatabase().rawQuery(query, new String[]{});
+ if(cursor !=null && cursor.getCount() >0){
+ cursor.moveToFirst();
+ count = cursor.getInt(0);
+ cursor.close();
+ }
+
+ return count>0;
+ } catch (Exception e) {
+ Timber.e(e);
+ }
+ return count>0;
+ }
+ public static boolean isRiskAll(String baseEntityId){
+
+ String query = "select count(*) from ec_family_member where base_entity_id = '"+baseEntityId+"' and is_risk ='true'";
+ Cursor cursor = null;
+ int count=0;
+ try {
+ cursor = CoreChwApplication.getInstance().getRepository().getReadableDatabase().rawQuery(query, new String[]{});
+ if(cursor !=null && cursor.getCount() >0){
+ cursor.moveToFirst();
+ count = cursor.getInt(0);
+ cursor.close();
+ }
+
+ return count>0;
+ } catch (Exception e) {
+ Timber.e(e);
+ }
+ return count>0;
+ }
+ public static boolean childRisk(String baseEntityId){
+
+ String query = "select count(*) from ec_child where base_entity_id = '"+baseEntityId+"' and is_risk ='true'";
+ Cursor cursor = null;
+ int count=0;
+ try {
+ cursor = CoreChwApplication.getInstance().getRepository().getReadableDatabase().rawQuery(query, new String[]{});
+ if(cursor !=null && cursor.getCount() >0){
+ cursor.moveToFirst();
+ count = cursor.getInt(0);
+ cursor.close();
+ }
+
+ return count>0;
+ } catch (Exception e) {
+ Timber.e(e);
+ }
+ return count>0;
+ }
+ public static boolean isAncRisk(String baseEntityId){
+ String query = "select count(*) from ec_family_member where base_entity_id = '"+baseEntityId+"' and is_risk ='true' and (risk_event_type ='"+ HnppConstants.EVENT_TYPE.ANC_REGISTRATION +"' OR risk_event_type ='"+ HnppConstants.EVENT_TYPE.ANC1_REGISTRATION +"' OR risk_event_type ='"+ HnppConstants.EVENT_TYPE.ANC2_REGISTRATION +"' OR risk_event_type ='"+ HnppConstants.EVENT_TYPE.ANC3_REGISTRATION +"' OR risk_event_type ='"+ HnppConstants.EVENT_TYPE.ANC_PREGNANCY_HISTORY +"' OR risk_event_type ='"+ HnppConstants.EVENT_TYPE.ANC_GENERAL_DISEASE +"')";
+ Cursor cursor = null;
+ int count=0;
+ try {
+ cursor = CoreChwApplication.getInstance().getRepository().getReadableDatabase().rawQuery(query, new String[]{});
+ if(cursor !=null && cursor.getCount() >0){
+ cursor.moveToFirst();
+ count = cursor.getInt(0);
+ cursor.close();
+ }
+
+ return count>0;
+ } catch (Exception e) {
+ Timber.e(e);
+ }
+ return count>0;
+ }
public static int getCoutByFingerPrint(String startTime, String endTime){
String query = "select count(*) from ec_family_member where gu_id IS NOT NULL and gu_id !='test' and strftime('%Y-%m-%d', datetime((last_interacted_with)/1000,'unixepoch') ) BETWEEN '"+startTime+"' AND '"+endTime+"'";
Cursor cursor = null;
diff --git a/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/RiskyModel.java b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/RiskyModel.java
new file mode 100644
index 000000000..a42804a5f
--- /dev/null
+++ b/opensrp-brac-hnpp/src/main/java/org/smartregister/brac/hnpp/utils/RiskyModel.java
@@ -0,0 +1,8 @@
+package org.smartregister.brac.hnpp.utils;
+
+public class RiskyModel {
+ public String baseEntityId;
+ public String eventType;
+ public String riskyKey;
+ public String riskyValue;
+}
diff --git a/opensrp-brac-hnpp/src/main/res/layout/anc_register_list_row.xml b/opensrp-brac-hnpp/src/main/res/layout/anc_register_list_row.xml
index 90c8a57cd..055e82060 100644
--- a/opensrp-brac-hnpp/src/main/res/layout/anc_register_list_row.xml
+++ b/opensrp-brac-hnpp/src/main/res/layout/anc_register_list_row.xml
@@ -34,19 +34,40 @@
android:layout_marginRight="@dimen/register_list_item_margin"
android:layout_marginBottom="@dimen/register_list_top_bottom_margin"
android:orientation="vertical">
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
খানার তালিকা
সক্ষম দম্পতি
গর্ভবতী মায়ের তালিকা
+ ঝুঁকিপূর্ণ ও জরুরী
প্রসূতি মায়ের তালিকা
শিশু তালিকা
সব সদস্য তালিকা
@@ -88,7 +89,7 @@
মায়ের নাম : %s
বয়স : %s
খানা প্রধানের নাম : %s
- শিশু ক্লায়েন্ট
+ শিশু তালিকা
এডিট ৫ বছরের কম বয়সী শিশু
লগ আউট :
সিঙ্ক
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/adapter/NavigationAdapter.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/adapter/NavigationAdapter.java
index 037c58143..629fc58ad 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/adapter/NavigationAdapter.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/adapter/NavigationAdapter.java
@@ -9,6 +9,7 @@
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
+import android.widget.RelativeLayout;
import android.widget.TextView;
import org.smartregister.chw.core.R;
@@ -24,7 +25,7 @@ public class NavigationAdapter extends RecyclerView.Adapter navigationOptionList;
private String selectedView = CoreConstants.DrawerMenu.ALL_FAMILIES;
- private View.OnClickListener onClickListener;
+ private NavigationListener onClickListener;
private Context context;
private Map registeredActivities;
@@ -83,6 +84,36 @@ public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tvName.setTextColor(Color.WHITE);
holder.ivIcon.setImageResource(model.getResourceID());
}
+ if(model.isNeedToExpand()){
+ holder.expandIcon.setVisibility(View.VISIBLE);
+ holder.sTvName.setText(model.getNavigationSubModel().getSubTitle());
+ holder.sTvCount.setText(model.getNavigationSubModel().getSubCount()+"");
+ boolean expanded = model.isExpanded();
+
+ holder.subLayout.setVisibility(expanded ? View.VISIBLE : View.GONE);
+ holder.expandIcon.setImageResource(expanded? R.drawable.ic_less : R.drawable.ic_more);
+ holder.expandIcon.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ boolean expanded = model.isExpanded();
+ model.setExpanded(!expanded);
+ notifyItemChanged(holder.getAdapterPosition());
+
+ }
+ });
+ holder.subLayout.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onClickListener.onClickSubMenu(model.getNavigationSubModel().getType());
+ }
+ });
+
+ }else{
+ holder.expandIcon.setVisibility(View.INVISIBLE);
+ holder.subLayout.setVisibility(View.GONE);
+ }
+
+
}
@Override
@@ -95,22 +126,25 @@ public Map getRegisteredActivities() {
}
public class MyViewHolder extends RecyclerView.ViewHolder {
- public TextView tvName, tvCount;
- public ImageView ivIcon;
+ public TextView tvName, tvCount,sTvName, sTvCount;
+ public RelativeLayout subLayout;
+ public ImageView ivIcon,expandIcon;
private View myView;
private MyViewHolder(View view) {
super(view);
+ subLayout = view.findViewById(R.id.sub_item_panel);
tvName = view.findViewById(R.id.tvName);
tvCount = view.findViewById(R.id.tvCount);
ivIcon = view.findViewById(R.id.ivIcon);
-
+ expandIcon = view.findViewById(R.id.expandBtn);
+ sTvName = view.findViewById(R.id.stvName);
+ sTvCount = view.findViewById(R.id.stvCount);
+ myView = view;
if (onClickListener != null) {
- view.setOnClickListener(onClickListener);
+ myView.setOnClickListener(onClickListener);
}
-
- myView = view;
}
public View getView() {
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/holders/RegisterViewHolder.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/holders/RegisterViewHolder.java
index 2dd35753d..21fbfde7e 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/holders/RegisterViewHolder.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/holders/RegisterViewHolder.java
@@ -19,6 +19,7 @@ public class RegisterViewHolder extends RecyclerView.ViewHolder {
public ImageView goToProfileImage;
public ImageView profileImage;
public View goToProfileLayout;
+ public TextView riskView;
public RegisterViewHolder(View itemView) {
super(itemView);
@@ -33,5 +34,6 @@ public RegisterViewHolder(View itemView) {
profileImage = itemView.findViewById(R.id.profile_img);
profileImage.setVisibility(View.GONE);
childColumn = itemView.findViewById(R.id.child_column);
+ riskView = itemView.findViewById(R.id.risk_view);
}
}
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/interactor/NavigationInteractor.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/interactor/NavigationInteractor.java
index 6f44597cb..b0679e164 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/interactor/NavigationInteractor.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/interactor/NavigationInteractor.java
@@ -61,19 +61,32 @@ private int getCount(String tableName) {
int count;
Cursor cursor = null;
String mainCondition;
- if(tableName.equalsIgnoreCase("test")){
- tableName = "ec_family_member";
- mainCondition = String.format(" where %s is null AND %s", DBConstants.KEY.DATE_REMOVED, ChildDBConstants.elcoFilterWithTableName());
+ if(tableName.equalsIgnoreCase("test") || tableName.equalsIgnoreCase("elco_risk")){
+
+ if(tableName.equalsIgnoreCase("elco_risk")){
+ mainCondition = String.format(" where %s is null AND %s", DBConstants.KEY.DATE_REMOVED, ChildDBConstants.riskElcoFilterWithTableName());
+
+ }else{
+ mainCondition = String.format(" where %s is null AND %s", DBConstants.KEY.DATE_REMOVED, ChildDBConstants.elcoFilterWithTableName());
+ }
+ tableName = "ec_family_member";
}
- else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.CHILD)) {
- mainCondition = String.format(" where %s is null AND %s", DBConstants.KEY.DATE_REMOVED, ChildDBConstants.childAgeLimitFilter());
+ else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.CHILD) || tableName.equalsIgnoreCase("child_risk")) {
+ if(tableName.equalsIgnoreCase("child_risk")){
+ mainCondition = String.format(" where %s is null AND %s", DBConstants.KEY.DATE_REMOVED, ChildDBConstants.riskChildAgeLimitFilter());
+
+ }else{
+ mainCondition = String.format(" where %s is null AND %s", DBConstants.KEY.DATE_REMOVED, ChildDBConstants.childAgeLimitFilter());
+ }
+ tableName = CoreConstants.TABLE_NAME.CHILD;
+
}else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.FAMILY_MEMBER)) {
mainCondition = String.format(" where %s is null", DBConstants.KEY.DATE_REMOVED);
}
else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.FAMILY)) {
mainCondition = String.format(" where %s is null ", DBConstants.KEY.DATE_REMOVED);
- } else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.ANC_MEMBER)) {
+ } else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.ANC_MEMBER) || tableName.equalsIgnoreCase("anc_risk")) {
mainCondition = MessageFormat.format(" inner join {0} ", CoreConstants.TABLE_NAME.FAMILY_MEMBER) +
MessageFormat.format(" on {0}.{1} = {2}.{3} ", CoreConstants.TABLE_NAME.FAMILY_MEMBER, DBConstants.KEY.BASE_ENTITY_ID,
CoreConstants.TABLE_NAME.ANC_MEMBER, DBConstants.KEY.BASE_ENTITY_ID) +
@@ -86,10 +99,14 @@ else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.FAMILY)) {
MessageFormat.format(" where {0}.{1} is null ", CoreConstants.TABLE_NAME.FAMILY_MEMBER, DBConstants.KEY.DATE_REMOVED) +
MessageFormat.format(" and {0}.{1} is 0 ", CoreConstants.TABLE_NAME.ANC_MEMBER, org.smartregister.chw.anc.util.DBConstants.KEY.IS_CLOSED);
// mainCondition = mainCondition+" AND ec_anc_register.base_entity_id NOT IN (SELECT ec_pregnancy_outcome.base_entity_id from ec_pregnancy_outcome where ec_pregnancy_outcome.is_closed = '0')";
+ if(tableName.equalsIgnoreCase("anc_risk")){
+ tableName = CoreConstants.TABLE_NAME.ANC_MEMBER;
+ mainCondition = mainCondition + " "+ChildDBConstants.riskAncPatient();
+ }
} else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.TASK)) {
mainCondition =
MessageFormat.format(" where {0}.{1} is \''READY'\' AND {0}.{2} is \''Referral'\' ", CoreConstants.TABLE_NAME.CHILD_REFERRAL, ChwDBConstants.TASK_STATUS, ChwDBConstants.TASK_CODE);
- } else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.ANC_PREGNANCY_OUTCOME)) {
+ } else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.ANC_PREGNANCY_OUTCOME) || tableName.equalsIgnoreCase("pnc_risk")) {
StringBuilder build = new StringBuilder();
build.append(MessageFormat.format(" inner join {0} ", CoreConstants.TABLE_NAME.FAMILY_MEMBER));
build.append(MessageFormat.format(" on {0}.{1} = {2}.{3} ", CoreConstants.TABLE_NAME.FAMILY_MEMBER, DBConstants.KEY.BASE_ENTITY_ID,
@@ -104,6 +121,11 @@ else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.FAMILY)) {
build.append(MessageFormat.format(" and {0}.{1} is null ", CoreConstants.TABLE_NAME.FAMILY_MEMBER, DBConstants.KEY.DATE_REMOVED));
mainCondition = build.toString();
+ if(tableName.equalsIgnoreCase("pnc_risk")){
+ tableName = CoreConstants.TABLE_NAME.ANC_PREGNANCY_OUTCOME;
+ mainCondition = mainCondition + " "+ChildDBConstants.riskAncPatient();
+ Log.v("NAVIGATION_QUERY","query pnc_risk:"+mainCondition);
+ }
} else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.MALARIA_CONFIRMATION)) {
StringBuilder stb = new StringBuilder();
@@ -127,7 +149,7 @@ else if (tableName.equalsIgnoreCase(CoreConstants.TABLE_NAME.FAMILY)) {
SmartRegisterQueryBuilder sqb = new SmartRegisterQueryBuilder();
String query = MessageFormat.format("select count(*) from {0} {1}", tableName, mainCondition);
query = sqb.Endquery(query);
- Log.v("DB_UPGRADE","2%s"+query);
+ Log.v("NAVIGATION_QUERY","final:"+query);
cursor = commonRepository(tableName).rawCustomQueryForAdapter(query);
count = cursor != null && cursor.moveToFirst() ? cursor.getInt(0) : 0;
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationListener.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationListener.java
index 964056ffb..2dfe33e5d 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationListener.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationListener.java
@@ -9,7 +9,7 @@
import org.smartregister.chw.core.adapter.NavigationAdapter;
import org.smartregister.chw.core.utils.CoreConstants;
-public class NavigationListener implements View.OnClickListener {
+public class NavigationListener implements View.OnClickListener,NavigationSubMenu {
private Activity activity;
private NavigationAdapter navigationAdapter;
@@ -20,6 +20,11 @@ public void setAdapter(NavigationAdapter adapter,Activity activity){
this.activity = activity;
}
+ @Override
+ public void onClickSubMenu(String v) {
+
+ }
+
@Override
public void onClick(View v) {
if (v.getTag() instanceof String) {
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationSubMenu.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationSubMenu.java
new file mode 100644
index 000000000..d421a6000
--- /dev/null
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/listener/NavigationSubMenu.java
@@ -0,0 +1,7 @@
+package org.smartregister.chw.core.listener;
+
+import android.view.View;
+
+public interface NavigationSubMenu {
+ void onClickSubMenu(String type);
+}
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationOption.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationOption.java
index ea302701c..7e076e89b 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationOption.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationOption.java
@@ -7,6 +7,9 @@ public class NavigationOption {
private int TitleID;
private String MenuTitle;
private long RegisterCount;
+ private boolean expanded;
+ private boolean isNeedToExpand = false;
+ private NavigationSubModel navigationSubModel;
public NavigationOption(int resourceID, int resourceActiveID, int titleID, String menuTitle, long registerCount) {
ResourceID = resourceID;
@@ -16,6 +19,30 @@ public NavigationOption(int resourceID, int resourceActiveID, int titleID, Strin
RegisterCount = registerCount;
}
+ public void setNavigationSubModel(NavigationSubModel navigationSubModel) {
+ this.navigationSubModel = navigationSubModel;
+ }
+
+ public NavigationSubModel getNavigationSubModel() {
+ return navigationSubModel;
+ }
+
+ public void setExpanded(boolean expanded) {
+ this.expanded = expanded;
+ }
+
+ public boolean isExpanded() {
+ return expanded;
+ }
+
+ public void setNeedToExpand(boolean needToExpand) {
+ isNeedToExpand = needToExpand;
+ }
+
+ public boolean isNeedToExpand() {
+ return isNeedToExpand;
+ }
+
public int getResourceID() {
return ResourceID;
}
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationSubModel.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationSubModel.java
new file mode 100644
index 000000000..4c2550cb0
--- /dev/null
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/model/NavigationSubModel.java
@@ -0,0 +1,36 @@
+package org.smartregister.chw.core.model;
+
+public class NavigationSubModel {
+ private int subTitleId;
+ private int subCount;
+ private String type;
+ public NavigationSubModel(int subTitleId,int subCount,String type){
+ this.subTitleId = subTitleId;
+ this.subCount = subCount;
+ this.type = type;
+ }
+
+ public int getSubTitle() {
+ return subTitleId;
+ }
+
+ public void setSubTitle(int subTitle) {
+ this.subTitleId = subTitle;
+ }
+
+ public int getSubCount() {
+ return subCount;
+ }
+
+ public void setSubCount(int subCount) {
+ this.subCount = subCount;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+}
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/presenter/NavigationPresenter.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/presenter/NavigationPresenter.java
index 2fcbd80ab..b803d1adb 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/presenter/NavigationPresenter.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/presenter/NavigationPresenter.java
@@ -10,6 +10,7 @@
import org.smartregister.chw.core.job.VaccineRecurringServiceJob;
import org.smartregister.chw.core.model.NavigationModel;
import org.smartregister.chw.core.model.NavigationOption;
+import org.smartregister.chw.core.model.NavigationSubModel;
import org.smartregister.chw.core.utils.CoreConstants;
import org.smartregister.job.ImageUploadServiceJob;
import org.smartregister.job.PullUniqueIdsServiceJob;
@@ -49,6 +50,10 @@ protected void initialize() {
tableMap.put(CoreConstants.DrawerMenu.CHILD_CLIENTS, CoreConstants.TABLE_NAME.CHILD);
tableMap.put(CoreConstants.DrawerMenu.ANC_CLIENTS, CoreConstants.TABLE_NAME.ANC_MEMBER);
tableMap.put(CoreConstants.DrawerMenu.ANC, CoreConstants.TABLE_NAME.ANC_MEMBER);
+ tableMap.put(CoreConstants.DrawerMenu.ANC_RISK, "anc_risk");
+ tableMap.put(CoreConstants.DrawerMenu.PNC_RISK, "pnc_risk");
+ tableMap.put(CoreConstants.DrawerMenu.ELCO_RISK, "elco_risk");
+ tableMap.put(CoreConstants.DrawerMenu.CHILD_RISK, "child_risk");
tableMap.put(CoreConstants.DrawerMenu.PNC, CoreConstants.TABLE_NAME.ANC_PREGNANCY_OUTCOME);
tableMap.put(CoreConstants.DrawerMenu.REFERRALS, CoreConstants.TABLE_NAME.TASK);
tableMap.put(CoreConstants.DrawerMenu.MALARIA, CoreConstants.TABLE_NAME.MALARIA_CONFIRMATION);
@@ -73,8 +78,24 @@ public void refreshNavigationCount(final Activity activity) {
int x = 0;
while (x < mModel.getNavigationItems().size()) {
+
final int finalX = x;
- mInteractor.getRegisterCount(tableMap.get(mModel.getNavigationItems().get(x).getMenuTitle()), new NavigationContract.InteractorCallback() {
+ NavigationOption option = mModel.getNavigationItems().get(x);
+ if(option.isNeedToExpand()){
+ mInteractor.getRegisterCount(tableMap.get(option.getNavigationSubModel().getType()), new NavigationContract.InteractorCallback() {
+ @Override
+ public void onResult(Integer result) {
+ mModel.getNavigationItems().get(finalX).getNavigationSubModel().setSubCount(result);
+ getNavigationView().refreshCount();
+ }
+
+ @Override
+ public void onError(Exception e) {
+
+ }
+ });
+ }
+ mInteractor.getRegisterCount(tableMap.get(option.getMenuTitle()), new NavigationContract.InteractorCallback() {
@Override
public void onResult(Integer result) {
mModel.getNavigationItems().get(finalX).setRegisterCount(result);
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/ChildDBConstants.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/ChildDBConstants.java
index c2ccbbd67..a14e50407 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/ChildDBConstants.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/ChildDBConstants.java
@@ -12,6 +12,23 @@ public class ChildDBConstants {
public static String childAgeLimitFilter() {
return childAgeLimitFilter(DBConstants.KEY.DOB, FIVE_YEAR);
}
+ public static String riskChildAgeLimitFilter() {
+ return childAgeLimitFilter(DBConstants.KEY.DOB, FIVE_YEAR)+" "+riskChildPatient();
+ }
+ public static String riskChildPatient(){
+ return " AND ec_child.is_risk = 'true'";
+ }
+ public static String riskAncPatient(){
+ return " AND ec_family_member.is_risk = 'true'";
+ }
+ public static String riskElcoFilterWithTableName(){
+ String query = " ((( julianday('now') - julianday(ec_family_member.dob))/365) >" + 10 + ")";
+ String query2 = " ((( julianday('now') - julianday(ec_family_member.dob))/365) <" + 50 + ")";
+ String married = " ec_family_member.marital_status = 'Married' and ec_family_member.gender = 'F'";
+ return query+" AND "+query2 +" AND "+married +riskAncPatient()+ " AND "+CoreConstants.TABLE_NAME.FAMILY_MEMBER+"."+DBConstants.KEY.BASE_ENTITY_ID+" " +
+ " NOT IN (select ec_anc_register.base_entity_id from ec_anc_register where ec_anc_register.is_closed = '0' group by ec_anc_register.base_entity_id)" +
+ " and ec_family_member.base_entity_id NOT IN (select ec_pregnancy_outcome.base_entity_id from ec_pregnancy_outcome where ec_pregnancy_outcome.is_closed = '0' group by ec_pregnancy_outcome.base_entity_id)";
+ }
public static String elcoFilterWithTableName(){
String query = " ((( julianday('now') - julianday(ec_family_member.dob))/365) >" + 10 + ")";
String query2 = " ((( julianday('now') - julianday(ec_family_member.dob))/365) <" + 50 + ")";
@@ -28,6 +45,15 @@ public static String elcoFilter(){
" NOT IN (select ec_anc_register.base_entity_id from ec_anc_register where ec_anc_register.is_closed = '0' group by ec_anc_register.base_entity_id) " +
" and ec_family_member.base_entity_id NOT IN (select ec_pregnancy_outcome.base_entity_id from ec_pregnancy_outcome where ec_pregnancy_outcome.is_closed = '0' group by ec_pregnancy_outcome.base_entity_id)";
+ }
+ public static String riskElcoFilter(){
+ String query = " ((( julianday('now') - julianday(dob))/365) >" + 10 + ")";
+ String query2 = " ((( julianday('now') - julianday(dob))/365) <" + 50 + ")";
+ String married = " marital_status = 'Married' and gender = 'F'";
+ return query+" AND "+query2 +" AND "+married +riskAncPatient()+ " AND "+CoreConstants.TABLE_NAME.FAMILY_MEMBER+"."+DBConstants.KEY.BASE_ENTITY_ID+" " +
+ " NOT IN (select ec_anc_register.base_entity_id from ec_anc_register where ec_anc_register.is_closed = '0' group by ec_anc_register.base_entity_id) " +
+ " and ec_family_member.base_entity_id NOT IN (select ec_pregnancy_outcome.base_entity_id from ec_pregnancy_outcome where ec_pregnancy_outcome.is_closed = '0' group by ec_pregnancy_outcome.base_entity_id)";
+
}
private static String childAgeLimitFilter(String dateColumn, int age) {
return " ((( julianday('now') - julianday(" + dateColumn + "))/365) <" + age + ")";
diff --git a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/CoreConstants.java b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/CoreConstants.java
index f5c338d15..6bb2bfdc9 100644
--- a/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/CoreConstants.java
+++ b/opensrp-chw-core/src/main/java/org/smartregister/chw/core/utils/CoreConstants.java
@@ -435,12 +435,16 @@ public static final class DrawerMenu {
public static final String ALL_CLIENTS = "All Clients";
public static final String ALL_MEMBER = "All Member";
public static final String ELCO_CLIENT = "Elco Clients";
+ public static final String ELCO_RISK = "Elco risk";
public static final String ALL_FAMILIES = "All Families";
public static final String ANC_CLIENTS = "ANC Clients";
public static final String CHILD_CLIENTS = "Child Clients";
public static final String CHILD = "Child";
public static final String HIV_CLIENTS = "Hiv Clients";
public static final String ANC = "ANC";
+ public static final String ANC_RISK = "ANC Risk";
+ public static final String PNC_RISK = "PNC Risk";
+ public static final String CHILD_RISK = "Child Risk";
public static final String LD = "L&D";
public static final String PNC = "PNC";
public static final String FAMILY_PLANNING = "Family Planning";
@@ -625,6 +629,10 @@ public static final class REGISTERED_ACTIVITIES {
public static final String ELCO_REGISTER_ACTIVITY = "ELCO_REGISTER_ACTIVITY";
public static final String FAMILY_REGISTER_ACTIVITY = "FAMILY_REGISTER_ACTIVITY";
public static final String ANC_REGISTER_ACTIVITY = "ANC_REGISTER_ACTIVITY";
+ public static final String ANC_RISK_REGISTER_ACTIVITY = "ANC_RISK_MEMBER_REGISTER_ACTIVITY";
+ public static final String PNC_RISK_REGISTER_ACTIVITY = "PNC_RISK_MEMBER_REGISTER_ACTIVITY";
+ public static final String ELCO_RISK_REGISTER_ACTIVITY = "ELCO_RISK_MEMBER_REGISTER_ACTIVITY";
+ public static final String CHILD_RISK_REGISTER_ACTIVITY = "CHILD_RISK_MEMBER_REGISTER_ACTIVITY";
public static final String PNC_REGISTER_ACTIVITY = "PNC_REGISTER_ACTIVITY";
public static final String REFERRALS_REGISTER_ACTIVITY = "REFERRALS_REGISTER_ACTIVITY";
public static final String MALARIA_REGISTER_ACTIVITY = "MALARIA_REGISTER_ACTIVITY";
diff --git a/opensrp-chw-core/src/main/res/drawable-hdpi/ic_less.png b/opensrp-chw-core/src/main/res/drawable-hdpi/ic_less.png
new file mode 100644
index 000000000..1259e0e15
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-hdpi/ic_less.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-hdpi/ic_more.png b/opensrp-chw-core/src/main/res/drawable-hdpi/ic_more.png
new file mode 100644
index 000000000..2b1f0fb24
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-hdpi/ic_more.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-mdpi/ic_less.png b/opensrp-chw-core/src/main/res/drawable-mdpi/ic_less.png
new file mode 100644
index 000000000..f049a85ca
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-mdpi/ic_less.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-mdpi/ic_more.png b/opensrp-chw-core/src/main/res/drawable-mdpi/ic_more.png
new file mode 100644
index 000000000..2b6634998
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-mdpi/ic_more.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-xhdpi/ic_less.png b/opensrp-chw-core/src/main/res/drawable-xhdpi/ic_less.png
new file mode 100644
index 000000000..5c18e944a
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-xhdpi/ic_less.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-xhdpi/ic_more.png b/opensrp-chw-core/src/main/res/drawable-xhdpi/ic_more.png
new file mode 100644
index 000000000..ac3382cc2
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-xhdpi/ic_more.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-xxhdpi/ic_less.png b/opensrp-chw-core/src/main/res/drawable-xxhdpi/ic_less.png
new file mode 100644
index 000000000..7ac3b7dc7
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-xxhdpi/ic_less.png differ
diff --git a/opensrp-chw-core/src/main/res/drawable-xxhdpi/ic_more.png b/opensrp-chw-core/src/main/res/drawable-xxhdpi/ic_more.png
new file mode 100644
index 000000000..195e53d02
Binary files /dev/null and b/opensrp-chw-core/src/main/res/drawable-xxhdpi/ic_more.png differ
diff --git a/opensrp-chw-core/src/main/res/layout/adapter_child_register_list_row.xml b/opensrp-chw-core/src/main/res/layout/adapter_child_register_list_row.xml
index 025d96323..aa583df92 100644
--- a/opensrp-chw-core/src/main/res/layout/adapter_child_register_list_row.xml
+++ b/opensrp-chw-core/src/main/res/layout/adapter_child_register_list_row.xml
@@ -39,19 +39,33 @@
android:layout_toStartOf="@+id/due_button_wrapper"
android:layout_toLeftOf="@+id/due_button_wrapper"
android:orientation="vertical">
+
+
+
+
+
+
-
-
+
+
+
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file