Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
query GetConfigs {
moduleConfigurations {
config,
module
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
Expand Down Expand Up @@ -44,6 +46,7 @@
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;

public class ClaimActivity extends ImisActivity {
Expand Down Expand Up @@ -82,7 +85,13 @@ public static Intent newIntent(@NonNull Context context, @NonNull String claimUU
RadioButton rbEmergency, rbReferral, rbOther;
ImageButton btnScan;
CheckBox etPreAuthorization;
TextInputLayout tfReferal;
TextInputLayout tfReferal, tiPatientCondition;
JSONObject claimConfig;
JSONObject insureeConfig;
int codeMaxLength = 8, chfIdMaxLength = 12, numberOfAdditionalDiagnosis = 4;
boolean showPatientCondition = false, showPreAuthorization = false, canSaveClaimWithoutServiceNorItem = true;
List<AutoCompleteTextView> secDiagnosis = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -124,6 +133,7 @@ protected void onCreate(Bundle savedInstanceState) {
etPatientCondition = findViewById(R.id.patientCondition);
etVisitType = findViewById(R.id.etVisitType);
tfReferal = findViewById(R.id.tfReferal);
tiPatientCondition = findViewById(R.id.tiPatientCondition);

String[] visitTypes = getResources().getStringArray(R.array.visitType);
ArrayAdapter<String> visitTypeAdapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, visitTypes);
Expand Down Expand Up @@ -192,18 +202,26 @@ public void onItemClick(AdapterView<?> adapterView, View view, int position, lon
etDiagnosis1.setAdapter(adapter);
etDiagnosis1.setThreshold(1);
etDiagnosis1.setOnItemClickListener(adapter);
etDiagnosis1.setVisibility(View.GONE);
secDiagnosis.add(etDiagnosis1);

etDiagnosis2.setAdapter(adapter);
etDiagnosis2.setThreshold(1);
etDiagnosis2.setOnItemClickListener(adapter);
etDiagnosis2.setVisibility(View.GONE);
secDiagnosis.add(etDiagnosis2);

etDiagnosis3.setAdapter(adapter);
etDiagnosis3.setThreshold(1);
etDiagnosis3.setOnItemClickListener(adapter);
etDiagnosis3.setVisibility(View.GONE);
secDiagnosis.add(etDiagnosis3);

etDiagnosis4.setAdapter(adapter);
etDiagnosis4.setThreshold(1);
etDiagnosis4.setOnItemClickListener(adapter);
etDiagnosis4.setVisibility(View.GONE);
secDiagnosis.add(etDiagnosis4);

HFAdapter hfAdapter = new HFAdapter(ClaimActivity.this, sqlHandler);
etReferalHF.setAdapter(hfAdapter);
Expand All @@ -223,6 +241,8 @@ public void onItemClick(AdapterView<?> adapterView, View view, int position, lon
return false;
});

initConfigurations();

findViewById(R.id.ivAddItem).setOnClickListener(v -> addItem());
findViewById(R.id.ivAddService).setOnClickListener(v -> addService());

Expand Down Expand Up @@ -292,6 +312,88 @@ public void onItemClick(AdapterView<?> adapterView, View view, int position, lon
}
});
}

etInsureeNumber.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

@Override
public void afterTextChanged(Editable s) {
int length = s != null ? s.length() : 0;if (length > chfIdMaxLength) {
etInsureeNumber.setError(getResources().getString(R.string.maxCharactersRequired, chfIdMaxLength));
} else {
etInsureeNumber.setError(null);
}
}
});

etClaimCode.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}

@Override
public void afterTextChanged(Editable s) {
int length = s != null ? s.length() : 0;
if (length > codeMaxLength) {
etClaimCode.setError(getResources().getString(R.string.maxCharactersRequired, codeMaxLength));
} else {
etClaimCode.setError(null);
}
}
});
}

