123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- // ignore_for_file: must_be_immutable
- import 'dart:convert';
- import 'package:fis_jsonrpc/rpc.dart';
- import 'package:flutter/foundation.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/components/no_data_view.dart';
- import 'package:vitalapp/managers/interfaces/dictionary.dart';
- import 'package:vitalapp/pages/medical/controller.dart';
- import 'package:vitalapp/pages/medical/widgets/health_heart_check/health_check_left/index.dart';
- import 'package:vitalapp/pages/medical/widgets/health_heart_check/health_check_list/controller.dart';
- import 'package:vitalapp/pages/patient/detail/widgets/last_record.dart';
- class HeartTableCheck extends GetView<HeartCheckListController> {
- HeartTableCheck({
- super.key,
- this.checkDialog,
- required this.checkKey,
- });
- final String checkKey;
- Widget? checkDialog;
- @override
- Widget build(BuildContext context) {
- return Row(
- children: [
- Expanded(
- child: HeartCheckLeft(
- onRowTap: (value) async {
- final medicalController = await Get.put(MedicalController());
- medicalController.diagnosisDataValue.clear();
- if (value.physicalExamNumber?.isEmpty ?? true) {
- return;
- }
- ElectrocardiogramRecord? electrocardiogramRecord =
- await controller.registrationManager
- .getElectrocardiogramRecordByPhysicalExamNumberAsync(
- physicalExamNumber: value.physicalExamNumber ?? '',
- );
- if (electrocardiogramRecord?.examData == null) {
- controller.tableData == null;
- controller.update(['heart_detail']);
- } else {
- controller.tableData = await getTableData(
- electrocardiogramRecord?.examData ?? '',
- );
- controller.update(['heart_detail']);
- }
- if (!kIsWeb) Get.dialog(checkDialog ?? Container());
- },
- ),
- ),
- Container(
- width: 320,
- decoration: BoxDecoration(
- border: Border(
- left: BorderSide(
- color: Colors.grey[300]!,
- width: 1,
- ),
- ),
- ),
- child: _buildDetail(),
- )
- ],
- );
- }
- Widget _buildDetail() {
- return GetBuilder<HeartCheckListController>(
- id: "heart_detail",
- builder: (_) {
- if (controller.tableData == null || controller.tableData?.length == 0)
- return VNoDataView();
- return Column(
- children: [
- LastRecordTable(
- columnNames: const ['检测项目', '检测结果', '单位'],
- tableData: controller.tableData ?? [[]],
- )
- ],
- );
- },
- );
- }
- Future<List<List<String>>> getTableData(String data) async {
- var currentDiagnosis = <List<String>>[];
- var jsonData = json.decode(data);
- List<String> keys = jsonData.keys.toList();
- List<DictionaryWithUnitDTO>? dtos = [];
- dtos = await Get.find<IDictionaryManager>()
- .getDictionaryNameAndUnitByKeysAsync(keys) ??
- [];
- for (var key in keys) {
- if (key == "ECG_POINT" || key == "ECG_POINT12") {
- continue;
- }
- var dto = dtos.firstWhereOrNull((item) => item.key == key);
- if (dto == null) {
- continue;
- }
- final value = jsonData[key].toString();
- if (value.isEmpty) {
- // 不展示空值
- continue;
- }
- currentDiagnosis.add([
- dto.name ?? '',
- value,
- dto.unit ?? '',
- ]);
- }
- return currentDiagnosis;
- }
- }
|