Skip to content

Commit 8dc819a

Browse files
authored
Merge pull request #99 from mngoe/OP-2523
Filter services & items from the user healthfacility
2 parents 2db7922 + d0e7ab0 commit 8dc819a

File tree

10 files changed

+134
-221
lines changed

10 files changed

+134
-221
lines changed

claimManagement/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ android {
2727
minSdkVersion 26
2828
targetSdkVersion 32
2929
versionCode 4
30-
versionName "2.0.1"
30+
versionName "2.0.5"
3131
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
3232
}
3333
buildTypes {

claimManagement/src/main/graphql/org.openimis.imisclaim/GetPaymentList.graphql

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,32 @@ query GetPaymentList($claim_administrator_code: String) {
1010
edges {
1111
node {
1212
service {
13+
id
1314
code
1415
name
1516
price
17+
packagetype
18+
type
19+
careType
20+
manualPrice
21+
serviceserviceSet {
22+
service {
23+
id
24+
code
25+
name
26+
}
27+
qtyProvided
28+
priceAsked
29+
}
30+
servicesLinked {
31+
item {
32+
id
33+
code
34+
name
35+
}
36+
qtyProvided
37+
priceAsked
38+
}
1639
}
1740
}
1841
}
@@ -23,6 +46,7 @@ query GetPaymentList($claim_administrator_code: String) {
2346
edges {
2447
node {
2548
item {
49+
id
2650
code
2751
name
2852
price

claimManagement/src/main/graphql/org.openimis.imisclaim/GetServices.graphql

Lines changed: 0 additions & 37 deletions
This file was deleted.

claimManagement/src/main/java/org/openimis/imisclaims/MainActivity.java

Lines changed: 44 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@
5050
import org.openimis.imisclaims.usecase.FetchControls;
5151
import org.openimis.imisclaims.usecase.FetchDiagnosesServicesItems;
5252
import org.openimis.imisclaims.usecase.FetchHealthfacilities;
53-
import org.openimis.imisclaims.usecase.FetchMedications;
5453
import org.openimis.imisclaims.usecase.FetchPaymentList;
55-
import org.openimis.imisclaims.usecase.FetchServices;
5654

5755
import java.io.File;
5856
import java.io.FileOutputStream;
@@ -551,7 +549,7 @@ public void validateClaimAdminCode(final String claimAdminCode) {
551549
if (c.getCount() == 0) {
552550
try {
553551
progressDialog.dismiss();
554-
doLoggedIn(() -> DownLoadDiagnosesServicesItems(null));
552+
doLoggedIn(() -> DownLoadDiagnosesServicesItems(claimAdminCode));
555553
} catch (Exception e) {
556554
e.printStackTrace();
557555
}
@@ -573,25 +571,54 @@ public void run() {
573571
saveLastUpdateDate(diagnosesServicesMedications.getLastUpdated());
574572
sqlHandler.ClearAll("tblReferences");
575573
sqlHandler.ClearAll("tblHealthFacilities");
574+
sqlHandler.ClearAll("tblServices");
575+
sqlHandler.ClearAll("tblSubServices");
576+
sqlHandler.ClearAll("tblSubItems");
577+
sqlHandler.ClearAll("tblItems");
576578
sqlHandler.ClearMapping("S");
577579
sqlHandler.ClearMapping("I");
578580
//Insert Diagnoses
579581
for (Diagnosis diagnosis : diagnosesServicesMedications.getDiagnoses()) {
580582
sqlHandler.InsertReferences(diagnosis.getCode(), diagnosis.getName(), "D", "");
581583
}
582584

583-
//Insert Services
584-
for (Service service : diagnosesServicesMedications.getServices()) {
585-
sqlHandler.InsertReferences(service.getCode(), service.getName(), "S", String.valueOf(service.getPrice()));
586-
sqlHandler.InsertMapping(service.getCode(), service.getName(), "S");
587-
}
585+
if (officerCode != null) {
586+
PaymentList paymentList = new FetchPaymentList().execute(officerCode);
587+
// insert services
588+
for (Service service : paymentList.getServices()) {
589+
sqlHandler.InsertService(service.getId(),
590+
service.getCode(),
591+
service.getName(), "S",
592+
String.valueOf(service.getPrice()),
593+
service.getPackageType(),
594+
service.getManualPrice()
595+
);
596+
sqlHandler.InsertReferences(service.getCode(), service.getName(), "S", String.valueOf(service.getPrice()));
597+
sqlHandler.InsertMapping(service.getCode(), service.getName(), "S");
598+
599+
if (service.getSubServices() != null && !service.getSubServices().isEmpty()) {
600+
List<SubServiceItem> subServices = service.getSubServices();
601+
for (SubServiceItem subService : subServices) {
602+
sqlHandler.InsertSubServices(subService.getId(),
603+
service.getId(), String.valueOf(subService.getQty()), subService.getPrice());
604+
}
605+
}
606+
//insert subItems
607+
if (service.getSubItems() != null && !service.getSubItems().isEmpty()) {
608+
List<SubServiceItem> subItems = service.getSubItems();
609+
for (SubServiceItem subItem : subItems) {
610+
sqlHandler.InsertSubItems(subItem.getId(),
611+
service.getId(), String.valueOf(subItem.getQty()), subItem.getPrice());
612+
}
613+
}
614+
}
588615

589-
//Insert Items
590-
List<Medication> medications = new FetchMedications().execute();
591-
for (Medication medication : medications) {
592-
sqlHandler.InsertReferences(medication.getCode(), medication.getName(), "I", String.valueOf(medication.getPrice()));
593-
sqlHandler.InsertMapping(medication.getCode(), medication.getName(), "I");
594-
sqlHandler.InsertItem(medication.getId(),medication.getCode(),medication.getName(), "I", String.valueOf(medication.getPrice()));
616+
//insert Items
617+
for (Medication medication : paymentList.getMedications()) {
618+
sqlHandler.InsertReferences(medication.getCode(), medication.getName(), "I", String.valueOf(medication.getPrice()));
619+
sqlHandler.InsertMapping(medication.getCode(), medication.getName(), "I");
620+
sqlHandler.InsertItem(medication.getId(),medication.getCode(),medication.getName(), "I", String.valueOf(medication.getPrice()));
621+
}
595622
}
596623

597624
List<HealthFacility> healthFacilities = new FetchHealthfacilities().execute();
@@ -601,7 +628,9 @@ public void run() {
601628

602629
runOnUiThread(() -> {
603630
progressDialog.dismiss();
604-
downloadServices(officerCode);
631+
if (officerCode != null) {
632+
DownLoadServicesItemsPriceList(officerCode);
633+
}
605634
});
606635
} catch (Exception e) {
607636
e.printStackTrace();
@@ -737,63 +766,4 @@ public void onAllRequirementsMet() {
737766
}
738767
refreshCount();
739768
}
740-
741-
public void downloadServices(@Nullable final String officerCode) {
742-
if (global.isNetworkAvailable()) {
743-
String progress_message = getResources().getString(R.string.Services);
744-
progressDialog = ProgressDialog.show(this, getResources().getString(R.string.initializing), progress_message);
745-
Thread thread = new Thread(() ->{
746-
try {
747-
List<Service> services = new FetchServices().execute();
748-
if (!services.isEmpty()) {
749-
sqlHandler.ClearAll("tblServices");
750-
sqlHandler.ClearAll("tblSubServices");
751-
sqlHandler.ClearAll("tblSubItems");
752-
for (Service service: services) {
753-
sqlHandler.InsertService(service.getId(),
754-
service.getCode(),
755-
service.getName(), "S",
756-
String.valueOf(service.getPrice()),
757-
service.getPackageType(),
758-
service.getManualPrice());
759-
760-
if (service.getSubServices() != null && !service.getSubServices().isEmpty()) {
761-
List<SubServiceItem> subServices = service.getSubServices();
762-
for (SubServiceItem subService: subServices) {
763-
sqlHandler.InsertSubServices(subService.getId(),
764-
service.getId(),String.valueOf(subService.getQty()),subService.getPrice());
765-
}
766-
}
767-
//insert subItems
768-
if (service.getSubItems() != null && !service.getSubItems().isEmpty()) {
769-
List<SubServiceItem> subItems = service.getSubItems();
770-
for (SubServiceItem subItem: subItems) {
771-
sqlHandler.InsertSubItems(subItem.getId(),
772-
service.getId(), String.valueOf(subItem.getQty()),subItem.getPrice());
773-
}
774-
}
775-
}
776-
runOnUiThread(() -> {
777-
progressDialog.dismiss();
778-
Toast.makeText(MainActivity.this, getResources().getString(R.string.installed_updates), Toast.LENGTH_LONG).show();
779-
if (officerCode != null) {
780-
DownLoadServicesItemsPriceList(officerCode);
781-
}
782-
});
783-
} else {
784-
runOnUiThread(() -> {
785-
progressDialog.dismiss();
786-
Toast.makeText(MainActivity.this, getResources().getString(R.string.downloadFail), Toast.LENGTH_LONG).show();
787-
});
788-
}
789-
} catch ( Exception e) {
790-
e.printStackTrace();
791-
runOnUiThread(() -> progressDialog.dismiss());
792-
}
793-
});
794-
thread.start();
795-
}else{
796-
ErrorDialogBox(getResources().getString(R.string.CheckInternet));
797-
}
798-
}
799769
}

claimManagement/src/main/java/org/openimis/imisclaims/MapItems.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,11 @@ protected void publishResults(CharSequence constraint, FilterResults results) {
361361

362362
//FilteredList = new ArrayList<HashMap<String, Object>>();
363363
//FilteredList.clear();
364-
for (int i = 0; i < ItemList.size(); i++) {
365-
MapItems.this.ItemsList.add(ItemList.get(i));
366-
notifyDataSetInvalidated();
364+
if(ItemList != null){
365+
for (int i = 0; i < ItemList.size(); i++) {
366+
MapItems.this.ItemsList.add(ItemList.get(i));
367+
notifyDataSetInvalidated();
368+
}
367369
}
368370

369371
}

claimManagement/src/main/java/org/openimis/imisclaims/MapServices.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,9 +354,11 @@ protected void publishResults(CharSequence constraint, FilterResults results) {
354354

355355
//FilteredList = new ArrayList<HashMap<String, Object>>();
356356
//FilteredList.clear();
357-
for (int i = 0; i < ItemList.size(); i++) {
358-
MapServices.this.ServiceList.add(ItemList.get(i));
359-
notifyDataSetInvalidated();
357+
if(ItemList != null){
358+
for (int i = 0; i < ItemList.size(); i++) {
359+
MapServices.this.ServiceList.add(ItemList.get(i));
360+
notifyDataSetInvalidated();
361+
}
360362
}
361363

362364
}

claimManagement/src/main/java/org/openimis/imisclaims/network/request/GetServicesGraphqlRequest.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

claimManagement/src/main/java/org/openimis/imisclaims/usecase/FetchPaymentList.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import org.openimis.imisclaims.domain.entity.Medication;
88
import org.openimis.imisclaims.domain.entity.PaymentList;
99
import org.openimis.imisclaims.domain.entity.Service;
10+
import org.openimis.imisclaims.domain.entity.SubServiceItem;
1011
import org.openimis.imisclaims.network.request.GetPaymentListGraphQLRequest;
1112
import org.openimis.imisclaims.network.util.Mapper;
13+
import org.openimis.imisclaims.util.IdUtils;
1214

1315
import java.util.Collections;
1416
import java.util.Objects;
@@ -35,32 +37,60 @@ public PaymentList execute(@NonNull String claimAdministratorCode) throws Except
3537
GetPaymentListQuery.HealthFacility healthFacility = Objects.requireNonNull(node.healthFacility());
3638
GetPaymentListQuery.ServicesPricelist services = healthFacility.servicesPricelist();
3739
GetPaymentListQuery.ItemsPricelist medications = healthFacility.itemsPricelist();
40+
Mapper<GetPaymentListQuery.ServiceserviceSet, SubServiceItem> subServiceMapper = new Mapper<>(this::toSubService);
41+
Mapper<GetPaymentListQuery.ServicesLinked, SubServiceItem> subItemMapper = new Mapper<>(this::toSubItem);
3842
return new PaymentList(
3943
/* healthFacilityCode = */ healthFacility.code(),
40-
/* services = */ services != null ? Mapper.map(services.details().edges(), this::toService) : Collections.emptyList(),
44+
/* services = */ services != null ? Mapper.map(services.details().edges(), dto -> toService(dto,subServiceMapper, subItemMapper)) : Collections.emptyList(),
4145
/* medications = */ medications != null ? Mapper.map(medications.details().edges(), this::toMedication) : Collections.emptyList()
4246
);
4347
}
4448

4549
@NonNull
46-
private Service toService(@NonNull GetPaymentListQuery.Edge1 edge) {
50+
private Service toService(
51+
@NonNull GetPaymentListQuery.Edge1 edge,
52+
@NonNull Mapper<GetPaymentListQuery.ServiceserviceSet, SubServiceItem> subServiceMapper,
53+
@NonNull Mapper<GetPaymentListQuery.ServicesLinked, SubServiceItem> subItemMapper
54+
) {
4755
GetPaymentListQuery.Service service = Objects.requireNonNull(edge.node()).service();
4856
return new Service(
57+
/* id = */ String.valueOf(IdUtils.getIdFromGraphQLString(service.id())),
4958
/* code = */ service.code(),
5059
/* name = */ service.name(),
5160
/* price = */ service.price(),
52-
/* currency = */ "$"
61+
/* currency = */ "$",
62+
/* packageType = */ service.packagetype(),
63+
/* manualPrice = */ service.manualPrice() ? 1 : 0,
64+
/* subServices = */ subServiceMapper.map(service.serviceserviceSet()),
65+
/* subItems = */ subItemMapper.map(service.servicesLinked())
5366
);
5467
}
5568

5669
@NonNull
5770
private Medication toMedication(@NonNull GetPaymentListQuery.Edge2 edge) {
58-
GetPaymentListQuery.Item item = Objects.requireNonNull(edge.node()).item();
71+
GetPaymentListQuery.Item1 item = Objects.requireNonNull(edge.node()).item();
5972
return new Medication(
73+
/* id = */ String.valueOf(IdUtils.getIdFromGraphQLString(item.id())),
6074
/* code = */ item.code(),
6175
/* name = */ item.name(),
6276
/* price = */ item.price(),
6377
/* currency = */ "$"
6478
);
6579
}
80+
81+
private SubServiceItem toSubService(@NonNull GetPaymentListQuery.ServiceserviceSet service) {
82+
return new SubServiceItem(
83+
/* id = */ String.valueOf(IdUtils.getIdFromGraphQLString(service.service().id())),
84+
/* quantity = */ service.qtyProvided(),
85+
/* price = */ service.priceAsked()
86+
);
87+
}
88+
89+
private SubServiceItem toSubItem(@NonNull GetPaymentListQuery.ServicesLinked item) {
90+
return new SubServiceItem(
91+
/* id = */ String.valueOf(IdUtils.getIdFromGraphQLString(item.item().id())),
92+
/* quantity = */ item.qtyProvided(),
93+
/* price = */ item.priceAsked()
94+
);
95+
}
6696
}

0 commit comments

Comments
 (0)