import 'package:fis_common/helpers/encrypt.dart'; import 'package:fis_i18n/i18n.dart'; import 'package:fis_jsonrpc/rpc.dart'; import 'package:flyinsonolite/jsonrpc/fisLib/services/log.m.dart'; import 'package:flyinsonolite/jsonrpc/jsonrpcclient.dart'; import 'package:flyinsonolite/infrastructure/logger.dart'; import 'package:flyinsonolite/managers/basemanager.dart'; import 'package:flyinsonolite/managers/interfaces/ireportmanager.dart'; import 'package:intl/intl.dart'; class ReportManager extends BaseManager implements IReportManager { @override Future> findReportsAsync(String recordCode) async { try { var reportInfos = await jsonRpcProxy.report.findReportsAsync( FindReportsRequest( token: token, recordCode: recordCode, ), ); return reportInfos; } catch (e) { await loggerAsyn(FISDeviceLogCategory.Error, 'ReportManager findReportsAsync ex: ${e.toString()}'); return []; } } /// 格式化时间 /// /// [time] 后端返回的时间 @override String getTime(String time) { String stringTime = ''; if (time.isNotEmpty) { stringTime = DateFormat("yyyy-MM-dd HH:mm:ss").format( DateTime.fromMillisecondsSinceEpoch( DateTime.tryParse(time)?.millisecondsSinceEpoch as int, ), ); } return stringTime; } ///获取默认词条 @override Future getDefaultThesaurusContentAsync() async { var defaultThesaurus = await jsonRpcProxy.report.getDefaultThesaurusContentAsync( GetDefaultThesaurusContentRequest( token: token, languageCode: i18nBook.locale.toCodeString('-'), ), ); return defaultThesaurus; } ///获取默认报告模板 @override Future getDefaultReportTemplateAsync() async { try { final result = await jsonRpcProxy.report.getDefaultReportTemplateContentAsync( GetDefaultReportTemplateContentRequest( token: token, languageCode: i18nBook.locale.toCodeString('-'), ), ); return result; } catch (e) { await loggerAsyn(FISDeviceLogCategory.Error, 'ReportManager getDefaultReportTemplateAsync ex: $e'); return null; } } ///新增报告 @override Future addReportAsync(String consultationCode, String templateJson, String name, String reportInfoJson) async { final addRequest = AddReportRequest( token: token, recordCode: consultationCode, reportType: ReportTypeEnum.LiveConsultation, reportTemplateJson: templateJson, isReferral: false, reportDatasJson: reportInfoJson, platformLabels: ["Flyinsono", "Web", "Consultation"], patientName: FEncryptHelper.encodeBase64(name), ); return await jsonRpcProxy.report.addReportAsync(addRequest); } ///修改报告 @override Future modifyReportAsync( String reportCode, DiagnosisOrganEnum reportOrgan, String consultationCode, templateJson, String name, String reportInfoJson) async { final updateRequest = ModifyReportRequest( reportCode: reportCode, token: token, recordCode: consultationCode, reportType: ReportTypeEnum.LiveConsultation, reportTemplateJson: templateJson, platformLabels: ["Flyinsono", "Web", "Consultation"], patientName: FEncryptHelper.encodeBase64(name), reportDatasJson: reportInfoJson, reportOrgan: reportOrgan, ); return await jsonRpcProxy.report.modifyReportAsync(updateRequest); } ///跟据reportCode获取报告详情 @override Future findReportByCodeAsync(String reportCode) async { final reportInfo = await jsonRpcProxy.report.findReportByCodeAsync( FindReportByCodeRequest( token: token, reportCode: reportCode, language: i18nBook.locale.toCodeString('-'), ), ); return reportInfo; } ///获取模板列表 @override Future> getReportTemplatePage({ int pageIndex = 1, int pageSize = 100, String? keyword, bool? isDefault, }) async { var result = await jsonRpcProxy.report.getReportTemplatePageAsync( FindReportTemplatePagesRequest( token: token, languageCode: i18nBook.locale.toCodeString('-'), reportTemplateName: keyword, isDefault: isDefault, pageIndex: pageIndex, pageSize: pageSize, ), ); return result; } ///获取指定模板 @override Future findReportTemplateByCode({String code = ''}) async { final remportTemplateDTO = await jsonRpcProxy.report .findReportTemplateByCodeAsync(FindReportTemplateByCodeRequest( token: token, languageCode: i18nBook.locale.toCodeString('-'), reportTemplateCode: code, )); return remportTemplateDTO; } ///获取词条库分页 @override Future> getThesaurusPage({String keyword = ''}) async { final getThesaurusPage = await jsonRpcProxy.report.getThesaurusPageAsync( GetThesaurusPageRequest( token: token, pageIndex: 1, pageSize: 100, thesaurusName: keyword, languageCode: i18nBook.locale.toCodeString('-'), ), ); return getThesaurusPage.pageData ?? []; } @override Future> getThesaurusItems({ String? thesaurusCode, String? keyword, }) async { return await jsonRpcProxy.report .getThesaurusItemsAsync(GetThesaurusItemsRequest( thesaurusCode: thesaurusCode, keyword: keyword, token: token, )); } }