private void initConfigurations(){
try {
claimConfig = sqlHandler.getModuleConfig("fe-claim");
insureeConfig = sqlHandler.getModuleConfig("fe-insuree");

if(claimConfig.has("claimForm.codeMaxLength")){
codeMaxLength = claimConfig.getInt("claimForm.codeMaxLength");
}

if(insureeConfig.has("insureeForm.chfIdMaxLength")){
chfIdMaxLength = insureeConfig.getInt("insureeForm.chfIdMaxLength");
}

if(claimConfig.has("showPatientCondition")){
showPatientCondition = claimConfig.getBoolean("showPatientCondition");
}

if(claimConfig.has("showPreAuthorization")){
showPreAuthorization = claimConfig.getBoolean("showPreAuthorization");
}

if(claimConfig.has("claimForm.numberOfAdditionalDiagnosis")){
numberOfAdditionalDiagnosis = claimConfig.getInt("claimForm.numberOfAdditionalDiagnosis");
}

if(!showPreAuthorization){
etPreAuthorization.setVisibility(View.GONE);
} else {
etPreAuthorization.setVisibility(View.VISIBLE);
}

if(!showPatientCondition){
tiPatientCondition.setVisibility(View.GONE);
} else {
tiPatientCondition.setVisibility(View.VISIBLE);
}

for (int i = 0; i < numberOfAdditionalDiagnosis; i++){
secDiagnosis.get(i).setVisibility(View.VISIBLE);
}
} catch (JSONException e) {
e.printStackTrace();
}
}

