Skip to content

Commit b46e066

Browse files
Merge branch 'mngoe:develop-comores' into develop-comores
2 parents 3e8ec53 + 4243ef9 commit b46e066

25 files changed

Lines changed: 543 additions & 61 deletions

claimManagement/build.gradle

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ android {
2727
minSdkVersion 23
2828
targetSdkVersion 32
2929
versionCode 4
30-
versionName "1.2.5"
30+
versionName "1.2.7"
3131
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
3232
}
3333
buildTypes {
@@ -78,14 +78,6 @@ android {
7878
dimension 'std'
7979
}
8080

81-
comoresProd{
82-
applicationIdSuffix ".comores"
83-
resValue "string", "app_name_claims", "Claims Comores"
84-
buildConfigField "String", "API_BASE_URL", '"https://amg.km/"'
85-
dimension 'std'
86-
resValue "string", "release_tag", "comores"
87-
}
88-
8981
comoresDev{
9082
applicationIdSuffix ".comoresDev"
9183
resValue "string", "app_name_claims", "Claims Comores Dev"
@@ -94,14 +86,6 @@ android {
9486
resValue "string", "release_tag", "comores-dev"
9587
}
9688

97-
comoresTest {
98-
applicationIdSuffix ".comoresTest"
99-
resValue "string", "app_name_claims", "Claims Comores Test"
100-
buildConfigField "String", "API_BASE_URL", '"https://test.amg.km/"'
101-
dimension 'std'
102-
resValue "string", "release_tag", "comores-test"
103-
}
104-
10589
chfDev {
10690
applicationIdSuffix ".chfDev"
10791
resValue "string", "app_name_claims", "Claims CHF"

claimManagement/src/chf/res/values-sw/strings.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
<string name="app_name_claim">Dai</string>
8080
<string name="app_name_enquire">Utambuzi</string>
8181
<string name="ClaimAdmin">Msimamizi wa madai</string>
82-
<string name="CHFID">Namba ya CHF</string>
82+
<string name="CHFID">Code AMG</string>
8383
<string name="StartDate">Tarehe kutoka</string>
8484
<string name="EndDate">Tarehe mpaka</string>
8585
<string name="Diagnosis">Ugonjwa</string>
@@ -103,8 +103,8 @@
103103
<string name="MissingClaimAdmin">Tafadhali ingiza namba ya Msimamizi wa madai</string>
104104
<string name="MissingGuaranteeNo">Tafadhali andika namba ya guarantee</string>
105105
<string name="MissingClaimCode">Tafadhali ingiza namba ya dai</string>
106-
<string name="MissingCHFID">Tafadhali ingiza CHFID</string>
107-
<string name="InvalidCHFID">Namba ya CHF sio sahihi</string>
106+
<string name="MissingCHFID">Tafadhali ingiza Code AMG</string>
107+
<string name="InvalidCHFID">Code AMG sio sahihi</string>
108108
<string name="MissingStartDate">Tafadhali ingiza tarehe ya kuanzia</string>
109109
<string name="MissingEndDate">Tafadhali ingiza tarehe ya kuishia</string>
110110
<string name="MissingClaim">Tafadhali chagua angalau bidhaa moja au huduma moja ili kutuma dai.</string>

claimManagement/src/chf/res/values/strings.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
<string name="app_name_claim">Claim</string>
8080
<string name="app_name_enquire">Enquire</string>
8181
<string name="ClaimAdmin">Claim Admin</string>
82-
<string name="CHFID">CHF No</string>
82+
<string name="CHFID">Code AMG</string>
8383
<string name="StartDate">Start Date</string>
8484
<string name="EndDate">End Date</string>
8585
<string name="Diagnosis">Diagnosis</string>
@@ -103,8 +103,8 @@
103103
<string name="MissingClaimAdmin">Please enter Claim Admin Code</string>
104104
<string name="MissingGuaranteeNo">Please enter Guarantee No</string>
105105
<string name="MissingClaimCode">Please enter Claim Code</string>
106-
<string name="MissingCHFID">Please enter the CHF number</string>
107-
<string name="InvalidCHFID">Invalid CHF number</string>
106+
<string name="MissingCHFID">Please enter the AMG code</string>
107+
<string name="InvalidCHFID">Invalid AMG code</string>
108108
<string name="MissingStartDate">Please enter Start Date</string>
109109
<string name="MissingEndDate">Please enter End Date</string>
110110
<string name="MissingClaim">Please select at least one item or service to submit the claim.</string>

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/graphql/org.openimis.imisclaim/GetInsureeInquire.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ query GetInsureeInquire($chfId: String) {
5656
expiryDate
5757
status
5858
value
59+
validityTo
5960
}
6061
}
6162
}

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/SubHouseholdActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ private void loadDataFromIntent() {
129129
}
130130

131131
String chfId = getIntent().getStringExtra(EXTRA_CHF_ID);
132-
Log.d(LOG_TAG, "🔍 CHFID récupéré de l'Intent: '" + chfId + "'");
132+
Log.d(LOG_TAG, "🔍 Code AMG récupéré de l'Intent: '" + chfId + "'");
133133

134134
// Log des données supplémentaires de l'Intent
135135
String lastName = getIntent().getStringExtra("EXTRA_LAST_NAME");
@@ -826,7 +826,7 @@ private String getDetailedInsuranceStatus(PolygamousSubFamily subHead) {
826826
private String getStatusText(Policy.Status status) {
827827
switch (status) {
828828
case ACTIVE: return "Actif";
829-
case IDLE: return "Inactif";
829+
case INACTIF: return "Inactif";
830830
case SUSPENDED: return "Suspendu";
831831
case EXPIRED: return "Expiré";
832832
case READY: return "Prêt";
@@ -1274,4 +1274,4 @@ private String buildEnquireValue(String value, int stringResourceId) {
12741274
}
12751275
return "";
12761276
}
1277-
}
1277+
}

claimManagement/src/main/java/org/openimis/imisclaims/adapter/FamilyMemberAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
8787
holder.tvMemberFirstName.setText("N/A");
8888
}
8989

90-
// CHFID
90+
// Code AMG
9191
if (member.getChfId() != null && !member.getChfId().isEmpty()) {
92-
holder.tvMemberChfId.setText("CHFID: " + member.getChfId());
92+
holder.tvMemberChfId.setText("Code AMG: " + member.getChfId());
9393
} else {
94-
holder.tvMemberChfId.setText("CHFID: N/A");
94+
holder.tvMemberChfId.setText("Code AMG: N/A");
9595
}
9696

9797
// Genre

0 commit comments

Comments
 (0)