Skip to content

Commit ed9c726

Browse files
authored
Merge pull request #94 from mngoe/feature-30875
Feature 30875
2 parents 9117712 + 9de2e94 commit ed9c726

File tree

17 files changed

+452
-24
lines changed

17 files changed

+452
-24
lines changed

claimManagement/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ dependencies {
205205
implementation 'com.google.zxing:core:3.3.0'
206206
implementation 'com.embarkmobile:zxing-android-minimal:1.2.1@aar'
207207
implementation 'commons-io:commons-io:2.11.0'
208-
implementation 'com.google.android.material:material:1.0.0'
208+
implementation 'com.google.android.material:material:1.6.1'
209209
implementation 'androidx.appcompat:appcompat:1.0.0'
210210
implementation 'org.apache.httpcomponents:httpclient:4.5.9'
211211
implementation 'com.squareup.okhttp3:okhttp:4.11.0'

claimManagement/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@
7575
android:theme="@style/AppTheme.NoActionBar" />
7676
<activity
7777
android:name=".ClaimActivity"
78-
android:windowSoftInputMode="stateHidden" />
78+
android:windowSoftInputMode="stateHidden"
79+
android:theme="@style/CustomTheme"/>
7980
<activity
8081
android:name=".AddItems"
8182
android:label="@string/AddItems"
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: 138 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,18 @@
1212
import android.view.MenuInflater;
1313
import android.view.MenuItem;
1414
import android.view.View;
15+
import android.widget.AdapterView;
16+
import android.widget.ArrayAdapter;
1517
import android.widget.AutoCompleteTextView;
1618
import android.widget.Button;
19+
import android.widget.CheckBox;
1720
import android.widget.DatePicker;
1821
import android.widget.EditText;
1922
import android.widget.ImageButton;
2023
import android.widget.RadioButton;
2124
import android.widget.RadioGroup;
25+
import android.widget.Spinner;
26+
import android.widget.Switch;
2227
import android.widget.TextView;
2328

2429
import androidx.annotation.NonNull;
@@ -43,7 +48,6 @@ public class ClaimActivity extends ImisActivity {
4348
private static final int REQUEST_SCAN_QR_CODE = 1;
4449
static final int StartDate_Dialog_ID = 0;
4550
static final int EndDate_Dialog_ID = 1;
46-
4751
final Calendar cal = Calendar.getInstance();
4852

4953
public static ArrayList<HashMap<String, String>> lvItemList;
@@ -65,14 +69,16 @@ public static Intent newIntent(@NonNull Context context, @NonNull String claimUU
6569

6670
private int year, month, day;
6771
int TotalItemService;
72+
String patientCondition, visitType;
6873

6974
EditText etStartDate, etEndDate, etClaimCode, etHealthFacility, etInsureeNumber, etClaimAdmin, etGuaranteeNo;
70-
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4;
75+
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4, etReferalHF, etPatientCondition, etVisitType;
7176
TextView tvItemTotal, tvServiceTotal;
7277
Button btnPost, btnNew;
7378
RadioGroup rgVisitType;
7479
RadioButton rbEmergency, rbReferral, rbOther;
7580
ImageButton btnScan;
81+
CheckBox etPreAuthorization;
7682

7783
@Override
7884
protected void onCreate(Bundle savedInstanceState) {
@@ -109,7 +115,64 @@ protected void onCreate(Bundle savedInstanceState) {
109115
rbEmergency = findViewById(R.id.rbEmergency);
110116
rbReferral = findViewById(R.id.rbReferral);
111117
rbOther = findViewById(R.id.rbOther);
118+
etReferalHF = findViewById(R.id.etReferalHF);
119+
etPreAuthorization = findViewById(R.id.etPreAuthorization);
120+
etPatientCondition = findViewById(R.id.patientCondition);
121+
etVisitType = findViewById(R.id.etVisitType);
122+
123+
String[] visitTypes = getResources().getStringArray(R.array.visitType);
124+
ArrayAdapter<String> visitTypeAdapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, visitTypes);
125+
visitTypeAdapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);
126+
etVisitType.setAdapter(visitTypeAdapter);
127+
etVisitType.setOnItemClickListener(new AdapterView.OnItemClickListener() {
128+
@Override
129+
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
130+
String item = adapterView.getItemAtPosition(position).toString();
131+
switch(item){
132+
case "Emergency":
133+
visitType = "E";
134+
etReferalHF.setVisibility(View.GONE);
135+
break;
136+
case "Referral":
137+
visitType = "R";
138+
etReferalHF.setVisibility(View.VISIBLE);
139+
break;
140+
case "Other":
141+
visitType = "O";
142+
etReferalHF.setVisibility(View.GONE);
143+
break;
144+
default:
145+
visitType = "";
146+
break;
147+
}
148+
}
149+
});
150+
151+
String[] patientConditions = getResources().getStringArray(R.array.patientCondition);
152+
ArrayAdapter<String> patientConditionAdapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, patientConditions);
153+
etPatientCondition.setAdapter(patientConditionAdapter);
154+
etPatientCondition.setOnItemClickListener(new AdapterView.OnItemClickListener() {
155+
@Override
156+
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
157+
String item = adapterView.getItemAtPosition(position).toString();
158+
switch(item){
159+
case "Healed":
160+
patientCondition = "H";
161+
break;
162+
case "Deceased":
163+
patientCondition = "D";
164+
break;
165+
case "Escaped":
166+
patientCondition = "E";
167+
break;
168+
case "Referral":
169+
patientCondition = "R";
170+
break;
171+
}
172+
}
173+
});
112174

