Skip to content

Commit f59dbb1

Browse files
committed
add patientCondition, referralHf, preAuthorisation fields
1 parent 409ea03 commit f59dbb1

13 files changed

Lines changed: 323 additions & 5 deletions

File tree

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: 31 additions & 4 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;
@@ -43,7 +44,6 @@ public class ClaimActivity extends ImisActivity {
4344
private static final int REQUEST_SCAN_QR_CODE = 1;
4445
static final int StartDate_Dialog_ID = 0;
4546
static final int EndDate_Dialog_ID = 1;
46-
4747
final Calendar cal = Calendar.getInstance();
4848

4949
public static ArrayList<HashMap<String, String>> lvItemList;
@@ -67,12 +67,13 @@ public static Intent newIntent(@NonNull Context context, @NonNull String claimUU
6767
int TotalItemService;
6868

6969
EditText etStartDate, etEndDate, etClaimCode, etHealthFacility, etInsureeNumber, etClaimAdmin, etGuaranteeNo;
70-
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4;
70+
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4, etReferalHF;
7171
TextView tvItemTotal, tvServiceTotal;
7272
Button btnPost, btnNew;
73-
RadioGroup rgVisitType;
74-
RadioButton rbEmergency, rbReferral, rbOther;
73+
RadioGroup rgVisitType, rgPatientCondition;
74+
RadioButton rbEmergency, rbReferral, rbOther, rbHealed, rbDiseased, rbEscaped, rbReferal;
7575
ImageButton btnScan;
76+
CheckBox etPreAuthorization;
7677

7778
@Override
7879
protected void onCreate(Bundle savedInstanceState) {
@@ -109,6 +110,13 @@ protected void onCreate(Bundle savedInstanceState) {
109110
rbEmergency = findViewById(R.id.rbEmergency);
110111
rbReferral = findViewById(R.id.rbReferral);
111112
rbOther = findViewById(R.id.rbOther);
113+
etReferalHF = findViewById(R.id.etReferalHF);
114+
rgPatientCondition = findViewById(R.id.rgPatientCondition);
115+
rbDiseased = findViewById(R.id.rbDeceased);
116+
rbEscaped = findViewById(R.id.rbEscaped);
117+
rbHealed = findViewById(R.id.rbHealed);
118+
rbReferal = findViewById(R.id.rbReferal);
119+
etPreAuthorization = findViewById(R.id.etPreAuthorization);
112120

113121

114122
tvItemTotal.setText("0");
@@ -135,6 +143,22 @@ protected void onCreate(Bundle savedInstanceState) {
135143
etDiagnosis4.setThreshold(1);
136144
etDiagnosis4.setOnItemClickListener(adapter);
137145

146+
HFAdapter hfAdapter = new HFAdapter(ClaimActivity.this, sqlHandler);
147+
etReferalHF.setAdapter(hfAdapter);
148+
etReferalHF.setThreshold(1);
149+
etReferalHF.setOnItemClickListener(hfAdapter);
150+
151+
etPreAuthorization.setChecked(false);
152+
etReferalHF.setVisibility(View.GONE);
153+
154+
rgVisitType.setOnCheckedChangeListener((radioGroup, i) -> {
155+
if(radioGroup.getCheckedRadioButtonId() == R.id.rbReferral){
156+
etReferalHF.setVisibility(View.VISIBLE);
157+
}else{
158+
etReferalHF.setVisibility(View.GONE);
159+
}
160+
});
161+
138162
etStartDate.setOnTouchListener((v, event) -> {
139163
showDialog(StartDate_Dialog_ID);
140164
return false;
@@ -373,7 +397,10 @@ private void ClearForm() {
373397
etDiagnosis2.setText("");
374398
etDiagnosis3.setText("");
375399
etDiagnosis4.setText("");
400+
etPreAuthorization.setChecked(false);
401+
etReferalHF.setText("");
376402
rgVisitType.clearCheck();
403+
rgPatientCondition.clearCheck();
377404
etClaimCode.requestFocus();
378405
}
379406

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

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class SQLHandler extends SQLiteOpenHelper {
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

@@ -321,7 +322,7 @@ public void createTables() {
321322
String[] commands = {CreateTableControls, CreateTableReferences, CreateTableClaimAdmins,
322323
createTablePolicyInquiry, createTableClaimDetails, createTableClaimItems, createTableClaimServices,
323324
createTableClaimUploadStatus, CreateTableSubItems,
324-
CreateTableSubServices,CreateTableItems,CreateTableServices};
325+
CreateTableSubServices,CreateTableItems,CreateTableServices, CreateTableHealthFacilities};
325326
for (String command : commands) {
326327
try {
327328
db.execSQL(command);
@@ -919,4 +920,24 @@ public String getManualPrice(String code) {
919920
}
920921
return manualPrice;
921922
}
923+
924+
public Cursor SearchHF(String InputText) {
925+
Cursor c = db.rawQuery("SELECT Code as _id,Code, Name FROM tblHealthFacilities WHERE Code LIKE '%" + InputText + "%' OR Name LIKE '%" + InputText + "%'", null);
926+
if (c != null) {
927+
c.moveToFirst();
928+
}
929+
return c;
930+
}
931+
932+
public void InsertHealthFacilities(String Id, String Code, String Name) {
933+
try {
934+
ContentValues cv = new ContentValues();
935+
cv.put("Id", Id);
936+
cv.put("Code", Code);
937+
cv.put("Name", Name);
938+
db.insert("tblHealthFacilities", null, cv);
939+
} catch (Exception e) {
940+
e.printStackTrace();
941+
}
942+
}
922943
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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+
public HealthFacility (
14+
@NonNull String id,
15+
@Nullable String code,
16+
@Nullable String name
17+
){
18+
this.id = id;
19+
this.code = code;
20+
this.name = name;
21+
}
22+
protected HealthFacility (Parcel in){
23+
id = in.readString();
24+
code = in.readString();
25+
name = in.readString();
26+
}
27+
@Override
28+
public int describeContents() {
29+
return 0;
30+
}
31+
@Override
32+
public void writeToParcel(Parcel dest, int flags){
33+
dest.writeString(id);
34+
dest.writeString(code);
35+
dest.writeString(name);
36+
}
37+
@NonNull
38+
public String getId (){
39+
return id;
40+
}
41+
@Nullable
42+
public String getCode(){
43+
return code;
44+
}
45+
@Nullable
46+
public String getName(){
47+
return name;
48+
}
49+
public static final Creator<HealthFacility> CREATOR = new Creator<>() {
50+
@Override
51+
public HealthFacility createFromParcel(Parcel in) {
52+
return new HealthFacility(in);
53+
}
54+
@Override
55+
public HealthFacility[] newArray(int size) {
56+
return new HealthFacility[size];
57+
}
58+
};
59+
}
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+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package org.openimis.imisclaims.usecase;
2+
import androidx.annotation.NonNull;
3+
import androidx.annotation.WorkerThread;
4+
import org.apache.commons.codec.binary.Base64;
5+
import org.openimis.imisclaims.GetHealthFacilityQuery;
6+
import org.openimis.imisclaims.domain.entity.HealthFacility;
7+
import org.openimis.imisclaims.network.request.GetHealthfacilitiesGraphQLRequest;
8+
import org.openimis.imisclaims.network.util.Mapper;
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
import java.util.Objects;
12+
public class FetchHealthfacilities {
13+
@NonNull
14+
private final GetHealthfacilitiesGraphQLRequest hfRequest;
15+
public FetchHealthfacilities(){
16+
this(new GetHealthfacilitiesGraphQLRequest());
17+
}
18+
public FetchHealthfacilities(
19+
@NonNull GetHealthfacilitiesGraphQLRequest hfRequest
20+
) {
21+
this.hfRequest = hfRequest;
22+
}
23+
@WorkerThread
24+
@NonNull
25+
public List<HealthFacility> execute() throws Exception{
26+
List<HealthFacility> healthFacilities = new ArrayList<>();
27+
int page = 0;
28+
boolean hasNextPage;
29+
do{
30+
GetHealthFacilityQuery.HealthFacilities response = hfRequest.get(page);
31+
healthFacilities.addAll(Mapper.map(
32+
response.edges(),
33+
dto ->{
34+
GetHealthFacilityQuery.Node node = Objects.requireNonNull(dto.node());
35+
byte[] bytes = node.id().getBytes();
36+
String id = new String(Base64.decodeBase64(bytes)).split(":")[1];
37+
return new HealthFacility(
38+
id,
39+
node.code(),
40+
node.name()
41+
);
42+
}
43+
));
44+
hasNextPage = response.pageInfo().hasNextPage();
45+
page = page + 100;
46+
}while (hasNextPage);
47+
return healthFacilities;
48+
}
49+
}

claimManagement/src/main/res/layout/activity_claim.xml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,52 @@
215215
android:text="@string/Other" />
216216

217217
</RadioGroup>
218+
219+
<AutoCompleteTextView
220+
android:id="@+id/etReferalHF"
221+
android:layout_width="match_parent"
222+
android:layout_height="wrap_content"
223+
android:ems="10"
224+
android:fontFamily="sans-serif-light"
225+
android:hint="@string/ReferalHF"/>
226+
<CheckBox
227+
android:id="@+id/etPreAuthorization"
228+
android:layout_width="wrap_content"
229+
android:layout_height="wrap_content"
230+
android:text="@string/preAuthorization"/>
231+
<TextView
232+
android:layout_width="wrap_content"
233+
android:layout_height="wrap_content"
234+
android:text="@string/PatientCondition"/>
235+
<RadioGroup
236+
android:id="@+id/rgPatientCondition"
237+
android:layout_width="wrap_content"
238+
android:layout_height="wrap_content">
239+
<RadioButton
240+
android:id="@+id/rbHealed"
241+
android:layout_width="wrap_content"
242+
android:layout_height="wrap_content"
243+
android:tag="H"
244+
android:text="@string/Healed" />
245+
<RadioButton
246+
android:id="@+id/rbDeceased"
247+
android:layout_width="wrap_content"
248+
android:layout_height="wrap_content"
249+
android:tag="D"
250+
android:text="@string/Deceased" />
251+
<RadioButton
252+
android:id="@+id/rbEscaped"
253+
android:layout_width="wrap_content"
254+
android:layout_height="wrap_content"
255+
android:tag="E"
256+
android:text="@string/Escaped" />
257+
<RadioButton
258+
android:id="@+id/rbReferal"
259+
android:layout_width="wrap_content"
260+
android:layout_height="wrap_content"
261+
android:tag="R"
262+
android:text="@string/Referral" />
263+
</RadioGroup>
218264
</LinearLayout>
219265

220266

0 commit comments

Comments
 (0)