diff --git a/lib/features/lab/lab_view_model.dart b/lib/features/lab/lab_view_model.dart index 29e0dfcc..17250ce9 100644 --- a/lib/features/lab/lab_view_model.dart +++ b/lib/features/lab/lab_view_model.dart @@ -1085,26 +1085,25 @@ class LabViewModel extends ChangeNotifier { final bool isVP = Utils.isVidaPlusProject(int.parse(projectID.toString())); final List<({LabResult labResult, int index, String name})> attachments = []; - for (var labRes in patientSpecialLabResultsList) { - final lr = LabResult( - projectID: projectID, + + final lr = LabResult( + projectID: projectID, setupID: setupID, - accessionNo: labRes.accessionNo, - uploadedDocuments: labRes.uploadedDocuments, - fileNameWithExtensionList: labRes.fileNameWithExtensionList, - ); - if (isVP) { - final docs = labRes.uploadedDocuments ?? []; - for (int i = 0; i < docs.length; i++) { - attachments.add((labResult: lr, index: i, name: docs[i].fileName ?? "")); + accessionNo: specialLabResult.accessionNo, + uploadedDocuments: specialLabResult.uploadedDocuments, + fileNameWithExtensionList: specialLabResult.fileNameWithExtensionList, + ); + if (isVP) { + final docs = specialLabResult.uploadedDocuments ?? []; + for (int i = 0; i < docs.length; i++) { + attachments.add((labResult: lr, index: i, name: docs[i].fileName ?? "")); } } else { - final files = labRes.fileNameWithExtensionList ?? []; - for (int i = 0; i < files.length; i++) { - attachments.add((labResult: lr, index: i, name: files[i].fileNameWithExtension ?? "")); + final files = specialLabResult.fileNameWithExtensionList ?? []; + for (int i = 0; i < files.length; i++) { + attachments.add((labResult: lr, index: i, name: files[i].fileNameWithExtension ?? "")); } } - } showCommonBottomSheetWithoutHeight( getIt.get().navigatorKey.currentContext!, diff --git a/lib/features/lab/models/resp_models/patient_lab_special_result.dart b/lib/features/lab/models/resp_models/patient_lab_special_result.dart index c0144081..0020350c 100644 --- a/lib/features/lab/models/resp_models/patient_lab_special_result.dart +++ b/lib/features/lab/models/resp_models/patient_lab_special_result.dart @@ -10,6 +10,10 @@ class PatientLabSpecialResult { dynamic resultDataTxt; List? uploadedDocuments; List? fileNameWithExtensionList; + String? testCode; + String? testDescription; + String? testID; + String? testShortDescription; PatientLabSpecialResult( {this.invoiceNo, @@ -21,6 +25,10 @@ class PatientLabSpecialResult { this.resultDataTxt, this.uploadedDocuments, this.fileNameWithExtensionList, + this.testCode, + this.testDescription, + this.testShortDescription, + this.testID, }); PatientLabSpecialResult.fromJson(Map json) { @@ -45,6 +53,11 @@ class PatientLabSpecialResult { fileNameWithExtensionList!.add(FileNameWithExtensionList.fromJson(v)); }); } + + testCode = json['TestCode']; + testDescription = json['TestDescription']; + testID = json['TestID']; + testShortDescription = json['TestShortDescription']; } Map toJson() { diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart index 6d6e7cd2..c3d6866b 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart @@ -131,7 +131,37 @@ class LabResultByClinic extends StatelessWidget { } }, ), - LabOrderSpecialResult(projectID: labOrder.projectID ?? "0", setupID: labOrder.setupID ?? ""), + Selector( + selector: (_, model) => model.isSpecialResultsLoading, + builder: (_, isLoading, __) { + return isLoading + ? Container( + margin: EdgeInsets.symmetric(vertical: 8.h), + padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 16.h), + width: MediaQuery.sizeOf(context).width - 24, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 12.h, + children: [ + "loading".toText14().toShimmer2(isShow: isLoading), + "loading".toText14().toShimmer2(isShow: isLoading), + ], + ), + ) + : ListView.builder( + padding: EdgeInsets.zero, + scrollDirection: Axis.vertical, + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: labViewModel.patientSpecialLabResultsList.isNotEmpty ? labViewModel.patientSpecialLabResultsList.length : 0, + itemBuilder: (context, index) { + return LabOrderSpecialResult( + patientLabSpecialResult: labViewModel.patientSpecialLabResultsList[index], projectID: labOrder.projectID ?? "0", setupID: labOrder.setupID ?? ""); + }, + ); + }), + // LabOrderSpecialResult(projectID: labOrder.projectID ?? "0", setupID: labOrder.setupID ?? ""), ], ).paddingAll(24.h), )), diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart index 934f8337..38c228a7 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart @@ -30,7 +30,7 @@ class _LabResultListState extends State { if (groupedResults.isEmpty && context.read().labSpecialResult.isEmpty) { // return Utils.getNoDataWidget(context, // noDataText: LocaleKeys.noLabResults.tr(context: context)); - return Container(); + return SizedBox.shrink(); } else { // Convert map entries to a list for indexed access final packageEntries = groupedResults.entries.toList(); diff --git a/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart b/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart index d97b87d4..15ad8a6c 100644 --- a/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart +++ b/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart @@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; +import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_special_result.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -15,8 +16,9 @@ import 'package:provider/provider.dart'; class LabOrderSpecialResult extends StatelessWidget { String projectID; String setupID; + PatientLabSpecialResult patientLabSpecialResult; - LabOrderSpecialResult({super.key, required this.projectID, required this.setupID}); + LabOrderSpecialResult({super.key, required this.projectID, required this.setupID, required this.patientLabSpecialResult}); @override Widget build(BuildContext context) { @@ -47,7 +49,7 @@ class LabOrderSpecialResult extends StatelessWidget { ) ); } - if(data.isNotEmpty ) { + if (data.isNotEmpty) { return AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, @@ -65,11 +67,10 @@ class LabOrderSpecialResult extends StatelessWidget { spacing: 8.h, crossAxisAlignment: CrossAxisAlignment.start, children: [ - // ...labOrder!.testDetails!.map((detail) { - LocaleKeys.specialResult - .tr() - .toText14(isBold: true) - .toShimmer2(isShow: isLoading), + (patientLabSpecialResult.testDescription ?? LocaleKeys.specialResult.tr()).toText16(isBold: true), + SizedBox(height: 3.h), + (patientLabSpecialResult.testShortDescription ?? LocaleKeys.specialResult.tr()).toText13(weight: FontWeight.w600, color: AppColors.textColorLight), + SizedBox(height: 12.h), data.isEmpty ? LocaleKeys.noSpecialResult .tr() @@ -77,8 +78,9 @@ class LabOrderSpecialResult extends StatelessWidget { isBold: true, color: AppColors.textColorLight) .toShimmer2(isShow: isLoading) - : HtmlWidget(data).toShimmer2(isShow: isLoading), - CustomButton( + : HtmlWidget(patientLabSpecialResult.resultDataHTML ?? "").toShimmer2(isShow: isLoading), + SizedBox(height: 12.h), + CustomButton( icon: AppAssets.document, iconColor: AppColors.primaryRedColor, iconSize: 16.h, @@ -86,7 +88,7 @@ class LabOrderSpecialResult extends StatelessWidget { onPressed: () async { getIt .get() - .openSpecialLabResultsAttachmentSheet(specialLabResult: getIt.get().patientSpecialLabResultsList.first, projectID: projectID, setupID: setupID); + .openSpecialLabResultsAttachmentSheet(specialLabResult: patientLabSpecialResult, projectID: projectID, setupID: setupID); }, backgroundColor: AppColors.primaryRedColor.withAlpha(20), borderColor: AppColors.primaryRedColor.withAlpha(0),