private boolean isIntentReadonly() {
Expand Down Expand Up @@ -729,11 +831,21 @@ protected boolean isValidData() {
return false;
}

if(etClaimCode.getText().length() > codeMaxLength){
showValidationDialog(etClaimCode, getResources().getString(R.string.InvalidClaimCode, codeMaxLength));
return false;
}

if (etInsureeNumber.getText().length() == 0) {
showValidationDialog(etInsureeNumber, getResources().getString(R.string.MissingCHFID));
return false;
}

if(etInsureeNumber.getText().length() > chfIdMaxLength) {
showValidationDialog(etInsureeNumber, getResources().getString(R.string.invalidChfId, chfIdMaxLength));
return false;
}

if (!isValidInsureeNumber()) {
showValidationDialog(etInsureeNumber, getResources().getString(R.string.InvalidCHFID));
return false;
Expand Down Expand Up @@ -785,7 +897,7 @@ protected boolean isValidData() {
return false;
}

if (Float.parseFloat(tvItemTotal.getText().toString()) + Float.parseFloat(tvServiceTotal.getText().toString()) == 0) {
if (!canSaveClaimWithoutServiceNorItem && Float.parseFloat(tvItemTotal.getText().toString()) + Float.parseFloat(tvServiceTotal.getText().toString()) == 0) {
showValidationDialog(tvItemTotal, getResources().getString(R.string.MissingClaim));
return false;
}
Expand Down Expand Up @@ -847,8 +959,10 @@ protected boolean saveClaim() {
claimCV.put("ICDCode4", etDiagnosis4.getText().toString());
claimCV.put("VisitType", etVisitType.getTag().toString());
claimCV.put("ReferalHF", etReferalHF.getText().toString());
claimCV.put("PatientCondition", etPatientCondition.getTag().toString());
if(etPreAuthorization.isChecked()){
if(showPatientCondition){
claimCV.put("PatientCondition", etPatientCondition.getTag().toString());
}
if(showPreAuthorization && etPreAuthorization.isChecked()){
claimCV.put("PreAuthorization", 1);
}else{
claimCV.put("PreAuthorization", 0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,14 @@
import org.openimis.imisclaims.domain.entity.Diagnosis;
import org.openimis.imisclaims.domain.entity.HealthFacility;
import org.openimis.imisclaims.domain.entity.Medication;
import org.openimis.imisclaims.domain.entity.ModuleConfig;
import org.openimis.imisclaims.domain.entity.PaymentList;
import org.openimis.imisclaims.domain.entity.Service;
import org.openimis.imisclaims.domain.entity.SubServiceItem;
import org.openimis.imisclaims.tools.Log;
import org.openimis.imisclaims.usecase.CheckHealthFacility;
import org.openimis.imisclaims.usecase.FetchClaimAdmins;
import org.openimis.imisclaims.usecase.FetchConfigs;
import org.openimis.imisclaims.usecase.FetchControls;
import org.openimis.imisclaims.usecase.FetchDiagnosesServicesItems;
import org.openimis.imisclaims.usecase.FetchHealthfacilities;
Expand Down Expand Up @@ -741,6 +743,7 @@ public void run() {
runOnUiThread(() -> {
progressDialog.dismiss();
Toast.makeText(MainActivity.this, getResources().getString(R.string.MapSuccessful), Toast.LENGTH_LONG).show();
downloadConfigs();
});
} catch (Exception e) {
e.printStackTrace();
Expand All @@ -760,6 +763,45 @@ public void run() {

}

public void downloadConfigs (){
if (global.isNetworkAvailable()){
String progress_message = getResources().getString(R.string.getConfig) + "...";
progressDialog = ProgressDialog.show(this, getResources().getString(R.string.download), progress_message);
Thread thread = new Thread() {
public void run() {
try {
List<ModuleConfig> configs = new FetchConfigs().execute();
if(!configs.isEmpty()){
sqlHandler.ClearAll("tblConfig");
for (int i = 0; i < configs.size(); i++) {
sqlHandler.InsertConfig(i+1,configs.get(i).getModule(), configs.get(i).getConfig());
}
}
runOnUiThread(() -> {
progressDialog.dismiss();
Toast.makeText(MainActivity.this, getResources().getString(R.string.downloaded_config), Toast.LENGTH_LONG).show();
});
} catch (Exception e) {
e.printStackTrace();
Sentry.captureException(e);
runOnUiThread(() -> {
progressDialog.dismiss();
if(!global.isNetworkAvailable()){
Toast.makeText(MainActivity.this, getResources().getString(R.string.CheckInternet), Toast.LENGTH_LONG).show();
}else {
Toast.makeText(MainActivity.this, e.getMessage() + "-" + getResources().getString(R.string.AccessDenied), Toast.LENGTH_LONG).show();
}
});
}
};
};
thread.start();
} else {
runOnUiThread(() -> progressDialog.dismiss());
ErrorDialogBox(getResources().getString(R.string.CheckInternet));
}
}

public void saveLastUpdateDate(String lastUpdateDate) {
if (global.getSDCardStatus().equals(Environment.MEDIA_MOUNTED)) {
String dir = global.getSubdirectory("Authentications");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public class SQLHandler extends SQLiteOpenHelper {
private static final String CreateTableSubServices = "CREATE TABLE IF NOT EXISTS tblSubServices(ServiceId text, ServiceLinked text, Quantity text, Price text);";
private static final String CreateTableSubItems = "CREATE TABLE IF NOT EXISTS tblSubItems(ItemId text, ServiceId text, Quantity text, Price text);";
private static final String CreateTableHealthFacilities = "CREATE TABLE IF NOT EXISTS tblHealthFacilities(Id TEXT, Code TEXT, Name TEXT);";
private static final String createTableModuleConfig = "CREATE TABLE IF NOT EXISTS tblConfig(Id INTEGER, Module TEXT, Config TEXT);";

public final String REFERENCE_UNKNOWN;

Expand Down Expand Up @@ -331,7 +332,7 @@ public void createTables() {
String[] commands = {CreateTableControls, CreateTableReferences, CreateTableClaimAdmins,
createTablePolicyInquiry, createTableClaimDetails, createTableClaimItems, createTableClaimServices,
createTableClaimUploadStatus, CreateTableSubItems,
CreateTableSubServices,CreateTableItems,CreateTableServices, CreateTableHealthFacilities};
CreateTableSubServices,CreateTableItems,CreateTableServices, CreateTableHealthFacilities, createTableModuleConfig};
for (String command : commands) {
try {
db.execSQL(command);
Expand Down Expand Up @@ -949,4 +950,34 @@ public void InsertHealthFacilities(String Id, String Code, String Name) {
e.printStackTrace();
}
}

public void InsertConfig(int id, String module, String config) {
try {
ContentValues cv = new ContentValues();
cv.put("Id", id);
cv.put("Module", module);
cv.put("Config", config);

db.insert("tblConfig", null, cv);
} catch (Exception e) {
e.printStackTrace();
}
}

public JSONObject getModuleConfig(String module){
JSONObject config = new JSONObject();
try {
String query = "SELECT Config FROM tblConfig WHERE Module = \"" + module + "\"";
Cursor cursor1 = db.rawQuery(query, null);
// looping through all rows
if (cursor1.moveToFirst()) {
do {
config = new JSONObject(cursor1.getString(0));
} while (cursor1.moveToNext());
}
} catch (Exception e) {
e.printStackTrace();
}
return config;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.openimis.imisclaims.domain.entity;

import androidx.annotation.NonNull;

public class ModuleConfig {

@NonNull
private final String config;
@NonNull
private final String module;

public ModuleConfig(
@NonNull String config,
@NonNull String module
) {
this.config = config;
this.module = module;
}

@NonNull
public String getConfig() {
return config;
}

@NonNull
public String getModule() {
return module;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.openimis.imisclaims.network.request;

import androidx.annotation.NonNull;
import androidx.annotation.WorkerThread;

import org.openimis.imisclaims.GetConfigsQuery;

import java.util.List;

public class GetConfigGraphQLRequest extends BaseGraphQLRequest {

@NonNull
@WorkerThread
public List<GetConfigsQuery.ModuleConfiguration> get() throws Exception {
return makeSynchronous(new GetConfigsQuery()).getData().moduleConfigurations();
}
}
Loading
Loading