Lab Special results segregated into list

CR-20974-PDF-Results-In-Lab
haroon amjad 3 weeks ago
parent 4e76d35f90
commit 884e97ddfd

@ -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<NavigationService>().navigatorKey.currentContext!,

@ -10,6 +10,10 @@ class PatientLabSpecialResult {
dynamic resultDataTxt;
List<LabResultAttachment>? uploadedDocuments;
List<FileNameWithExtensionList>? 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<String, dynamic> 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<String, dynamic> toJson() {

@ -131,7 +131,37 @@ class LabResultByClinic extends StatelessWidget {
}
},
),
LabOrderSpecialResult(projectID: labOrder.projectID ?? "0", setupID: labOrder.setupID ?? ""),
Selector<LabViewModel, bool>(
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),
)),

@ -30,7 +30,7 @@ class _LabResultListState extends State<LabResultList> {
if (groupedResults.isEmpty && context.read<LabViewModel>().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();

@ -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<LabViewModel>()
.openSpecialLabResultsAttachmentSheet(specialLabResult: getIt.get<LabViewModel>().patientSpecialLabResultsList.first, projectID: projectID, setupID: setupID);
.openSpecialLabResultsAttachmentSheet(specialLabResult: patientLabSpecialResult, projectID: projectID, setupID: setupID);
},
backgroundColor: AppColors.primaryRedColor.withAlpha(20),
borderColor: AppColors.primaryRedColor.withAlpha(0),

Loading…
Cancel
Save