Skip to content

Commit bb65408

Browse files
authored
Merge pull request #51 from ArkeupIDComores/feature-arkeup16
Add prescriber to claim forms
2 parents 4e14db3 + f2aefeb commit bb65408

11 files changed

Lines changed: 507 additions & 17 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ query GetHealthFacility ($offset: Int){
66
edges {
77
node {
88
id
9+
uuid
910
code
1011
name
1112
}

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

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
import android.content.Intent;
1010
import android.database.Cursor;
1111
import android.os.Bundle;
12+
import android.text.Editable;
13+
import android.text.TextWatcher;
1214
import android.view.Menu;
1315
import android.view.MenuInflater;
1416
import android.view.MenuItem;
1517
import android.view.View;
18+
import android.widget.ArrayAdapter;
1619
import android.widget.AutoCompleteTextView;
1720
import android.widget.Button;
1821
import android.widget.CheckBox;
@@ -30,6 +33,8 @@
3033
import org.json.JSONException;
3134
import org.json.JSONObject;
3235
import org.openimis.imisclaims.domain.entity.Claim;
36+
import org.openimis.imisclaims.domain.entity.Prescripteur;
37+
import org.openimis.imisclaims.network.request.GetPrescriberGraphQLRequest;
3338
import org.openimis.imisclaims.tools.Log;
3439
import org.openimis.imisclaims.util.DateUtils;
3540
import org.openimis.imisclaims.util.TextViewUtils;
@@ -38,6 +43,7 @@
3843
import java.util.Calendar;
3944
import java.util.Date;
4045
import java.util.HashMap;
46+
import java.util.List;
4147
import java.util.UUID;
4248

4349
public class ClaimActivity extends ImisActivity {
@@ -69,7 +75,10 @@ public static Intent newIntent(@NonNull Context context, @NonNull String claimUU
6975
int TotalItemService;
7076

7177
EditText etStartDate, etEndDate, etClaimCode, etHealthFacility, etInsureeNumber, etClaimAdmin, etGuaranteeNo, etReferralCode;
72-
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4, etReferalHF;
78+
AutoCompleteTextView etDiagnosis, etDiagnosis1, etDiagnosis2, etDiagnosis3, etDiagnosis4, etReferalHF, etPrescriber;
79+
// Adapter and selected uuid for prescriber autocomplete
80+
private ArrayAdapter<Prescripteur> prescriberAdapter;
81+
private String selectedPrescriberUuid;
7382
TextView tvItemTotal, tvServiceTotal;
7483
Button btnPost, btnNew;
7584
RadioGroup rgVisitType, rgPatientCondition;
@@ -120,7 +129,7 @@ protected void onCreate(Bundle savedInstanceState) {
120129
rbReferal = findViewById(R.id.rbReferal);
121130
etPreAuthorization = findViewById(R.id.etPreAuthorization);
122131
etReferralCode = findViewById(R.id.etReferralCode);
123-
132+
etPrescriber = findViewById(R.id.etPrescriber);
124133

125134
tvItemTotal.setText("0");
126135
tvServiceTotal.setText("0");
@@ -239,6 +248,7 @@ protected void onCreate(Bundle savedInstanceState) {
239248
if (global.getOfficerCode() != null) {
240249
etClaimAdmin.setText(global.getOfficerCode());
241250
etHealthFacility.setText(global.getOfficerHealthFacility());
251+
setupPrescribersAdapter(sqlHandler.getHfUuid(global.getOfficerHealthFacility()));
242252
}
243253
btnNew.setOnClickListener(v -> {
244254
if (TotalItemService > 0) {
@@ -250,6 +260,48 @@ protected void onCreate(Bundle savedInstanceState) {
250260
}
251261
}
252262

263+
private void setupPrescribersAdapter(String HFUuid) {
264+
new Thread(() -> {
265+
try {
266+
GetPrescriberGraphQLRequest req = new GetPrescriberGraphQLRequest();
267+
List<Prescripteur> prescribers = req.fetchPrescribers(HFUuid, "", 100);
268+
269+
runOnUiThread(() -> {
270+
try {
271+
prescriberAdapter = new ArrayAdapter<>(ClaimActivity.this, android.R.layout.simple_dropdown_item_1line, prescribers);
272+
etPrescriber.setAdapter(prescriberAdapter);
273+
etPrescriber.setThreshold(1);
274+
275+
etPrescriber.setOnItemClickListener((parent, view, position, id) -> {
276+
Prescripteur picked = prescriberAdapter.getItem(position);
277+
if (picked != null) {
278+
etPrescriber.setText(picked.getNin());
279+
selectedPrescriberUuid = picked.getUuid();
280+
}
281+
});
282+
283+
etPrescriber.addTextChangedListener(new TextWatcher() {
284+
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
285+
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
286+
selectedPrescriberUuid = null;
287+
}
288+
@Override public void afterTextChanged(Editable s) {}
289+
});
290+
291+
if (prescriberAdapter.getCount() > 0) {
292+
prescriberAdapter.notifyDataSetChanged();
293+
etPrescriber.showDropDown();
294+
}
295+
} catch (Exception e) {
296+
Log.e(LOG_TAG, "Error updating prescribers UI", e);
297+
}
298+
});
299+
} catch (Exception e) {
300+
Log.e(LOG_TAG, "Error fetching prescribers", e);
301+
}
302+
}).start();
303+
}
304+
253305
private boolean isIntentReadonly() {
254306
Intent intent = getIntent();
255307
return intent.getBooleanExtra(EXTRA_READONLY, false);
@@ -556,6 +608,9 @@ private void fillClaimFromDatabase(String claimUUID) {
556608
etDiagnosis4.setText(claimDetails.getString("ICDCode4"));
557609
etReferalHF.setText(claimDetails.getString("ReferalHF"));
558610
etReferralCode.setText(claimDetails.getString("ReferralCode"));
611+
etPrescriber.setText(claimDetails.getString("PrescriberNIN"));
612+
613+
setupPrescribersAdapter(sqlHandler.getHfUuid(global.getOfficerHealthFacility()));
559614

560615
if(claimDetails.getInt("PreAuthorization") == 1){
561616
etPreAuthorization.setChecked(true);
@@ -835,6 +890,8 @@ private boolean saveClaim() {
835890
claimCV.put("VisitType", visitType);
836891
claimCV.put("ReferalHF", etReferalHF.getText().toString());
837892
claimCV.put("ReferralCode", etReferralCode.getText().toString());
893+
claimCV.put("PrescriberNIN", etPrescriber.getText().toString());
894+
claimCV.put("PrescriberUuid", selectedPrescriberUuid);
838895
claimCV.put("PatientCondition", patientCondition);
839896

840897
if(etPreAuthorization.isChecked()){

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ public void run() {
685685

686686
List<HealthFacility> healthFacilities = new FetchHealthFacilities().execute();
687687
for(HealthFacility hf: healthFacilities) {
688-
sqlHandler.InsertHealthFacilities(hf.getId(), hf.getCode(), hf.getName());
688+
sqlHandler.InsertHealthFacilities(hf.getId(), hf.getUuid(), hf.getCode(), hf.getName());
689689
}
690690

691691
runOnUiThread(() -> {

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

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +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, ReferalHF TEXT, ReferralCode TEXT, PatientCondition TEXT,PreAuthorization Int );";
4443
private static final String createTableClaimItems = "CREATE TABLE IF NOT EXISTS tblClaimItems(ClaimUUID TEXT, ItemId TEXT, ItemCode TEXT, ItemPrice TEXT, ItemQuantity TEXT);";
44+
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, ReferralCode TEXT, PatientCondition TEXT,PreAuthorization Int, PrescriberUuid TEXT, PrescriberNIN TEXT );";
4545
private static final String createTableClaimServices = "CREATE TABLE IF NOT EXISTS tblClaimServices(ClaimUUID TEXT,ServiceId 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, ManualPrice Int);";
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);";
51+
private static final String CreateTableHealthFacilities = "CREATE TABLE IF NOT EXISTS tblHealthFacilities(Id TEXT, Uuid TEXT, Code TEXT, Name TEXT);";
5252

5353
public final String REFERENCE_UNKNOWN;
5454

@@ -431,7 +431,7 @@ public void deleteClaim(String claimUUID) {
431431

432432
public JSONObject getClaim(String claimUUID) {
433433
JSONArray claimDetails = getQueryResultAsJsonArray("tblClaimDetails",
434-
new String[]{"ClaimUUID", "ClaimDate", "HFCode", "ClaimAdmin", "ClaimCode", "GuaranteeNumber", "InsureeNumber", "StartDate", "EndDate", "ICDCode", "Comment", "Total", "ICDCode1", "ICDCode2", "ICDCode3", "ICDCode4", "VisitType", "ReferalHF", "ReferralCode", "PatientCondition", "PreAuthorization"},
434+
new String[]{"ClaimUUID", "ClaimDate", "HFCode", "ClaimAdmin", "ClaimCode", "GuaranteeNumber", "InsureeNumber", "StartDate", "EndDate", "ICDCode", "Comment", "Total", "ICDCode1", "ICDCode2", "ICDCode3", "ICDCode4", "VisitType", "ReferalHF", "ReferralCode", "PatientCondition", "PreAuthorization", "PrescriberUuid", "PrescriberNIN" },
435435
"LOWER(ClaimUUID) = ?",
436436
new String[]{claimUUID.toLowerCase(Locale.ROOT)});
437437

@@ -463,7 +463,7 @@ public JSONArray getAllPendingClaims() {
463463
// Rename InsureeNumber to CHFID
464464
// This is required to support legacy Rest API and Web App
465465
JSONArray claims = getQueryResultAsJsonArray(
466-
"SELECT ClaimUUID, ClaimDate, HFCode, ClaimAdmin, ClaimCode, GuaranteeNumber, InsureeNumber AS CHFID, StartDate, EndDate, ICDCode, Comment, Total, ICDCode1, ICDCode2, ICDCode3, ICDCode4, VisitType, ReferalHF, ReferralCode, PatientCondition, PreAuthorization " +
466+
"SELECT ClaimUUID, ClaimDate, HFCode, ClaimAdmin, ClaimCode, GuaranteeNumber, InsureeNumber AS CHFID, StartDate, EndDate, ICDCode, Comment, Total, ICDCode1, ICDCode2, ICDCode3, ICDCode4, VisitType, ReferalHF, ReferralCode, PatientCondition, PreAuthorization, PrescriberUuid, PrescriberNIN " +
467467
" FROM tblClaimDetails cd" +
468468
" WHERE NOT EXISTS (SELECT cus.ClaimUUID FROM tblClaimUploadStatus cus WHERE cus.ClaimUUID = cd.ClaimUUID AND cus.UploadStatus != ?)",
469469
new String[]{CLAIM_UPLOAD_STATUS_ERROR}
@@ -934,10 +934,11 @@ public JSONObject getItem(String itemId) {
934934
return resultSet;
935935
}
936936

937-
public void InsertHealthFacilities(String Id, String Code, String Name) {
937+
public void InsertHealthFacilities(String Id, String Uuid, String Code, String Name) {
938938
try {
939939
ContentValues cv = new ContentValues();
940940
cv.put("Id", Id);
941+
cv.put("Uuid", Uuid);
941942
cv.put("Code", Code);
942943
cv.put("Name", Name);
943944
db.insert("tblHealthFacilities", null, cv);
@@ -961,4 +962,36 @@ public String getHfId(String code) {
961962
}
962963
return id;
963964
}
965+
966+
public String getHfUuid(String code) {
967+
String uuid = "";
968+
try (Cursor c = db.query("tblHealthFacilities", new String[]{"Uuid"}, "LOWER(Code) = LOWER(?)", new String[]{code}, null, null, null, "1")) {
969+
c.moveToFirst();
970+
if (!c.isAfterLast()) {
971+
String result = c.getString(0);
972+
if (!TextUtils.isEmpty(result)) {
973+
uuid = result;
974+
}
975+
}
976+
} catch (SQLException e) {
977+
Log.d("ErrorOnFetchingData", String.format("Error while getting price of %s", code), e);
978+
}
979+
return uuid;
980+
}
981+
982+
public String getPrescriberUuidByNIN(String nin) {
983+
String uuid = "";
984+
try (Cursor c = db.query("tblClaimDetails", new String[]{"PrescriberUuid"}, "LOWER(PrescriberNIN) = LOWER(?)", new String[]{nin}, null, null, null, "1")) {
985+
c.moveToFirst();
986+
if (!c.isAfterLast()) {
987+
String result = c.getString(0);
988+
if (!TextUtils.isEmpty(result)) {
989+
uuid = result;
990+
}
991+
}
992+
} catch (SQLException e) {
993+
Log.d("ErrorOnFetchingData", String.format("Error while getting prescriber UUID for NIN %s", nin), e);
994+
}
995+
return uuid;
996+
}
964997
}

claimManagement/src/main/java/org/openimis/imisclaims/domain/entity/HealthFacility.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
public class HealthFacility implements Parcelable {
77
@NonNull
88
private final String id;
9+
10+
@NonNull
11+
private String uuid = "";
912
@Nullable
1013
private final String code;
1114
@Nullable
@@ -20,10 +23,12 @@ public HealthFacility (
2023
this.code = code;
2124
this.name = name;
2225
}
26+
2327
protected HealthFacility (Parcel in){
2428
id = in.readString();
2529
code = in.readString();
2630
name = in.readString();
31+
uuid = in.readString();
2732
}
2833
@Override
2934
public int describeContents() {
@@ -39,6 +44,15 @@ public void writeToParcel(Parcel dest, int flags){
3944
public String getId (){
4045
return id;
4146
}
47+
48+
@NonNull
49+
public String getUuid (){
50+
return uuid;
51+
}
52+
53+
public void setUuid(@NonNull String uuid) {
54+
this.uuid = uuid;
55+
}
4256
@Nullable
4357
public String getCode(){
4458
return code;

claimManagement/src/main/java/org/openimis/imisclaims/domain/entity/PendingClaimGQL.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public static List<PendingClaimGQL> fromJson(@NonNull JSONArray array) throws Ex
3939
/* icdCode2 = */ details.getString("ICDCode2"),
4040
/* icCode3 = */ details.getString("ICDCode3"),
4141
/* icdCode4 = */ details.getString("ICDCode4"),
42+
/* prescriberUuid = */ details.getString("PrescriberUuid"),
4243
/* GuaranteeNumber = */ details.getString("GuaranteeNumber"),
4344
/* ReferalHF = */ details.getString("ReferalHF"),
4445
/* Referral code = */ details.getString("ReferralCode"),
@@ -77,6 +78,8 @@ public static List<PendingClaimGQL> fromJson(@NonNull JSONArray array) throws Ex
7778
private final String icdCode3;
7879
@Nullable
7980
private final String icdCode4;
81+
@Nullable
82+
private final String prescriberUuid;
8083
@NonNull
8184
private final String visitType;
8285
@Nullable
@@ -106,6 +109,7 @@ public PendingClaimGQL(
106109
@Nullable String icdCode2,
107110
@Nullable String icdCode3,
108111
@Nullable String icdCode4,
112+
@Nullable String prescriberUuid,
109113
@Nullable String guaranteeNumber,
110114
@Nullable String referralHf,
111115
@Nullable String referralCode,
@@ -127,6 +131,7 @@ public PendingClaimGQL(
127131
this.icdCode2 = icdCode2;
128132
this.icdCode3 = icdCode3;
129133
this.icdCode4 = icdCode4;
134+
this.prescriberUuid = prescriberUuid;
130135
this.visitType = visitType;
131136
this.services = services;
132137
this.medications = medications;
@@ -150,6 +155,7 @@ protected PendingClaimGQL(Parcel in) {
150155
icdCode2 = in.readString();
151156
icdCode3 = in.readString();
152157
icdCode4 = in.readString();
158+
prescriberUuid = in.readString();
153159
visitType = in.readString();
154160
referalHF = in.readString();
155161
referralCode = in.readString();
@@ -173,6 +179,7 @@ public void writeToParcel(Parcel dest, int flags) {
173179
dest.writeString(icdCode2);
174180
dest.writeString(icdCode3);
175181
dest.writeString(icdCode4);
182+
dest.writeString(prescriberUuid);
176183
dest.writeString(visitType);
177184
dest.writeTypedList(services);
178185
dest.writeTypedList(medications);
@@ -251,6 +258,11 @@ public String getIcdCode4() {
251258
return icdCode4;
252259
}
253260

261+
@Nullable
262+
public String getPrescriberUuid() {
263+
return prescriberUuid;
264+
}
265+
254266
@NonNull
255267
public String getVisitType() {
256268
return visitType;

0 commit comments

Comments
 (0)