forked from opensrp/opensrp-client-chw-hf
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #30 from SoftmedTanzania/implement-anc-referrals-list
Implemented viewing of pregnancy confirmations clients in ANC Register
- Loading branch information
Showing
13 changed files
with
589 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
124 changes: 124 additions & 0 deletions
124
...hf/src/main/java/org/smartregister/chw/hf/activity/PregnancyConfirmationViewActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 ""; | ||
} | ||
} | ||
} |
134 changes: 134 additions & 0 deletions
134
...w-hf/src/main/java/org/smartregister/chw/hf/fragment/AncReferralListRegisterFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | ||
} | ||
} |
Oops, something went wrong.