Skip to content

Commit d831834

Browse files
authored
Merge pull request #21 from mngoe/feature-29997
Feature 29997
2 parents 639f618 + 93e9648 commit d831834

12 files changed

Lines changed: 358 additions & 7 deletions

File tree

claimManagement/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ android {
8181
comoresDev{
8282
applicationIdSuffix ".comoresDev"
8383
resValue "string", "app_name_claims", "Claims Comores"
84-
buildConfigField "String", "API_BASE_URL", '"https://test.amg.km/"'
84+
buildConfigField "String", "API_BASE_URL", '"https://dev.amg.km/"'
8585
dimension 'std'
8686
}
8787

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
query GetHealthFacility ($offset: Int){
2+
healthFacilities(offset: $offset) {
3+
pageInfo {
4+
hasNextPage
5+
}
6+
edges {
7+
node {
8+
id
9+
code
10+
name
11+
}
12+
}
13+
}
14+
}

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

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import android.view.View;
1515
import android.widget.AutoCompleteTextView;
1616
import android.widget.Button;
17+
import android.widget.CheckBox;
1718
import android.widget.DatePicker;
1819
import android.widget.EditText;
1920
import android.widget.ImageButton;
@@ -67,12 +68,13 @@ public static Intent newIntent(@NonNull Context context, @NonNull String claimUU
6768
int TotalItemService;
6869

6970
EditText etStartDate, etEndDate, etClaimCode, etHealthFacility, etInsureeNumber, etClaimAdmin, etGuaranteeNo;
70-
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4;
71+
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4, etReferalHF;
7172
TextView tvItemTotal, tvServiceTotal;
7273
Button btnPost, btnNew;
73-
RadioGroup rgVisitType;
74-
RadioButton rbEmergency, rbReferral, rbOther;
74+
RadioGroup rgVisitType, rgPatientCondition;
75+
RadioButton rbEmergency, rbReferral, rbOther, rbHealed, rbDiseased, rbEscaped, rbReferal;
7576
ImageButton btnScan;
77+
CheckBox etPreAuthorization;
7678

7779
@Override
7880
protected void onCreate(Bundle savedInstanceState) {
@@ -109,6 +111,13 @@ protected void onCreate(Bundle savedInstanceState) {
109111
rbEmergency = findViewById(R.id.rbEmergency);
110112
rbReferral = findViewById(R.id.rbReferral);
111113
rbOther = findViewById(R.id.rbOther);
114+
etReferalHF = findViewById(R.id.etReferalHF);
115+
rgPatientCondition = findViewById(R.id.rgPatientCondition);
116+
rbDiseased = findViewById(R.id.rbDeceased);
117+
rbEscaped = findViewById(R.id.rbEscaped);
118+
rbHealed = findViewById(R.id.rbHealed);
119+
rbReferal = findViewById(R.id.rbReferal);
120+
etPreAuthorization = findViewById(R.id.etPreAuthorization);
112121

113122

114123
tvItemTotal.setText("0");
@@ -135,6 +144,13 @@ protected void onCreate(Bundle savedInstanceState) {
135144
etDiagnosis4.setThreshold(1);
136145
etDiagnosis4.setOnItemClickListener(adapter);
137146

147+
HFAdapter hfAdapter = new HFAdapter(ClaimActivity.this, sqlHandler);
148+
etReferalHF.setAdapter(hfAdapter);
149+
etReferalHF.setThreshold(1);
150+
etReferalHF.setOnItemClickListener(hfAdapter);
151+
152+
etPreAuthorization.setChecked(false);
153+
138154
etStartDate.setOnTouchListener((v, event) -> {
139155
showDialog(StartDate_Dialog_ID);
140156
return false;
@@ -373,7 +389,10 @@ private void ClearForm() {
373389
etDiagnosis2.setText("");
374390
etDiagnosis3.setText("");
375391
etDiagnosis4.setText("");
392+
etPreAuthorization.setChecked(false);
393+
etReferalHF.setText("");
376394
rgVisitType.clearCheck();
395+
rgPatientCondition.clearCheck();
377396
etClaimCode.requestFocus();
378397
}
379398

@@ -473,6 +492,7 @@ private void fillClaimFromRestore(Claim claim) {
473492
private void fillClaimFromDatabase(String claimUUID) {
474493
new Thread(() -> {
475494
JSONObject claimObject = sqlHandler.getClaim(claimUUID);
495+
Log.e("claim", claimObject.toString());
476496
if (claimObject == null) {
477497
showDialog(getResources().getString(R.string.ClaimNotFound), (dialog, which) -> finish());
478498
} else {
@@ -499,6 +519,13 @@ private void fillClaimFromDatabase(String claimUUID) {
499519
etDiagnosis2.setText(claimDetails.getString("ICDCode2"));
500520
etDiagnosis3.setText(claimDetails.getString("ICDCode3"));
501521
etDiagnosis4.setText(claimDetails.getString("ICDCode4"));
522+
etReferalHF.setText(claimDetails.getString("ReferalHF"));
523+
524+
if(claimDetails.getInt("PreAuthorization") == 1){
525+
etPreAuthorization.setChecked(true);
526+
}else{
527+
etPreAuthorization.setChecked(false);
528+
}
502529

503530
switch (claimDetails.getString("VisitType")) {
504531
case "E":
@@ -514,6 +541,23 @@ private void fillClaimFromDatabase(String claimUUID) {
514541
rgVisitType.clearCheck();
515542
}
516543

544+
switch (claimDetails.getString("PatientCondition")) {
545+
case "H":
546+
rgPatientCondition.check(R.id.rbHealed);
547+
break;
548+
case "D":
549+
rgPatientCondition.check(R.id.rbDeceased);
550+
break;
551+
case "E":
552+
rgPatientCondition.check(R.id.rbEscaped);
553+
break;
554+
case "R":
555+
rgPatientCondition.check(R.id.rbReferal);
556+
break;
557+
default:
558+
rgPatientCondition.clearCheck();
559+
}
560+
517561
lvItemList.clear();
518562
if (claimObject.has("items")) {
519563
JSONArray items = claimObject.getJSONArray("items");
@@ -693,6 +737,12 @@ private boolean saveClaim() {
693737
selectedTypeButton = findViewById(SelectedId);
694738
String visitType = selectedTypeButton.getTag().toString();
695739

740+
int PatientConditionId;
741+
PatientConditionId = rgPatientCondition.getCheckedRadioButtonId();
742+
RadioButton selectedPatientCondition;
743+
selectedPatientCondition = findViewById(PatientConditionId);
744+
String patientCondition = selectedPatientCondition.getTag().toString();
745+
696746
ContentValues claimCV = new ContentValues();
697747

698748
claimCV.put("ClaimUUID", claimUUID);
@@ -712,6 +762,14 @@ private boolean saveClaim() {
712762
claimCV.put("ICDCode3", etDiagnosis3.getText().toString());
713763
claimCV.put("ICDCode4", etDiagnosis4.getText().toString());
714764
claimCV.put("VisitType", visitType);
765+
claimCV.put("ReferalHF", etReferalHF.getText().toString());
766+
claimCV.put("PatientCondition", patientCondition);
767+
768+
if(etPreAuthorization.isChecked()){
769+
claimCV.put("PreAuthorization", 1);
770+
}else{
771+
claimCV.put("PreAuthorization", 0);
772+
}
715773

716774
ArrayList<ContentValues> claimItemCVs = new ArrayList<>(lvItemList.size());
717775
for (int i = 0; i < lvItemList.size(); i++) {
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.openimis.imisclaims;
2+
3+
import android.content.Context;
4+
import android.database.Cursor;
5+
import android.database.sqlite.SQLiteDatabase;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
import android.widget.AdapterView;
10+
import android.widget.CursorAdapter;
11+
import android.widget.TextView;
12+
13+
public class HFAdapter extends CursorAdapter implements AdapterView.OnItemClickListener {
14+
SQLHandler sqlHandler;
15+
SQLiteDatabase db;
16+
17+
public HFAdapter(Context context, SQLHandler sqlHandler) {
18+
super(context, null, 0);
19+
this.sqlHandler = sqlHandler;
20+
}
21+
22+
@Override
23+
public View newView(Context context, Cursor cursor, ViewGroup parent) {
24+
return LayoutInflater.from(context).inflate(R.layout.hf_list, parent, false);
25+
}
26+
27+
@Override
28+
public void bindView(View view, Context context, Cursor cursor) {
29+
final int itemColumnIndex = cursor.getColumnIndexOrThrow("Code");
30+
final int descColumnIndex = cursor.getColumnIndexOrThrow("Name");
31+
String Suggestion = cursor.getString(itemColumnIndex) + " " + cursor.getString(descColumnIndex);
32+
TextView text1 = view.findViewById(R.id.textHF);
33+
text1.setText(Suggestion);
34+
35+
}
36+
37+
@Override
38+
public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
39+
if (getFilterQueryProvider() != null) {
40+
return getFilterQueryProvider().runQuery(constraint);
41+
}
42+
43+
return sqlHandler.SearchHF((constraint != null ? constraint.toString() : ""));
44+
}
45+
46+
@Override
47+
public CharSequence convertToString(Cursor c) {
48+
return c.getString(c.getColumnIndexOrThrow("Code"));
49+
}
50+
51+
52+
@Override
53+
public void onItemClick(AdapterView<?> listView, View view, int position, long id) {
54+
}
55+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.openimis.imisclaims.domain.entity.Control;
4141
import org.openimis.imisclaims.domain.entity.DiagnosesServicesMedications;
4242
import org.openimis.imisclaims.domain.entity.Diagnosis;
43+
import org.openimis.imisclaims.domain.entity.HealthFacility;
4344
import org.openimis.imisclaims.domain.entity.Medication;
4445
import org.openimis.imisclaims.domain.entity.PaymentList;
4546
import org.openimis.imisclaims.domain.entity.Service;
@@ -48,6 +49,7 @@
4849
import org.openimis.imisclaims.usecase.FetchClaimAdmins;
4950
import org.openimis.imisclaims.usecase.FetchControls;
5051
import org.openimis.imisclaims.usecase.FetchDiagnosesServicesItems;
52+
import org.openimis.imisclaims.usecase.FetchHealthFacilities;
5153
import org.openimis.imisclaims.usecase.FetchMedications;
5254
import org.openimis.imisclaims.usecase.FetchPaymentList;
5355
import org.openimis.imisclaims.usecase.FetchServices;
@@ -570,6 +572,7 @@ public void run() {
570572
DiagnosesServicesMedications diagnosesServicesMedications = new FetchDiagnosesServicesItems().execute();
571573
saveLastUpdateDate(diagnosesServicesMedications.getLastUpdated());
572574
sqlHandler.ClearAll("tblReferences");
575+
sqlHandler.ClearAll("tblHealthFacilities");
573576
sqlHandler.ClearMapping("S");
574577
sqlHandler.ClearMapping("I");
575578
//Insert Diagnoses
@@ -591,6 +594,11 @@ public void run() {
591594
sqlHandler.InsertItem(medication.getId(),medication.getCode(),medication.getName(), "I", String.valueOf(medication.getPrice()));
592595
}
593596

597+
List<HealthFacility> healthFacilities = new FetchHealthFacilities().execute();
598+
for(HealthFacility hf: healthFacilities) {
599+
sqlHandler.InsertHealthFacilities(hf.getId(), hf.getCode(), hf.getName());
600+
}
601+
594602
runOnUiThread(() -> {
595603
progressDialog.dismiss();
596604
downloadServices(officerCode);

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

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,15 @@ public class SQLHandler extends SQLiteOpenHelper {
4040
private static final String CreateTableControls = "CREATE TABLE IF NOT EXISTS tblControls(FieldName TEXT, Adjustability TEXT);";
4141
private static final String CreateTableClaimAdmins = "CREATE TABLE IF NOT EXISTS tblClaimAdmins(Code TEXT, HFCode TEXT ,Name TEXT);";
4242
private static final String CreateTableReferences = "CREATE TABLE IF NOT EXISTS tblReferences(Code TEXT, Name TEXT, Type TEXT, Price TEXT);";
43-
private static final String createTableClaimDetails = "CREATE TABLE IF NOT EXISTS tblClaimDetails(ClaimUUID TEXT, ClaimDate TEXT, HFCode TEXT, ClaimAdmin TEXT, ClaimCode TEXT, GuaranteeNumber TEXT, InsureeNumber TEXT, StartDate TEXT, EndDate TEXT, ICDCode TEXT, Comment TEXT, Total TEXT, ICDCode1 TEXT, ICDCode2 TEXT, ICDCode3 TEXT, ICDCode4 TEXT, VisitType TEXT);";
43+
private static final String createTableClaimDetails = "CREATE TABLE IF NOT EXISTS tblClaimDetails(ClaimUUID TEXT, ClaimDate TEXT, HFCode TEXT, ClaimAdmin TEXT, ClaimCode TEXT, GuaranteeNumber TEXT, InsureeNumber TEXT, StartDate TEXT, EndDate TEXT, ICDCode TEXT, Comment TEXT, Total TEXT, ICDCode1 TEXT, ICDCode2 TEXT, ICDCode3 TEXT, ICDCode4 TEXT, VisitType TEXT, ReferalHF TEXT, PatientCondition TEXT,PreAuthorization Int );";
4444
private static final String createTableClaimItems = "CREATE TABLE IF NOT EXISTS tblClaimItems(ClaimUUID TEXT, ItemCode TEXT, ItemPrice TEXT, ItemQuantity TEXT);";
4545
private static final String createTableClaimServices = "CREATE TABLE IF NOT EXISTS tblClaimServices(ClaimUUID TEXT, ServiceCode TEXT, ServicePrice TEXT, ServiceQuantity TEXT, ServicePackageType TEXT, SubServicesItems TEXT);";
4646
private static final String createTableClaimUploadStatus = "CREATE TABLE IF NOT EXISTS tblClaimUploadStatus(ClaimUUID TEXT, UploadDate TEXT, UploadStatus TEXT, UploadMessage TEXT);";
4747
private static final String CreateTableServices = "CREATE TABLE IF NOT EXISTS tblServices(Id text, Code text, Name text, Type text, Price text, PackageType text);";
4848
private static final String CreateTableItems = "CREATE TABLE IF NOT EXISTS tblItems(Id text, Code text, Name text, Type text, Price text);";
4949
private static final String CreateTableSubServices = "CREATE TABLE IF NOT EXISTS tblSubServices(ServiceId text, ServiceLinked text, Quantity text, Price text);";
5050
private static final String CreateTableSubItems = "CREATE TABLE IF NOT EXISTS tblSubItems(ItemId text, ServiceId text, Quantity text, Price text);";
51+
private static final String CreateTableHealthFacilities = "CREATE TABLE IF NOT EXISTS tblHealthFacilities(Id TEXT, Code TEXT, Name TEXT);";
5152

5253
public final String REFERENCE_UNKNOWN;
5354

@@ -198,6 +199,15 @@ public Cursor SearchDisease(String InputText) {
198199
return c;
199200
}
200201

202+
public Cursor SearchHF(String InputText) {
203+
Cursor c = db.rawQuery("SELECT Code as _id,Code, Name FROM tblHealthFacilities WHERE Code LIKE '%" + InputText + "%' OR Name LIKE '%" + InputText + "%'", null);
204+
if (c != null) {
205+
c.moveToFirst();
206+
}
207+
208+
return c;
209+
}
210+
201211
public String getDiseaseCode(String disease) {
202212
String code = "";
203213
try {
@@ -321,7 +331,7 @@ public void createTables() {
321331
String[] commands = {CreateTableControls, CreateTableReferences, CreateTableClaimAdmins,
322332
createTablePolicyInquiry, createTableClaimDetails, createTableClaimItems, createTableClaimServices,
323333
createTableClaimUploadStatus, CreateTableSubItems,
324-
CreateTableSubServices,CreateTableItems,CreateTableServices};
334+
CreateTableSubServices,CreateTableItems,CreateTableServices, CreateTableHealthFacilities};
325335
for (String command : commands) {
326336
try {
327337
db.execSQL(command);
@@ -421,7 +431,7 @@ public void deleteClaim(String claimUUID) {
421431

422432
public JSONObject getClaim(String claimUUID) {
423433
JSONArray claimDetails = getQueryResultAsJsonArray("tblClaimDetails",
424-
new String[]{"ClaimUUID", "ClaimDate", "HFCode", "ClaimAdmin", "ClaimCode", "GuaranteeNumber", "InsureeNumber", "StartDate", "EndDate", "ICDCode", "Comment", "Total", "ICDCode1", "ICDCode2", "ICDCode3", "ICDCode4", "VisitType"},
434+
new String[]{"ClaimUUID", "ClaimDate", "HFCode", "ClaimAdmin", "ClaimCode", "GuaranteeNumber", "InsureeNumber", "StartDate", "EndDate", "ICDCode", "Comment", "Total", "ICDCode1", "ICDCode2", "ICDCode3", "ICDCode4", "VisitType", "ReferalHF", "PatientCondition", "PreAuthorization"},
425435
"LOWER(ClaimUUID) = ?",
426436
new String[]{claimUUID.toLowerCase(Locale.ROOT)});
427437

@@ -890,4 +900,16 @@ public JSONObject getItem(String itemId) {
890900
}
891901
return resultSet;
892902
}
903+
904+
public void InsertHealthFacilities(String Id, String Code, String Name) {
905+
try {
906+
ContentValues cv = new ContentValues();
907+
cv.put("Id", Id);
908+
cv.put("Code", Code);
909+
cv.put("Name", Name);
910+
db.insert("tblHealthFacilities", null, cv);
911+
} catch (Exception e) {
912+
e.printStackTrace();
913+
}
914+
}
893915
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package org.openimis.imisclaims.domain.entity;
2+
import android.os.Parcel;
3+
import android.os.Parcelable;
4+
import androidx.annotation.NonNull;
5+
import androidx.annotation.Nullable;
6+
public class HealthFacility implements Parcelable {
7+
@NonNull
8+
private final String id;
9+
@Nullable
10+
private final String code;
11+
@Nullable
12+
private final String name;
13+
14+
public HealthFacility (
15+
@NonNull String id,
16+
@Nullable String code,
17+
@Nullable String name
18+
){
19+
this.id = id;
20+
this.code = code;
21+
this.name = name;
22+
}
23+
protected HealthFacility (Parcel in){
24+
id = in.readString();
25+
code = in.readString();
26+
name = in.readString();
27+
}
28+
@Override
29+
public int describeContents() {
30+
return 0;
31+
}
32+
@Override
33+
public void writeToParcel(Parcel dest, int flags){
34+
dest.writeString(id);
35+
dest.writeString(code);
36+
dest.writeString(name);
37+
}
38+
@NonNull
39+
public String getId (){
40+
return id;
41+
}
42+
@Nullable
43+
public String getCode(){
44+
return code;
45+
}
46+
@Nullable
47+
public String getName(){
48+
return name;
49+
}
50+
public static final Creator<HealthFacility> CREATOR = new Creator<>() {
51+
@Override
52+
public HealthFacility createFromParcel(Parcel in) {
53+
return new HealthFacility(in);
54+
}
55+
@Override
56+
public HealthFacility[] newArray(int size) {
57+
return new HealthFacility[size];
58+
}
59+
};
60+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.openimis.imisclaims.network.request;
2+
import androidx.annotation.NonNull;
3+
import androidx.annotation.WorkerThread;
4+
import com.apollographql.apollo.api.Input;
5+
import org.openimis.imisclaims.GetHealthFacilityQuery;
6+
public class GetHealthFacilitiesGraphQLRequest extends BaseGraphQLRequest{
7+
@NonNull
8+
@WorkerThread
9+
public GetHealthFacilityQuery.HealthFacilities get(@NonNull int page) throws Exception {
10+
return makeSynchronous(new GetHealthFacilityQuery(Input.fromNullable(page))).getData().healthFacilities();
11+
}
12+
}

0 commit comments

Comments
 (0)