Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "a7ac209f015d121f1c97a404ea9ce58e",
"identityHash": "34541a9c2348a38b1b911460ecd8517d",
"entities": [
{
"tableName": "concepts",
Expand Down Expand Up @@ -698,7 +698,7 @@
},
{
"tableName": "allergy",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `uuid` TEXT, `patientId` TEXT, `comment` TEXT, `severity_display` TEXT, `severity_uuid` TEXT, `allergen_display` TEXT, `allergen_uuid` TEXT, `allergy_reactions` TEXT)",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`_id` INTEGER PRIMARY KEY AUTOINCREMENT, `uuid` TEXT, `patientId` TEXT, `comment` TEXT, `severity_display` TEXT, `severity_uuid` TEXT, `allergen_display` TEXT, `allergen_uuid` TEXT, `allergen_type` TEXT, `allergy_reactions` TEXT)",
"fields": [
{
"fieldPath": "id",
Expand Down Expand Up @@ -748,6 +748,12 @@
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "allergenType",
"columnName": "allergen_type",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "allergyReactions",
"columnName": "allergy_reactions",
Expand All @@ -768,7 +774,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"a7ac209f015d121f1c97a404ea9ce58e\")"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"34541a9c2348a38b1b911460ecd8517d\")"
]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

public class AddEditAllergyActivity extends ACBaseActivity {
private Long patientID;
private String allergyUuid;

public static AddEditAllergyFragment newInstance() {
return new AddEditAllergyFragment();
Expand All @@ -43,6 +44,7 @@ protected void onCreate(Bundle savedInstanceState) {
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
patientID = bundle.getLong(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE);
allergyUuid = bundle.getString(ApplicationConstants.BundleKeys.ALLERGY_UUID);
}

AddEditAllergyFragment addEditAllergyFragment = (AddEditAllergyFragment) getSupportFragmentManager().findFragmentById(R.id.allergyFrame);
Expand All @@ -54,7 +56,7 @@ protected void onCreate(Bundle savedInstanceState) {
addEditAllergyFragment, R.id.allergyFrame);
}

new AddEditAllergyPresenter(addEditAllergyFragment, patientID);
new AddEditAllergyPresenter(addEditAllergyFragment, patientID, allergyUuid);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import org.openmrs.mobile.activities.BasePresenterContract;
import org.openmrs.mobile.activities.BaseView;
import org.openmrs.mobile.models.Allergy;
import org.openmrs.mobile.models.AllergyCreate;
import org.openmrs.mobile.models.ConceptMembers;
import org.openmrs.mobile.models.SystemProperty;
Expand All @@ -30,12 +31,16 @@ interface View extends BaseView<AddEditAllergyContract.Presenter> {
void setSeverity(SystemProperty systemProperty);

void showLoading(boolean loading, boolean exitScreen);

void fillAllergyToUpdate(Allergy mAllergy);
}

interface Presenter extends BasePresenterContract {
void fetchSystemProperties(Fragment fragment);

void createAllergy(AllergyCreate allergyCreate);

void updateAllergy(AllergyCreate allergyCreate);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@
import org.openmrs.mobile.activities.ACBaseFragment;
import org.openmrs.mobile.databinding.FragmentAllergyInfoBinding;
import org.openmrs.mobile.models.AllergenCreate;
import org.openmrs.mobile.models.Allergy;
import org.openmrs.mobile.models.AllergyCreate;
import org.openmrs.mobile.models.AllergyReaction;
import org.openmrs.mobile.models.AllergyReactionCreate;
import org.openmrs.mobile.models.AllergyUuid;
import org.openmrs.mobile.models.ConceptMembers;
Expand Down Expand Up @@ -65,6 +67,7 @@ public class AddEditAllergyFragment extends ACBaseFragment<AddEditAllergyContrac
private String mildSeverity;
private String moderateSeverity;
private String severeSeverity;
private Boolean allergyToUpdate = false;

public static AddEditAllergyFragment newInstance() {
return new AddEditAllergyFragment();
Expand All @@ -83,23 +86,23 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
private void initListeners() {
patientAllergyBinding.mildSeverity.setOnClickListener(view -> {
allergyCreate.setSeverity(new AllergyUuid(mildSeverity));
patientAllergyBinding.mildSeverity.setBackgroundResource(R.drawable.chip_white_rectangle);
patientAllergyBinding.moderateSeverity.setBackgroundResource(R.drawable.chip_grey_rectangle);
patientAllergyBinding.severeSeverity.setBackgroundResource(R.drawable.chip_grey_rectangle);
selectSeverity(patientAllergyBinding.mildSeverity);
unSelectSeverity(patientAllergyBinding.moderateSeverity);
unSelectSeverity(patientAllergyBinding.severeSeverity);
});

patientAllergyBinding.moderateSeverity.setOnClickListener(view -> {
allergyCreate.setSeverity(new AllergyUuid(moderateSeverity));
patientAllergyBinding.mildSeverity.setBackgroundResource(R.drawable.chip_grey_rectangle);
patientAllergyBinding.moderateSeverity.setBackgroundResource(R.drawable.chip_white_rectangle);
patientAllergyBinding.severeSeverity.setBackgroundResource(R.drawable.chip_grey_rectangle);
unSelectSeverity(patientAllergyBinding.mildSeverity);
selectSeverity(patientAllergyBinding.moderateSeverity);
unSelectSeverity(patientAllergyBinding.severeSeverity);
});

patientAllergyBinding.severeSeverity.setOnClickListener(view -> {
allergyCreate.setSeverity(new AllergyUuid(severeSeverity));
patientAllergyBinding.mildSeverity.setBackgroundResource(R.drawable.chip_grey_rectangle);
patientAllergyBinding.moderateSeverity.setBackgroundResource(R.drawable.chip_grey_rectangle);
patientAllergyBinding.severeSeverity.setBackgroundResource(R.drawable.chip_white_rectangle);
unSelectSeverity(patientAllergyBinding.mildSeverity);
unSelectSeverity(patientAllergyBinding.moderateSeverity);
selectSeverity(patientAllergyBinding.severeSeverity);
});

patientAllergyBinding.allergenDrug.setOnClickListener(view -> {
Expand Down Expand Up @@ -205,7 +208,11 @@ private void createAllergy() {
.setPositiveButton(R.string.mark_patient_deceased_proceed, (dialog, id) -> {
dialog.cancel();
showLoading(true, false);
mPresenter.createAllergy(allergyCreate);
if(!allergyToUpdate) {
mPresenter.createAllergy(allergyCreate);
} else {
mPresenter.updateAllergy(allergyCreate);
}
})
.setNegativeButton(R.string.dialog_button_cancel, (dialog, id) -> alertDialog.cancel());
alertDialog = alertDialogBuilder.create();
Expand Down Expand Up @@ -261,6 +268,42 @@ public void showLoading(boolean loading, boolean exitScreen) {
}
}

@Override
public void fillAllergyToUpdate(Allergy mAllergy) {
if (mAllergy != null) {
allergyToUpdate = true;
patientAllergyBinding.commentBox.setText(mAllergy.getComment());

unSelectSeverity(patientAllergyBinding.mildSeverity);
unSelectSeverity(patientAllergyBinding.moderateSeverity);
unSelectSeverity(patientAllergyBinding.severeSeverity);
if (mAllergy.getSeverity() != null) {
allergyCreate.setSeverity(new AllergyUuid(mAllergy.getSeverity().getUuid()));
if (mAllergy.getSeverity().getDisplay().contains(PROPERTY_MILD)) {
selectSeverity(patientAllergyBinding.mildSeverity);
} else if (mAllergy.getSeverity().getDisplay().contains(PROPERTY_SEVERE)) {
selectSeverity(patientAllergyBinding.severeSeverity);
} else {
selectSeverity(patientAllergyBinding.moderateSeverity);
}
}

List<AllergyReaction> reactions = mAllergy.getReactions();
for (AllergyReaction allergyReaction : reactions) {
createReactionChip(allergyReaction.getReaction().getDisplay());
}

patientAllergyBinding.linearLayoutCategory.setVisibility(View.GONE);
patientAllergyBinding.allergySpinner.setVisibility(View.GONE);
patientAllergyBinding.finalAllergen.setVisibility(View.VISIBLE);
patientAllergyBinding.finalAllergen.setText(mAllergy.getAllergen().getCodedAllergen().getDisplay());
AllergenCreate allergenCreate = new AllergenCreate();
allergenCreate.setAllergenType(mAllergy.getAllergen().getAllergenType());
allergenCreate.setCodedAllergen(new AllergyUuid(mAllergy.getAllergen().getCodedAllergen().getUuid()));
allergyCreate.setAllergen(allergenCreate);
}
}

private void unSelectChip(TextView textView) {
textView.setBackgroundResource(R.drawable.chip_grey_rectangle);
textView.setTextColor(getResources().getColor(R.color.dark_grey_8x));
Expand All @@ -271,6 +314,14 @@ private void selectChip(TextView textView) {
textView.setTextColor(getResources().getColor(R.color.allergy_orange));
}

private void unSelectSeverity(TextView textView) {
textView.setBackgroundResource(R.drawable.chip_grey_rectangle);
}

private void selectSeverity(TextView textView) {
textView.setBackgroundResource(R.drawable.chip_white_rectangle);
}

private void createReactionChip(String selectedReaction) {
selectedReactions.add(selectedReaction);
Chip chip = new Chip(getContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.openmrs.mobile.application.OpenMRS;
import org.openmrs.mobile.dao.PatientDAO;
import org.openmrs.mobile.listeners.retrofitcallbacks.DefaultResponseCallback;
import org.openmrs.mobile.models.Allergy;
import org.openmrs.mobile.models.AllergyCreate;
import org.openmrs.mobile.models.AllergyPatient;
import org.openmrs.mobile.models.ConceptMembers;
Expand All @@ -47,17 +48,22 @@ public class AddEditAllergyPresenter extends BasePresenter implements AddEditAll
Fragment fragment;
private AddEditAllergyContract.View view;
private Patient mPatient;
private Allergy mAllergy;
private String allergyUuid;
private AllergyRepository allergyRepository;

public AddEditAllergyPresenter(AddEditAllergyContract.View view, Long patientID) {
public AddEditAllergyPresenter(AddEditAllergyContract.View view, Long patientID, String allergyUuid) {
this.view = view;
this.view.setPresenter(this);
this.allergyUuid = allergyUuid;
mPatient = new PatientDAO().findPatientByID(patientID.toString());
allergyRepository = new AllergyRepository(patientID.toString());
}

@Override
public void subscribe() {
mAllergy = allergyRepository.getAllergyByUUID(allergyUuid);
view.fillAllergyToUpdate(mAllergy);
}

@Override
Expand Down Expand Up @@ -117,6 +123,15 @@ public void createAllergy(AllergyCreate allergyCreate) {
allergyRepository.createAllergy(mPatient.getUuid(), allergyCreate, this);
}

@Override
public void updateAllergy(AllergyCreate allergyCreate) {
AllergyPatient allergyPatient = new AllergyPatient();
allergyPatient.setUuid(mPatient.getUuid());
allergyPatient.setIdentifier(new ArrayList<>());
allergyCreate.setPatient(allergyPatient);
allergyRepository.updateAllergy(mPatient.getUuid(), allergyUuid, mAllergy.getId(), allergyCreate, this);
}

@Override
public void onResponse() {
view.showLoading(false, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ public void setupUpdateDeleteActionFAB() {
if(position == 1) {
Intent intent = new Intent(this, AddEditAllergyActivity.class);
intent.putExtra(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE, mPresenter.getPatientId());
intent.putExtra(ApplicationConstants.BundleKeys.ALLERGY_UUID, ApplicationConstants.EMPTY_STRING);
startActivity(intent);
} else {
animateFAB(isActionFABOpen);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package org.openmrs.mobile.activities.patientdashboard.allergy;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
Expand All @@ -30,12 +31,14 @@

import org.jetbrains.annotations.NotNull;
import org.openmrs.mobile.R;
import org.openmrs.mobile.activities.addeditallergy.AddEditAllergyActivity;
import org.openmrs.mobile.activities.dialog.CustomPickerDialog;
import org.openmrs.mobile.activities.dialog.CustomDialogModel;
import org.openmrs.mobile.activities.patientdashboard.PatientDashboardContract;
import org.openmrs.mobile.activities.patientdashboard.PatientDashboardFragment;
import org.openmrs.mobile.databinding.FragmentPatientAllergyBinding;
import org.openmrs.mobile.models.Allergy;
import org.openmrs.mobile.utilities.ApplicationConstants;
import org.openmrs.mobile.utilities.ToastUtil;

import java.util.ArrayList;
Expand Down Expand Up @@ -136,7 +139,10 @@ public void performFunction(int position) {
alertDialog = alertDialogBuilder.create();
alertDialog.show();
} else {
ToastUtil.notify("Under Progress");
Intent intent = new Intent(getActivity(), AddEditAllergyActivity.class);
intent.putExtra(ApplicationConstants.BundleKeys.PATIENT_ID_BUNDLE, mPresenter.getPatientId());
intent.putExtra(ApplicationConstants.BundleKeys.ALLERGY_UUID, selectedAllergy.getUuid());
startActivity(intent);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -191,4 +191,9 @@ Call<ResponseBody> deleteAllergy(@Path("patientUuid") String patientUuid,
@POST("patient/{uuid}/allergy")
Call<Allergy> createAllergy(@Path("uuid") String uuid,
@Body AllergyCreate allergyCreate);

@POST("patient/{patientUuid}/allergy/{allergyUuid}")
Call<Allergy> updateAllergy(@Path("patientUuid") String patientUuid,
@Path("allergyUuid") String allergyUuid,
@Body AllergyCreate allergyCreate);
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,15 @@ public List<Allergy> getAllergyFromDatabase(String patientID) {
return allergyList;
}

public Allergy getAllergyByUUID(String allergyUuid) {
AllergyEntity allergyEntity = allergyRoomDAO.getAllergyByUUID(allergyUuid);
if (allergyEntity != null) {
return AppDatabaseHelper.convert(allergyEntity);
} else {
return null;
}
}

public void deleteAllergy(RestApi restApi, String patientUuid, String allergyUuid, DefaultResponseCallback callback) {
if (NetworkUtils.isOnline()) {
restApi.deleteAllergy(patientUuid, allergyUuid).enqueue(new Callback<ResponseBody>() {
Expand Down Expand Up @@ -201,4 +210,25 @@ public void onFailure(Call<Allergy> call, Throwable t) {
}
});
}

public void updateAllergy(String patientUuid, String allergyUuid, Long id, AllergyCreate allergyCreate, DefaultResponseCallback callback) {
restApi.updateAllergy(patientUuid, allergyUuid, allergyCreate).enqueue(new Callback<Allergy>() {
@Override
public void onResponse(Call<Allergy> call, Response<Allergy> response) {
if (response.isSuccessful()) {
callback.onResponse();
AllergyEntity allergyEntity = AppDatabaseHelper.convert(response.body(), patientID);
allergyEntity.setId(id);
allergyRoomDAO.updateAllergy(allergyEntity);
} else {
callback.onErrorResponse(OpenMRS.getInstance().getString(R.string.error_creating_allergy));
}
}

@Override
public void onFailure(Call<Allergy> call, Throwable t) {
callback.onErrorResponse(t.getMessage());
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ public interface AllergyRoomDAO {
@Query("SELECT * FROM allergy WHERE patientId = :patientId")
List<AllergyEntity> getAllAllergiesByPatientID(String patientId);

@Query("SELECT * FROM allergy WHERE uuid = :uuid")
AllergyEntity getAllergyByUUID(String uuid);

@Query("DELETE FROM allergy WHERE patientId = :patientId")
void deleteAllPatientAllergy(String patientId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,7 @@ object AppDatabaseHelper {
}
allergyEntity.allergenDisplay = allergy.allergen!!.codedAllergen!!.display
allergyEntity.allergenUUID = allergy.allergen!!.codedAllergen!!.uuid
allergyEntity.allergenType = allergy.allergen!!.allergenType
allergyEntity.allergyReactions = allergy.reactions
return allergyEntity
}
Expand All @@ -291,7 +292,8 @@ object AppDatabaseHelper {
return allergies
}

private fun convert(allergyEntity: AllergyEntity): Allergy {
@JvmStatic
fun convert(allergyEntity: AllergyEntity): Allergy {
val allergy = Allergy()
allergy.id = allergyEntity.id
allergy.uuid = allergyEntity.uuid
Expand All @@ -302,6 +304,7 @@ object AppDatabaseHelper {
allergy.reactions = ArrayList()
}
val allergen = Allergen()
allergen.allergenType = allergyEntity.allergenType
allergen.codedAllergen = Resource(allergyEntity.allergenUUID!!, allergyEntity.allergenDisplay!!, ArrayList(), 1)
allergy.allergen = allergen
if (allergyEntity.severityDisplay != null) {
Expand Down
Loading