Skip to content

Commit 4526864

Browse files
committed
fix check healthfacility on first connection
1 parent f3c2214 commit 4526864

5 files changed

Lines changed: 108 additions & 44 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
query GetFosa($code: String){
2+
healthFacilities(code: $code) {
3+
edges {
4+
node {
5+
id
6+
code
7+
name
8+
}
9+
}
10+
}
11+
}

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

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.openimis.imisclaims.domain.entity.SubServiceItem;
4848
import org.openimis.imisclaims.network.exception.HttpException;
4949
import org.openimis.imisclaims.tools.Log;
50+
import org.openimis.imisclaims.usecase.CheckHealthFacility;
5051
import org.openimis.imisclaims.usecase.FetchClaimAdmin;
5152
import org.openimis.imisclaims.usecase.FetchClaimAdmins;
5253
import org.openimis.imisclaims.usecase.FetchControls;
@@ -556,7 +557,7 @@ public void validateClaimAdminCode(final String claimAdminCode) {
556557
if (c.getCount() == 0) {
557558
try {
558559
progressDialog.dismiss();
559-
doLoggedIn(() -> CheckFosaValidity(claimAdminCode));
560+
doLoggedIn(() -> CheckHealthFacility(claimAdminCode, HealthFacilityName));
560561
} catch (Exception e) {
561562
e.printStackTrace();
562563
}
@@ -567,19 +568,20 @@ public void validateClaimAdminCode(final String claimAdminCode) {
567568
}
568569
}
569570

570-
public void CheckFosaValidity (String claimAdminCode){
571+
public void CheckHealthFacility (String claimAdminCode, String HfCode){
571572
String progress_message = getResources().getString(R.string.checkHfValidity);
572573
progressDialog = ProgressDialog.show(this, getResources().getString(R.string.application), progress_message);
573574
Thread thread = new Thread() {
574575
public void run() {
575576
try {
576-
new FetchClaimAdmin().execute(claimAdminCode);
577-
runOnUiThread(() -> {
578-
progressDialog.dismiss();
579-
DownLoadDiagnosesServicesItems(claimAdminCode);
580-
});
581-
} catch (HttpException e){
582-
if(e.getCode() == HttpURLConnection.HTTP_NOT_FOUND){
577+
boolean isValidHealthFacility = new CheckHealthFacility().execute(HfCode);
578+
Log.e("is valid", String.valueOf(isValidHealthFacility));
579+
if(isValidHealthFacility){
580+
runOnUiThread(() -> {
581+
progressDialog.dismiss();
582+
DownLoadDiagnosesServicesItems(claimAdminCode);
583+
});
584+
} else {
583585
runOnUiThread(() -> {
584586
progressDialog.dismiss();
585587
Toast.makeText(MainActivity.this, getResources().getString(R.string.InvalidHealthFacility), Toast.LENGTH_LONG).show();
@@ -618,46 +620,50 @@ public void run() {
618620

619621
if (officerCode != null) {
620622
PaymentList paymentList = new FetchPaymentList().execute(officerCode);
621-
String servicesPricelistUuid = paymentList.getServicesPricelistUuid();
622623
Date date = Calendar.getInstance().getTime();
623-
List<Service> services = new FetchServices().execute(servicesPricelistUuid, date);
624-
// insert services
625-
for (Service service: services) {
626-
sqlHandler.InsertService(service.getId(),
627-
service.getCode(),
628-
service.getName(), "S",
629-
String.valueOf(service.getPrice()),
630-
service.getPackageType(),
631-
service.getManualPrice()
632-
);
633-
sqlHandler.InsertReferences(service.getCode(), service.getName(), "S", String.valueOf(service.getPrice()));
634-
sqlHandler.InsertMapping(service.getCode(), service.getName(), "S");
635-
636-
if (service.getSubServices() != null && !service.getSubServices().isEmpty()) {
637-
List<SubServiceItem> subServices = service.getSubServices();
638-
for (SubServiceItem subService: subServices) {
639-
sqlHandler.InsertSubServices(subService.getId(),
640-
service.getId(),String.valueOf(subService.getQty()),subService.getPrice());
624+
if(paymentList.getServicesPricelistUuid() != null && !paymentList.getServicesPricelistUuid().isEmpty()){
625+
List<Service> services = new FetchServices().execute(paymentList.getServicesPricelistUuid(), date);
626+
627+
// insert services
628+
for (Service service: services) {
629+
sqlHandler.InsertService(service.getId(),
630+
service.getCode(),
631+
service.getName(), "S",
632+
String.valueOf(service.getPrice()),
633+
service.getPackageType(),
634+
service.getManualPrice()
635+
);
636+
sqlHandler.InsertReferences(service.getCode(), service.getName(), "S", String.valueOf(service.getPrice()));
637+
sqlHandler.InsertMapping(service.getCode(), service.getName(), "S");
638+
639+
if (service.getSubServices() != null && !service.getSubServices().isEmpty()) {
640+
List<SubServiceItem> subServices = service.getSubServices();
641+
for (SubServiceItem subService: subServices) {
642+
sqlHandler.InsertSubServices(subService.getId(),
643+
service.getId(),String.valueOf(subService.getQty()),subService.getPrice());
644+
}
641645
}
642-
}
643-
//insert subItems
644-
if (service.getSubItems() != null && !service.getSubItems().isEmpty()) {
645-
List<SubServiceItem> subItems = service.getSubItems();
646-
for (SubServiceItem subItem: subItems) {
647-
sqlHandler.InsertSubItems(subItem.getId(),
648-
service.getId(), String.valueOf(subItem.getQty()),subItem.getPrice());
646+
//insert subItems
647+
if (service.getSubItems() != null && !service.getSubItems().isEmpty()) {
648+
List<SubServiceItem> subItems = service.getSubItems();
649+
for (SubServiceItem subItem: subItems) {
650+
sqlHandler.InsertSubItems(subItem.getId(),
651+
service.getId(), String.valueOf(subItem.getQty()),subItem.getPrice());
652+
}
649653
}
650654
}
651655
}
652656

653-
String itemsPriceListUuid = paymentList.getItemsPricelistUuid();
654-
List<Medication> medications = new FetchMedications().execute(itemsPriceListUuid, date);
655-
//insert medications or items
656-
for (Medication medication : medications) {
657-
sqlHandler.InsertReferences(medication.getCode(), medication.getName(), "I", String.valueOf(medication.getPrice()));
658-
sqlHandler.InsertMapping(medication.getCode(), medication.getName(), "I");
659-
sqlHandler.InsertItem(medication.getId(),medication.getCode(),medication.getName(), "I", String.valueOf(medication.getPrice()));
657+
if(paymentList.getItemsPricelistUuid() != null && !paymentList.getItemsPricelistUuid().isEmpty()){
658+
List<Medication> medications = new FetchMedications().execute(paymentList.getItemsPricelistUuid(), date);
659+
//insert medications or items
660+
for (Medication medication : medications) {
661+
sqlHandler.InsertReferences(medication.getCode(), medication.getName(), "I", String.valueOf(medication.getPrice()));
662+
sqlHandler.InsertMapping(medication.getCode(), medication.getName(), "I");
663+
sqlHandler.InsertItem(medication.getId(),medication.getCode(),medication.getName(), "I", String.valueOf(medication.getPrice()));
664+
}
660665
}
666+
661667
}
662668

663669
List<HealthFacility> healthFacilities = new FetchHealthFacilities().execute();
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.openimis.imisclaims.network.request;
2+
3+
import androidx.annotation.NonNull;
4+
import androidx.annotation.WorkerThread;
5+
6+
import com.apollographql.apollo.api.Input;
7+
8+
import org.openimis.imisclaims.GetFosaQuery;
9+
10+
import java.util.List;
11+
12+
public class GetFosaGraphQLRequest extends BaseGraphQLRequest {
13+
14+
@NonNull
15+
@WorkerThread
16+
public List<GetFosaQuery.Edge> get (@NonNull String HfCode) throws Exception {
17+
return makeSynchronous(new GetFosaQuery(Input.fromNullable(HfCode))).getData().healthFacilities().edges();
18+
}
19+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.openimis.imisclaims.usecase;
2+
3+
import androidx.annotation.NonNull;
4+
import androidx.annotation.WorkerThread;
5+
6+
import org.openimis.imisclaims.GetFosaQuery;
7+
import org.openimis.imisclaims.network.request.GetFosaGraphQLRequest;
8+
9+
import java.util.List;
10+
11+
public class CheckHealthFacility {
12+
13+
@NonNull
14+
private final GetFosaGraphQLRequest request;
15+
16+
public CheckHealthFacility(){this(new GetFosaGraphQLRequest());}
17+
18+
public CheckHealthFacility(@NonNull GetFosaGraphQLRequest request){
19+
this.request = request;
20+
}
21+
22+
@WorkerThread
23+
@NonNull
24+
public boolean execute(String HfCode) throws Exception {
25+
List<GetFosaQuery.Edge> response = request.get(HfCode);
26+
return !response.isEmpty();
27+
}
28+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public PaymentList execute(@NonNull String claimAdministratorCode) throws Except
3939
/* healthFacilityCode = */ healthFacility.code(),
4040
/* services = */ services != null ? Mapper.map(services.details().edges(), dto -> toService(dto)) : Collections.emptyList(),
4141
/* medications = */ medications != null ? Mapper.map(medications.details().edges(), this::toMedication) : Collections.emptyList(),
42-
/* servicePriceListUuid = */ healthFacility.servicesPricelist().uuid(),
43-
/* servicePriceListUuid = */ healthFacility.itemsPricelist().uuid()
42+
/* servicePriceListUuid = */ healthFacility.servicesPricelist() != null ? healthFacility.servicesPricelist().uuid() : "",
43+
/* servicePriceListUuid = */ healthFacility.itemsPricelist() != null ? healthFacility.itemsPricelist().uuid() : ""
4444
);
4545
}
4646

0 commit comments

Comments
 (0)