175+
rgVisitType.setVisibility(View.GONE);
113176

114177
tvItemTotal.setText("0");
115178
tvServiceTotal.setText("0");
@@ -135,6 +198,14 @@ protected void onCreate(Bundle savedInstanceState) {
135198
etDiagnosis4.setThreshold(1);
136199
etDiagnosis4.setOnItemClickListener(adapter);
137200

201+
HFAdapter hfAdapter = new HFAdapter(ClaimActivity.this, sqlHandler);
202+
etReferalHF.setAdapter(hfAdapter);
203+
etReferalHF.setThreshold(1);
204+
etReferalHF.setOnItemClickListener(hfAdapter);
205+
206+
etPreAuthorization.setChecked(false);
207+
etReferalHF.setVisibility(View.GONE);
208+
138209
etStartDate.setOnTouchListener((v, event) -> {
139210
showDialog(StartDate_Dialog_ID);
140211
return false;
@@ -373,7 +444,11 @@ private void ClearForm() {
373444
etDiagnosis2.setText("");
374445
etDiagnosis3.setText("");
375446
etDiagnosis4.setText("");
447+
etPreAuthorization.setChecked(false);
448+
etReferalHF.setText("");
376449
rgVisitType.clearCheck();
450+
etPatientCondition.setText("");
451+
etVisitType.setText("");
377452
etClaimCode.requestFocus();
378453
}
379454

@@ -394,6 +469,10 @@ private void disableForm() {
394469
disableView(rbEmergency);
395470
disableView(rbReferral);
396471
disableView(rbOther);
472+
disableView(etReferalHF);
473+
disableView(etPreAuthorization);
474+
disableView(etPatientCondition);
475+
disableView(etVisitType);
397476
}
398477

399478
private void fillClaimFromRestore(Claim claim) {
@@ -427,17 +506,17 @@ private void fillClaimFromRestore(Claim claim) {
427506
etDiagnosis4.setText(sqlHandler.getDiseaseCode(claim.getSecDg4()));
428507

429508
switch (claim.getVisitType() != null ? claim.getVisitType() : "") {
430-
case "Emergency":
431-
rgVisitType.check(R.id.rbEmergency);
509+
case "E":
510+
etVisitType.setText("Emergency");
432511
break;
433-
case "Referral":
434-
rgVisitType.check(R.id.rbReferral);
512+
case "R":
513+
etVisitType.setText("Referral");
435514
break;
436-
case "Other":
437-
rgVisitType.check(R.id.rbOther);
515+
case "O":
516+
etVisitType.setText("Other");
438517
break;
439518
default:
440-
rgVisitType.clearCheck();
519+
etVisitType.setText("");
441520
}
442521

443522
lvItemList.clear();
@@ -499,19 +578,42 @@ private void fillClaimFromDatabase(String claimUUID) {
499578
etDiagnosis2.setText(claimDetails.getString("ICDCode2"));
500579
etDiagnosis3.setText(claimDetails.getString("ICDCode3"));
501580
etDiagnosis4.setText(claimDetails.getString("ICDCode4"));
581+
etReferalHF.setText(claimDetails.getString("ReferalHF"));
582+
if(claimDetails.getInt("PreAuthorization") == 1){
583+
etPreAuthorization.setChecked(true);
584+
}else{
585+
etPreAuthorization.setChecked(false);
586+
}
502587

503588
switch (claimDetails.getString("VisitType")) {
504589
case "E":
505-
rgVisitType.check(R.id.rbEmergency);
590+
etVisitType.setText("Emergency");
506591
break;
507592
case "R":
508-
rgVisitType.check(R.id.rbReferral);
593+
etVisitType.setText("Referral");
509594
break;
510595
case "O":
511-
rgVisitType.check(R.id.rbOther);
596+
etVisitType.setText("Other");
597+
break;
598+
default:
599+
etVisitType.setText("");
600+
}
601+
602+
switch (claimDetails.getString("PatientCondition")) {
603+
case "H":
604+
etPatientCondition.setText("Healed");
605+
break;
606+
case "D":
607+
etPatientCondition.setText("Deceased");
608+
break;
609+
case "E":
610+
etPatientCondition.setText("Escaped");
611+
break;
612+
case "R":
613+
etPatientCondition.setText("Referral");
512614
break;
513615
default:
514-
rgVisitType.clearCheck();
616+
etPatientCondition.setText("");
515617
}
516618

517619
lvItemList.clear();
@@ -531,6 +633,12 @@ private void fillClaimFromDatabase(String claimUUID) {
531633
}
532634
tvItemTotal.setText(String.valueOf(lvItemList.size()));
533635

636+
if(etVisitType.getText().equals("Referral")){
637+
etReferalHF.setEnabled(true);
638+
}else{
639+
disableView(etReferalHF);
640+
}
641+
534642
lvServiceList.clear();
535643
if (claimObject.has("services")) {
536644
JSONArray services = claimObject.getJSONArray("services");
@@ -645,7 +753,12 @@ private boolean isValidData() {
645753
return false;
646754
}
647755

648-
if (rgVisitType.getCheckedRadioButtonId() == -1) {
756+
// if (rgVisitType.getCheckedRadioButtonId() == -1) {
757+
// showValidationDialog(rgVisitType, getResources().getString(R.string.MissingVisitType));
758+
// return false;
759+
// }
760+
761+
if(etVisitType.getText().toString().isEmpty()){
649762
showValidationDialog(rgVisitType, getResources().getString(R.string.MissingVisitType));
650763
return false;
651764
}
@@ -687,11 +800,10 @@ private boolean saveClaim() {
687800

688801
String claimDate = DateUtils.toDateString(new Date());
689802

690-
int SelectedId;
691-
SelectedId = rgVisitType.getCheckedRadioButtonId();
692-
RadioButton selectedTypeButton;
693-
selectedTypeButton = findViewById(SelectedId);
694-
String visitType = selectedTypeButton.getTag().toString();
803+
//int SelectedId;
804+
//SelectedId = rgVisitType.getCheckedRadioButtonId();
805+
//RadioButton selectedTypeButton;
806+
//selectedTypeButton = findViewById(SelectedId);
695807

696808
ContentValues claimCV = new ContentValues();
697809

@@ -712,6 +824,13 @@ private boolean saveClaim() {
712824
claimCV.put("ICDCode3", etDiagnosis3.getText().toString());
713825
claimCV.put("ICDCode4", etDiagnosis4.getText().toString());
714826
claimCV.put("VisitType", visitType);
827+
claimCV.put("ReferalHF", etReferalHF.getText().toString());
828+
claimCV.put("PatientCondition", patientCondition);
829+
if(etPreAuthorization.isChecked()){
830+
claimCV.put("PreAuthorization", 1);
831+
}else{
832+
claimCV.put("PreAuthorization", 0);
833+
}
715834

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

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);

0 commit comments

Comments
 (0)