|
|
|
@ -1,5 +1,4 @@
|
|
|
|
import 'dart:convert';
|
|
|
|
import 'dart:convert';
|
|
|
|
import 'dart:developer';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:dartz/dartz.dart';
|
|
|
|
import 'package:dartz/dartz.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/api/api_client.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/api/api_client.dart';
|
|
|
|
@ -8,11 +7,20 @@ import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart';
|
|
|
|
import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart';
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/body_symptom_response_model.dart';
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/body_symptom_response_model.dart';
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart';
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart';
|
|
|
|
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/symptoms_user_details_response_model.dart';
|
|
|
|
|
|
|
|
import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_response_model.dart';
|
|
|
|
import 'package:hmg_patient_app_new/services/logger_service.dart';
|
|
|
|
import 'package:hmg_patient_app_new/services/logger_service.dart';
|
|
|
|
|
|
|
|
|
|
|
|
abstract class SymptomsCheckerRepo {
|
|
|
|
abstract class SymptomsCheckerRepo {
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<SymptomsUserDetailsResponseModel>>> getUserDetails({
|
|
|
|
|
|
|
|
required String userName,
|
|
|
|
|
|
|
|
required String password,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<BodySymptomResponseModel>>> getBodySymptomsByName({
|
|
|
|
Future<Either<Failure, GenericApiModel<BodySymptomResponseModel>>> getBodySymptomsByName({
|
|
|
|
required List<String> organNames,
|
|
|
|
required List<String> organNames,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<RiskAndSuggestionsResponseModel>>> getRiskFactors({
|
|
|
|
Future<Either<Failure, GenericApiModel<RiskAndSuggestionsResponseModel>>> getRiskFactors({
|
|
|
|
@ -20,6 +28,9 @@ abstract class SymptomsCheckerRepo {
|
|
|
|
required String sex,
|
|
|
|
required String sex,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required String language,
|
|
|
|
required String language,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
|
|
|
|
required String sessionId,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<RiskAndSuggestionsResponseModel>>> getSuggestions({
|
|
|
|
Future<Either<Failure, GenericApiModel<RiskAndSuggestionsResponseModel>>> getSuggestions({
|
|
|
|
@ -27,6 +38,19 @@ abstract class SymptomsCheckerRepo {
|
|
|
|
required String sex,
|
|
|
|
required String sex,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required String language,
|
|
|
|
required String language,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required String sessionId,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<TriageDataDetails>>> getDiagnosisForTriage({
|
|
|
|
|
|
|
|
required int age,
|
|
|
|
|
|
|
|
required String sex,
|
|
|
|
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
|
|
|
|
required String language,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
|
|
|
|
required String sessionId,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -37,11 +61,71 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
SymptomsCheckerRepoImp({required this.apiClient, required this.loggerService});
|
|
|
|
SymptomsCheckerRepoImp({required this.apiClient, required this.loggerService});
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
Future<Either<Failure, GenericApiModel<BodySymptomResponseModel>>> getBodySymptomsByName({required List<String> organNames}) async {
|
|
|
|
Future<Either<Failure, GenericApiModel<SymptomsUserDetailsResponseModel>>> getUserDetails({
|
|
|
|
log("GetBodySymptomsByName Request URL: ${ApiConsts.getBodySymptomsByName}");
|
|
|
|
required String userName,
|
|
|
|
log("GetBodySymptomsByName Request Body: ${jsonEncode(organNames)}");
|
|
|
|
required String password,
|
|
|
|
|
|
|
|
}) async {
|
|
|
|
|
|
|
|
Map<String, String> body = {"userName": userName, "password": password};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
GenericApiModel<SymptomsUserDetailsResponseModel>? apiResponse;
|
|
|
|
|
|
|
|
Failure? failure;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await apiClient.post(
|
|
|
|
|
|
|
|
ApiConsts.symptomsUserLogin,
|
|
|
|
|
|
|
|
body: body,
|
|
|
|
|
|
|
|
isExternal: true,
|
|
|
|
|
|
|
|
isAllowAny: true,
|
|
|
|
|
|
|
|
isBodyPlainText: false,
|
|
|
|
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
|
|
|
|
loggerService.logError("getUserDetails API Failed: $error");
|
|
|
|
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// Parse response if it's a string
|
|
|
|
|
|
|
|
final Map<String, dynamic> responseData = response is String ? jsonDecode(response) : response;
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> headers = {'Content-Type': 'application/json', 'Accept': 'text/plain'};
|
|
|
|
SymptomsUserDetailsResponseModel symptomsUserDetailsResponseModel = SymptomsUserDetailsResponseModel.fromJson(responseData);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
apiResponse = GenericApiModel<SymptomsUserDetailsResponseModel>(
|
|
|
|
|
|
|
|
messageStatus: messageStatus ?? 1,
|
|
|
|
|
|
|
|
statusCode: statusCode,
|
|
|
|
|
|
|
|
errorMessage: errorMessage,
|
|
|
|
|
|
|
|
data: symptomsUserDetailsResponseModel,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
|
|
|
|
loggerService.logError("Error parsing getUserDetails response: $e");
|
|
|
|
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (failure != null) return Left(failure!);
|
|
|
|
|
|
|
|
if (apiResponse == null) return Left(ServerFailure("Unknown error"));
|
|
|
|
|
|
|
|
return Right(apiResponse!);
|
|
|
|
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
|
|
|
|
loggerService.logError("Exception in getUserDetails: $e");
|
|
|
|
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<BodySymptomResponseModel>>> getBodySymptomsByName({
|
|
|
|
|
|
|
|
required List<String> organNames,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
|
|
|
|
}) async {
|
|
|
|
|
|
|
|
Map<String, String> headers = {
|
|
|
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
|
|
|
'Authorization': 'Bearer $userSessionToken',
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
Map<String, dynamic> body = {
|
|
|
|
|
|
|
|
'bodyPartName': organNames,
|
|
|
|
|
|
|
|
'gender': gender,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
GenericApiModel<BodySymptomResponseModel>? apiResponse;
|
|
|
|
GenericApiModel<BodySymptomResponseModel>? apiResponse;
|
|
|
|
@ -50,21 +134,15 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
await apiClient.post(
|
|
|
|
await apiClient.post(
|
|
|
|
ApiConsts.getBodySymptomsByName,
|
|
|
|
ApiConsts.getBodySymptomsByName,
|
|
|
|
apiHeaders: headers,
|
|
|
|
apiHeaders: headers,
|
|
|
|
body: jsonEncode(organNames),
|
|
|
|
body: body,
|
|
|
|
isExternal: true,
|
|
|
|
isExternal: true,
|
|
|
|
isAllowAny: true,
|
|
|
|
isAllowAny: true,
|
|
|
|
isBodyPlainText: true,
|
|
|
|
isBodyPlainText: false,
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
loggerService.logError("GetBodySymptomsByName API Failed: $error");
|
|
|
|
|
|
|
|
log("GetBodySymptomsByName Failed: $error, Status: $statusCode");
|
|
|
|
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
log("GetBodySymptomsByName Response Status: $statusCode");
|
|
|
|
|
|
|
|
loggerService.logInfo("GetBodySymptomsByName API Success: $response");
|
|
|
|
|
|
|
|
log("GetBodySymptomsByName Response: $response");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BodySymptomResponseModel bodySymptomResponse = BodySymptomResponseModel.fromJson(response);
|
|
|
|
BodySymptomResponseModel bodySymptomResponse = BodySymptomResponseModel.fromJson(response);
|
|
|
|
|
|
|
|
|
|
|
|
apiResponse = GenericApiModel<BodySymptomResponseModel>(
|
|
|
|
apiResponse = GenericApiModel<BodySymptomResponseModel>(
|
|
|
|
@ -76,7 +154,6 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
loggerService.logError("Error parsing GetBodySymptomsByName response: $e");
|
|
|
|
loggerService.logError("Error parsing GetBodySymptomsByName response: $e");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
log("Parse Error: $e");
|
|
|
|
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -88,7 +165,6 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
loggerService.logError("Exception in getBodySymptomsByName: $e");
|
|
|
|
loggerService.logError("Exception in getBodySymptomsByName: $e");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
log("Exception: $e");
|
|
|
|
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -99,6 +175,9 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
required String sex,
|
|
|
|
required String sex,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required String language,
|
|
|
|
required String language,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
|
|
|
|
required String sessionId,
|
|
|
|
}) async {
|
|
|
|
}) async {
|
|
|
|
final Map<String, dynamic> body = {
|
|
|
|
final Map<String, dynamic> body = {
|
|
|
|
"age": {
|
|
|
|
"age": {
|
|
|
|
@ -107,6 +186,12 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
"sex": sex,
|
|
|
|
"sex": sex,
|
|
|
|
"evidence": evidenceIds.map((id) => {"id": id}).toList(),
|
|
|
|
"evidence": evidenceIds.map((id) => {"id": id}).toList(),
|
|
|
|
"language": language,
|
|
|
|
"language": language,
|
|
|
|
|
|
|
|
"generalId": sessionId,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> headers = {
|
|
|
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
|
|
|
'Authorization': 'Bearer $userSessionToken',
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
@ -115,17 +200,16 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
|
|
|
|
|
|
|
|
await apiClient.post(
|
|
|
|
await apiClient.post(
|
|
|
|
ApiConsts.getRiskFactors,
|
|
|
|
ApiConsts.getRiskFactors,
|
|
|
|
|
|
|
|
apiHeaders: headers,
|
|
|
|
body: body,
|
|
|
|
body: body,
|
|
|
|
isExternal: true,
|
|
|
|
isExternal: true,
|
|
|
|
isAllowAny: true,
|
|
|
|
isAllowAny: true,
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
log("GetRiskFactors Failed: $error, Status: $statusCode");
|
|
|
|
loggerService.logError("GetRiskFactors API Failed: $error");
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
log("GetRiskFactors Response: $response");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Parse response if it's a string
|
|
|
|
// Parse response if it's a string
|
|
|
|
final Map<String, dynamic> responseData = response is String ? jsonDecode(response) : response;
|
|
|
|
final Map<String, dynamic> responseData = response is String ? jsonDecode(response) : response;
|
|
|
|
|
|
|
|
|
|
|
|
@ -140,7 +224,6 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
loggerService.logError("Error parsing GetRiskFactors response: $e");
|
|
|
|
loggerService.logError("Error parsing GetRiskFactors response: $e");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
log("Parse Error: $e");
|
|
|
|
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -152,7 +235,79 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
loggerService.logError("Exception in getRiskFactors: $e");
|
|
|
|
loggerService.logError("Exception in getRiskFactors: $e");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
log("Exception: $e");
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
|
|
Future<Either<Failure, GenericApiModel<TriageDataDetails>>> getDiagnosisForTriage({
|
|
|
|
|
|
|
|
required int age,
|
|
|
|
|
|
|
|
required String sex,
|
|
|
|
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
|
|
|
|
required String language,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
|
|
|
|
required String sessionId,
|
|
|
|
|
|
|
|
}) async {
|
|
|
|
|
|
|
|
final Map<String, dynamic> body = {
|
|
|
|
|
|
|
|
"age": {
|
|
|
|
|
|
|
|
"value": age,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
"sex": sex,
|
|
|
|
|
|
|
|
"evidence": evidenceIds.map((id) => {"id": id}).toList(),
|
|
|
|
|
|
|
|
"language": language,
|
|
|
|
|
|
|
|
"suggest_method": "diagnosis",
|
|
|
|
|
|
|
|
"generalId": sessionId,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> headers = {
|
|
|
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
|
|
|
'Authorization': 'Bearer $userSessionToken',
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
GenericApiModel<TriageDataDetails>? apiResponse;
|
|
|
|
|
|
|
|
Failure? failure;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await apiClient.post(
|
|
|
|
|
|
|
|
ApiConsts.diagnosis,
|
|
|
|
|
|
|
|
apiHeaders: headers,
|
|
|
|
|
|
|
|
body: body,
|
|
|
|
|
|
|
|
isExternal: true,
|
|
|
|
|
|
|
|
isAllowAny: true,
|
|
|
|
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
|
|
|
|
loggerService.logError("getDiagnosisForTriage API Failed: $error");
|
|
|
|
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
// Parse response if it's a string
|
|
|
|
|
|
|
|
final Map<String, dynamic> responseData = response is String ? jsonDecode(response) : response;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final updatedResponseData = responseData['dataDetails'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TriageDataDetails riskFactorsResponse = TriageDataDetails.fromJson(updatedResponseData);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
apiResponse = GenericApiModel<TriageDataDetails>(
|
|
|
|
|
|
|
|
messageStatus: messageStatus ?? 1,
|
|
|
|
|
|
|
|
statusCode: statusCode,
|
|
|
|
|
|
|
|
errorMessage: errorMessage,
|
|
|
|
|
|
|
|
data: riskFactorsResponse,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
|
|
|
|
loggerService.logError("Error parsing getDiagnosisForTriage response: $e");
|
|
|
|
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (failure != null) return Left(failure!);
|
|
|
|
|
|
|
|
if (apiResponse == null) return Left(ServerFailure("Unknown error"));
|
|
|
|
|
|
|
|
return Right(apiResponse!);
|
|
|
|
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
|
|
|
|
loggerService.logError("Exception in getDiagnosisForTriage: $e");
|
|
|
|
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -163,6 +318,9 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
required String sex,
|
|
|
|
required String sex,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required List<String> evidenceIds,
|
|
|
|
required String language,
|
|
|
|
required String language,
|
|
|
|
|
|
|
|
required String userSessionToken,
|
|
|
|
|
|
|
|
required String sessionId,
|
|
|
|
|
|
|
|
required int gender,
|
|
|
|
}) async {
|
|
|
|
}) async {
|
|
|
|
final Map<String, dynamic> body = {
|
|
|
|
final Map<String, dynamic> body = {
|
|
|
|
"age": {
|
|
|
|
"age": {
|
|
|
|
@ -171,6 +329,12 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
"sex": sex,
|
|
|
|
"sex": sex,
|
|
|
|
"evidence": evidenceIds.map((id) => {"id": id}).toList(),
|
|
|
|
"evidence": evidenceIds.map((id) => {"id": id}).toList(),
|
|
|
|
"language": language,
|
|
|
|
"language": language,
|
|
|
|
|
|
|
|
"generalId": sessionId,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> headers = {
|
|
|
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
|
|
|
'Authorization': 'Bearer $userSessionToken',
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
@ -179,17 +343,16 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
|
|
|
|
|
|
|
|
await apiClient.post(
|
|
|
|
await apiClient.post(
|
|
|
|
ApiConsts.getSuggestions,
|
|
|
|
ApiConsts.getSuggestions,
|
|
|
|
|
|
|
|
apiHeaders: headers,
|
|
|
|
body: body,
|
|
|
|
body: body,
|
|
|
|
isExternal: true,
|
|
|
|
isExternal: true,
|
|
|
|
isAllowAny: true,
|
|
|
|
isAllowAny: true,
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
onFailure: (error, statusCode, {messageStatus, failureType}) {
|
|
|
|
log("getSuggestions Failed: $error, Status: $statusCode");
|
|
|
|
loggerService.logError("GetSuggestions API Failed: $error");
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
failure = failureType ?? ServerFailure(error);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
log("getSuggestions Response: $response");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Parse response if it's a string
|
|
|
|
// Parse response if it's a string
|
|
|
|
final Map<String, dynamic> responseData = response is String ? jsonDecode(response) : response;
|
|
|
|
final Map<String, dynamic> responseData = response is String ? jsonDecode(response) : response;
|
|
|
|
|
|
|
|
|
|
|
|
@ -202,9 +365,8 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
data: riskFactorsResponse,
|
|
|
|
data: riskFactorsResponse,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
loggerService.logError("Error parsing getSuggestions response: $e");
|
|
|
|
loggerService.logError("Error parsing GetSuggestions response: $e");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
log("Parse Error: $e");
|
|
|
|
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
failure = DataParsingFailure(e.toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -216,7 +378,6 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
} catch (e, stackTrace) {
|
|
|
|
loggerService.logError("Exception in getSuggestions: $e");
|
|
|
|
loggerService.logError("Exception in getSuggestions: $e");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
loggerService.logError("StackTrace: $stackTrace");
|
|
|
|
log("Exception: $e");
|
|
|
|
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
return Left(UnknownFailure(e.toString()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|