Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented viewing of pregnancy confirmations clients in ANC Register #30

Merged
merged 3 commits into from
Jan 11, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion opensrp-chw-hf/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ android {

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation('org.smartregister:opensrp-client-chw-core:1.5.30.5-NACP-SNAPSHOT@aar') {
implementation('org.smartregister:opensrp-client-chw-core:1.5.30.6-NACP-SNAPSHOT@aar') {
// implementation(project(":opensrp-chw-core")) {
transitive = true
exclude group: 'com.android.support', module: 'appcompat-v7'
Expand Down
4 changes: 4 additions & 0 deletions opensrp-chw-hf/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,10 @@
android:name="org.smartregister.chw.hf.activity.ReferralTaskViewActivity"
android:screenOrientation="portrait"
android:theme="@style/HFTheme.NoActionBar" />
<activity
android:name="org.smartregister.chw.hf.activity.PregnancyConfirmationViewActivity"
android:screenOrientation="portrait"
android:theme="@style/HFTheme.NoActionBar" />
<activity
android:name="org.smartregister.chw.hf.activity.CommunityFollowupFeedbackViewActivity"
android:screenOrientation="portrait"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
package org.smartregister.chw.hf.activity;

import static org.smartregister.chw.core.utils.CoreConstants.JSON_FORM.isMultiPartForm;

import android.app.Activity;
import android.content.Intent;
import android.widget.Toast;

import androidx.annotation.MenuRes;
import androidx.fragment.app.Fragment;

import com.google.android.material.bottomnavigation.LabelVisibilityMode;
import com.vijay.jsonwizard.constants.JsonFormConstants;
import com.vijay.jsonwizard.domain.Form;

Expand All @@ -27,12 +33,15 @@
import org.smartregister.chw.core.utils.CoreJsonFormUtils;
import org.smartregister.chw.core.utils.FormUtils;
import org.smartregister.chw.hf.R;
import org.smartregister.chw.hf.fragment.AncReferralListRegisterFragment;
import org.smartregister.chw.hf.fragment.AncRegisterFragment;
import org.smartregister.chw.hf.interactor.AncRegisterInteractor;
import org.smartregister.chw.hf.listener.AncBottomNavigationListener;
import org.smartregister.clientandeventmodel.Event;
import org.smartregister.family.util.JsonFormUtils;
import org.smartregister.family.util.Utils;
import org.smartregister.helper.BottomNavigationHelper;
import org.smartregister.listener.BottomNavigationListener;
import org.smartregister.repository.AllSharedPreferences;
import org.smartregister.view.fragment.BaseRegisterFragment;

Expand All @@ -41,8 +50,6 @@

import timber.log.Timber;

import static org.smartregister.chw.core.utils.CoreConstants.JSON_FORM.isMultiPartForm;

public class AncRegisterActivity extends CoreAncRegisterActivity {

public static void startAncRegistrationActivity(Activity activity, String memberBaseEntityID, String phoneNumber, String formName,
Expand All @@ -62,7 +69,6 @@ public static void startAncRegistrationActivity(Activity activity, String member

@Override
public void startFormActivity(JSONObject jsonForm) {

try {
JSONObject stepOne = jsonForm.getJSONObject(JsonFormUtils.STEP1);
JSONArray jsonArray = stepOne.getJSONArray(JsonFormUtils.FIELDS);
Expand Down Expand Up @@ -105,6 +111,12 @@ public void startFormActivity(JSONObject jsonForm) {
}
}

@Override
protected Fragment[] getOtherFragments() {
return new AncReferralListRegisterFragment[]{
new AncReferralListRegisterFragment()};
}

public static String getFormTable() {
if (form_name != null && (form_name.equals(CoreConstants.JSON_FORM.getAncRegistration()) || form_name.equals(org.smartregister.chw.hf.utils.Constants.JsonForm.getAncPregnancyConfirmationForm()))) {
return CoreConstants.TABLE_NAME.ANC_MEMBER;
Expand All @@ -117,7 +129,32 @@ protected void registerBottomNavigation() {
super.registerBottomNavigation();
bottomNavigationHelper = new BottomNavigationHelper();
bottomNavigationView = findViewById(R.id.bottom_navigation);
FamilyRegisterActivity.registerBottomNavigation(bottomNavigationHelper, bottomNavigationView, this);

if (bottomNavigationView != null) {
bottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
bottomNavigationView.getMenu().removeItem(org.smartregister.R.id.action_clients);
bottomNavigationView.getMenu().removeItem(org.smartregister.chw.tb.R.id.action_register);
bottomNavigationView.getMenu().removeItem(org.smartregister.R.id.action_search);
bottomNavigationView.getMenu().removeItem(org.smartregister.R.id.action_library);
//
// bottomNavigationView.inflateMenu(getMenuResource());
// bottomNavigationHelper.disableShiftMode(bottomNavigationView);

BottomNavigationListener ancBottomNavigationListener = getBottomNavigation(this);
bottomNavigationView.setOnNavigationItemSelectedListener(ancBottomNavigationListener);

}
}


@Override
public BottomNavigationListener getBottomNavigation(Activity activity) {
return new AncBottomNavigationListener(activity);
}

@MenuRes
public int getMenuResource() {
return R.menu.bottom_nav_anc_menu;
}

@Override
Expand Down Expand Up @@ -168,8 +205,7 @@ protected void onActivityResultExtended(int requestCode, int resultCode, Intent

if (encounter_type.equalsIgnoreCase(getRegisterEventType())) {
if (danger_sign_analysis.equalsIgnoreCase("None") && (upt.equalsIgnoreCase("positive") || uss.equalsIgnoreCase("present_gestation_sac")))
saveFormForPregnancyConfirmation(jsonString,table);

saveFormForPregnancyConfirmation(jsonString, table);
} else if (encounter_type.equalsIgnoreCase(Constants.EVENT_TYPE.PREGNANCY_OUTCOME)) {

presenter().saveForm(jsonString, false, table);
Expand Down Expand Up @@ -200,7 +236,7 @@ public static void saveFormForPregnancyConfirmation(String jsonString, String ta
LocalDate lmpDate = dateTimeFormat.parseLocalDate(eddJson.optString(JsonFormUtils.VALUE)).plusDays(-280);
lmp.put(JsonFormUtils.VALUE, dateTimeFormat.print(lmpDate));
}
processPregnancyConfirmation(form.toString(),table);
processPregnancyConfirmation(form.toString(), table);
} catch (Exception e) {
Timber.e(e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package org.smartregister.chw.hf.activity;

import static android.view.View.GONE;
import static org.smartregister.chw.core.utils.Utils.passToolbarTitle;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import androidx.annotation.NonNull;

import org.smartregister.chw.core.utils.CoreConstants;
import org.smartregister.chw.hf.R;
import org.smartregister.chw.hf.utils.AllClientsUtils;
import org.smartregister.chw.hf.utils.Constants;
import org.smartregister.commonregistry.CommonPersonObjectClient;
import org.smartregister.domain.Task;
import org.smartregister.opd.utils.OpdDbConstants;
import org.smartregister.view.customcontrols.CustomFontTextView;

public class PregnancyConfirmationViewActivity extends ReferralTaskViewActivity implements View.OnClickListener {

public static void startPregnancyConfirmationViewActivity(Activity activity, CommonPersonObjectClient personObjectClient, Task task, String startingActivity) {
PregnancyConfirmationViewActivity.personObjectClient = personObjectClient;
Intent intent = new Intent(activity, PregnancyConfirmationViewActivity.class);
intent.putExtra(CoreConstants.INTENT_KEY.USERS_TASKS, task);
intent.putExtra(CoreConstants.INTENT_KEY.CHILD_COMMON_PERSON, personObjectClient);
intent.putExtra(CoreConstants.INTENT_KEY.STARTING_ACTIVITY, startingActivity);
passToolbarTitle(activity, intent);
activity.startActivity(intent);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.referrals_tasks_view_layout);
if (getIntent().getExtras() != null) {
extraClientTask();
extraDetails();
setStartingActivity((String) getIntent().getSerializableExtra(CoreConstants.INTENT_KEY.STARTING_ACTIVITY));
inflateToolbar();
setUpViews();
}
}

@Override
protected void onCreation() {
//overridden
}

@Override
protected void onResumption() {
//Overridden
}

public void setUpViews() {
clientName = findViewById(R.id.client_name);
careGiverName = findViewById(R.id.care_giver_name);
childName = findViewById(R.id.child_name);
careGiverPhone = findViewById(R.id.care_giver_phone);
clientReferralProblem = findViewById(R.id.client_referral_problem);
chwDetailsNames = findViewById(R.id.chw_details_names);
referralDate = findViewById(R.id.referral_date);

womanGaLayout = findViewById(R.id.woman_ga_layout);
careGiverLayout = findViewById(R.id.care_giver_name_layout);
childNameLayout = findViewById(R.id.child_name_layout);

womanGa = findViewById(R.id.woman_ga);
CustomFontTextView viewProfile = findViewById(R.id.view_profile);

CustomFontTextView markAskDone = findViewById(R.id.mark_ask_done);
markAskDone.setOnClickListener(this);

if (getStartingActivity().equals(CoreConstants.REGISTERED_ACTIVITIES.REFERRALS_REGISTER_ACTIVITY)) {
viewProfile.setOnClickListener(this);
} else {
viewProfile.setVisibility(View.INVISIBLE);
}
getReferralDetails();

((CustomFontTextView) findViewById(R.id.toolbar_title)).setText(getResources().getString(R.string.return_to_all_anc_women));
((CustomFontTextView) findViewById(R.id.mark_ask_done)).setText(getResources().getString(R.string.pregnancy_confirmation));
findViewById(R.id.view_profile).setVisibility(GONE);
}

public void setStartingActivity(String startingActivity) {
this.startingActivity = startingActivity;
}

public String getBaseEntityId() {
return task.getForEntity();
}

@Override
public void onClick(View view) {
if (view.getId() == R.id.view_profile) {
personObjectClient.getDetails().put(OpdDbConstants.KEY.REGISTER_TYPE, mapTaskFocusToRegisterType());
AllClientsUtils.goToClientProfile(this, personObjectClient);
} else if (view.getId() == R.id.mark_ask_done) {
AncRegisterActivity.startAncRegistrationActivity(PregnancyConfirmationViewActivity.this, getBaseEntityId(), getFamilyMemberContacts(),
Constants.JsonForm.getAncPregnancyConfirmation(), null, getBaseEntityId(), name);
}
}

@NonNull
private String mapTaskFocusToRegisterType() {
switch (task.getFocus()) {
case CoreConstants.TASKS_FOCUS.SICK_CHILD:
return CoreConstants.REGISTER_TYPE.CHILD;
case CoreConstants.TASKS_FOCUS.SUSPECTED_MALARIA:
return CoreConstants.REGISTER_TYPE.MALARIA;
case CoreConstants.TASKS_FOCUS.ANC_DANGER_SIGNS:
return CoreConstants.REGISTER_TYPE.ANC;
case CoreConstants.TASKS_FOCUS.PNC_DANGER_SIGNS:
return CoreConstants.REGISTER_TYPE.PNC;
case CoreConstants.TASKS_FOCUS.FP_SIDE_EFFECTS:
return CoreConstants.REGISTER_TYPE.FAMILY_PLANNING;
default:
return "";
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
package org.smartregister.chw.hf.fragment;

import android.database.Cursor;
import android.os.Bundle;
import android.widget.TextView;

import androidx.loader.content.CursorLoader;
import androidx.loader.content.Loader;

import org.smartregister.chw.core.fragment.CoreAncRegisterFragment;
import org.smartregister.chw.core.utils.CoreConstants;
import org.smartregister.chw.core.utils.CoreReferralUtils;
import org.smartregister.chw.core.utils.Utils;
import org.smartregister.chw.hf.HealthFacilityApplication;
import org.smartregister.chw.hf.R;
import org.smartregister.chw.hf.activity.PregnancyConfirmationViewActivity;
import org.smartregister.chw.hf.model.AncReferralListRegisterRegisterFragmentModel;
import org.smartregister.chw.hf.presenter.HfAncReferralListRegisterFragmentPresenter;
import org.smartregister.chw.hf.provider.HfAncReferralListRegisterProvider;
import org.smartregister.commonregistry.CommonPersonObject;
import org.smartregister.commonregistry.CommonPersonObjectClient;
import org.smartregister.commonregistry.CommonRepository;
import org.smartregister.configurableviews.model.View;
import org.smartregister.cursoradapter.RecyclerViewPaginatedAdapter;
import org.smartregister.cursoradapter.SmartRegisterQueryBuilder;
import org.smartregister.domain.Task;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import timber.log.Timber;

public class AncReferralListRegisterFragment extends CoreAncRegisterFragment {

@Override
public void setupViews(android.view.View view) {
super.setupViews(view);
((TextView) view.findViewById(R.id.txt_title_label)).setText(getString(R.string.action_pregnancy_confirmation_referrals));
view.findViewById(R.id.due_only_layout).setVisibility(android.view.View.GONE);
}

@Override
public void initializeAdapter(Set<View> visibleColumns) {
HfAncReferralListRegisterProvider provider = new HfAncReferralListRegisterProvider(getActivity(), commonRepository(), visibleColumns, registerActionHandler, paginationViewHandler);
clientAdapter = new RecyclerViewPaginatedAdapter(null, provider, context().commonrepository(this.tablename));
clientAdapter.setCurrentlimit(20);
clientsView.setAdapter(clientAdapter);
}

@Override
protected void initializePresenter() {
if (getActivity() == null) {
return;
}
presenter = new HfAncReferralListRegisterFragmentPresenter(this, new AncReferralListRegisterRegisterFragmentModel(), null);
}

@Override
protected void openProfile(CommonPersonObjectClient client) {
PregnancyConfirmationViewActivity.startPregnancyConfirmationViewActivity(getActivity(), client, getTask(Utils.getValue(client.getColumnmaps(), "_id", false)), CoreConstants.REGISTERED_ACTIVITIES.REFERRALS_REGISTER_ACTIVITY);
}

private Task getTask(String taskId) {
return HealthFacilityApplication.getInstance().getTaskRepository().getTaskByIdentifier(taskId);
}

@Override
protected void openHomeVisit(CommonPersonObjectClient client) {
//Not needed on HF
}

@Override
public String getDueCondition() {
return "";
}

private Map<String, String> fetchCareGiverDetails(String careGiverId) {
Map<String, String> details = new HashMap<>();

String query = CoreReferralUtils.mainCareGiverSelect(CoreConstants.TABLE_NAME.FAMILY_MEMBER, careGiverId);
Timber.d("The caregiver query %s", query);
try (Cursor cursor = getCommonRepository(CoreConstants.TABLE_NAME.FAMILY_MEMBER).rawCustomQueryForAdapter(query)) {
if (cursor != null && cursor.moveToFirst()) {
CommonPersonObject personObject = getCommonRepository(CoreConstants.TABLE_NAME.FAMILY_MEMBER).readAllcommonforCursorAdapter(cursor);
details = personObject.getColumnmaps();
//pClient.getColumnmaps().putAll(personObject.getColumnmaps());
}
} catch (Exception e) {
Timber.e(e, "AncRegisterFragment --> fetchCareGiverDetails");
}

return details;
}

private CommonRepository getCommonRepository(String tableName) {
return Utils.context().commonrepository(tableName);
}

private String defaultFilterAndSortQuery() {
SmartRegisterQueryBuilder sqb = new SmartRegisterQueryBuilder(mainSelect);

String query = "";
String customFilter = getFilterString();
try {
sqb.addCondition(customFilter);
query = sqb.orderbyCondition(Sortqueries);
query = sqb.Endquery(sqb.addlimitandOffset(query, clientAdapter.getCurrentlimit(), clientAdapter.getCurrentoffset()));
} catch (Exception e) {
Timber.e(e);
}

return query;
}

@Override
public Loader<Cursor> onCreateLoader(int id, final Bundle args) {
if (id == LOADER_ID) {
return new CursorLoader(getActivity()) {
@Override
public Cursor loadInBackground() {
// Count query
final String COUNT = "count_execute";
if (args != null && args.getBoolean(COUNT)) {
countExecute();
}
String query = defaultFilterAndSortQuery();
return commonRepository().rawCustomQueryForAdapter(query);
}
};
}
return super.onCreateLoader(id, args);
}
}
Loading