Browse Source

同步Server最新接口WingInterfaceLibrary30.dll

loki.wu 2 years ago
parent
commit
56ee8f30a2

+ 7 - 0
lib/services/authentication.dart

@@ -22,6 +22,7 @@ class AuthenticationService extends JsonRpcClientBase {
 		FJsonConvert.setDecoder((map) => TokenDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => ValidateTokenResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => IList<TokenDTO>.fromJson(map));
+		FJsonConvert.setDecoder((map) => PageResult<TokenDTO>.fromJson(map));
 	}
 
 	Future<String> getAuthorizationAsync(AuthenticationRequest request) async {
@@ -74,5 +75,11 @@ class AuthenticationService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
+	Future<PageResult<TokenDTO>> getPagedTokensAsync(GetPagedTokensRequest request) async {
+		var rpcRst = await call("GetPagedTokensAsync", request);
+		var result = PageResult<TokenDTO>.fromJson(rpcRst as Map<String, dynamic>);
+		return result;
+	}
+
 }
 

+ 104 - 0
lib/services/authentication.m.dart

@@ -1,5 +1,7 @@
 import 'package:fis_jsonrpc/utils.dart';
 
+import 'package:fis_common/json_convert.dart';
+
 class BaseRequest {
 
 	BaseRequest();
@@ -87,6 +89,7 @@ class TokenDTO {
 	int version;
 	String? code;
 	AccountType accountType;
+	String? accountName;
 	Platform platform;
 	LoginSource loginSource;
 	String? clientId;
@@ -100,6 +103,7 @@ class TokenDTO {
 		this.version = 0,
 		this.code,
 		this.accountType = AccountType.Admin,
+		this.accountName,
 		this.platform = Platform.Windows,
 		this.loginSource = LoginSource.PC,
 		this.clientId,
@@ -115,6 +119,7 @@ class TokenDTO {
 			version: map['Version'],
 			code: map['Code'],
 			accountType: AccountType.values.firstWhere((e) => e.index == map['AccountType']),
+			accountName: map['AccountName'],
 			platform: Platform.values.firstWhere((e) => e.index == map['Platform']),
 			loginSource: LoginSource.values.firstWhere((e) => e.index == map['LoginSource']),
 			clientId: map['ClientId'],
@@ -132,6 +137,8 @@ class TokenDTO {
 		if(code != null)
 			map['Code'] = code;
 		map['AccountType'] = accountType.index;
+		if(accountName != null)
+			map['AccountName'] = accountName;
 		map['Platform'] = platform.index;
 		map['LoginSource'] = loginSource.index;
 		if(clientId != null)
@@ -359,4 +366,101 @@ class SetOnlineStateRequest extends TokenRequest{
 	}
 }
 
+class PageResult<T> {
+	int pageIndex;
+	int pageSize;
+	int totalCount;
+	List<T>? pageData;
+
+	PageResult({
+		this.pageIndex = 0,
+		this.pageSize = 0,
+		this.totalCount = 0,
+		this.pageData,
+	});
+
+	factory PageResult.fromJson(Map<String, dynamic> map) {
+		List<T> pageDataList = [];
+		if (map['PageData'] != null) {
+			pageDataList.addAll(
+					(map['PageData'] as List).map((e) => FJsonConvert.fromJson<T>(e)!));
+		}
+		return PageResult( 
+			pageIndex: map['PageIndex'],
+			pageSize: map['PageSize'],
+			totalCount: map['TotalCount'],
+			pageData: pageDataList,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['PageIndex'] = pageIndex;
+		map['PageSize'] = pageSize;
+		map['TotalCount'] = totalCount;
+		if(pageData != null)
+			map['PageData'] = pageData;
+		return map;
+	}
+}
+
+class PageRequest extends TokenRequest{
+	int pageIndex;
+	int pageSize;
+
+	PageRequest({
+		this.pageIndex = 0,
+		this.pageSize = 0,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory PageRequest.fromJson(Map<String, dynamic> map) {
+		return PageRequest( 
+			pageIndex: map['PageIndex'],
+			pageSize: map['PageSize'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		map['PageIndex'] = pageIndex;
+		map['PageSize'] = pageSize;
+		return map;
+	}
+}
+
+class GetPagedTokensRequest extends PageRequest{
+	String? keyword;
+
+	GetPagedTokensRequest({
+		this.keyword,
+		int pageIndex = 0,
+		int pageSize = 0,
+		String? token,
+	}) : super(
+			pageIndex: pageIndex,
+			pageSize: pageSize,
+			token: token,
+		);
+
+	factory GetPagedTokensRequest.fromJson(Map<String, dynamic> map) {
+		return GetPagedTokensRequest( 
+			keyword: map['Keyword'],
+			pageIndex: map['PageIndex'],
+			pageSize: map['PageSize'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(keyword != null)
+			map['Keyword'] = keyword;
+		return map;
+	}
+}
+
 

+ 0 - 28
lib/services/device.m.dart

@@ -649,34 +649,6 @@ class RemoveDeviceRelevancyRequest extends TokenRequest{
 	}
 }
 
-class PageRequest extends TokenRequest{
-	int pageIndex;
-	int pageSize;
-
-	PageRequest({
-		this.pageIndex = 0,
-		this.pageSize = 0,
-		String? token,
-	}) : super(
-			token: token,
-		);
-
-	factory PageRequest.fromJson(Map<String, dynamic> map) {
-		return PageRequest( 
-			pageIndex: map['PageIndex'],
-			pageSize: map['PageSize'],
-			token: map['Token'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		map['PageIndex'] = pageIndex;
-		map['PageSize'] = pageSize;
-		return map;
-	}
-}
-
 class GetPersonDeviceRequest extends PageRequest{
 	String? keyWord;
 	String? deviceType;

+ 2 - 0
lib/services/patient.dart

@@ -5,6 +5,8 @@ import 'package:fis_common/json_convert.dart';
 
 import 'patient.m.dart';
 
+import 'authentication.m.dart';
+
 
 class PatientService extends JsonRpcClientBase {
 	PatientService(

+ 137 - 41
lib/services/patient.m.dart

@@ -1,11 +1,8 @@
 import 'authentication.m.dart';
 import 'connect.m.dart';
-import 'device.m.dart';
 
 import 'package:fis_jsonrpc/utils.dart';
 
-import 'package:fis_common/json_convert.dart';
-
 class DataItemDTO {
 	String? key;
 	String? value;
@@ -333,44 +330,6 @@ class ClientPatientInfoBaseDTO extends BaseDTO{
 	}
 }
 
-class PageResult<T> {
-	int pageIndex;
-	int pageSize;
-	int totalCount;
-	List<T>? pageData;
-
-	PageResult({
-		this.pageIndex = 0,
-		this.pageSize = 0,
-		this.totalCount = 0,
-		this.pageData,
-	});
-
-	factory PageResult.fromJson(Map<String, dynamic> map) {
-		List<T> pageDataList = [];
-		if (map['PageData'] != null) {
-			pageDataList.addAll(
-					(map['PageData'] as List).map((e) => FJsonConvert.fromJson<T>(e)!));
-		}
-		return PageResult( 
-			pageIndex: map['PageIndex'],
-			pageSize: map['PageSize'],
-			totalCount: map['TotalCount'],
-			pageData: pageDataList,
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = Map<String, dynamic>();
-		map['PageIndex'] = pageIndex;
-		map['PageSize'] = pageSize;
-		map['TotalCount'] = totalCount;
-		if(pageData != null)
-			map['PageData'] = pageData;
-		return map;
-	}
-}
-
 enum PatientValidStatusEnum {
 	All,
 	CheckOut,
@@ -1249,6 +1208,91 @@ class ScanImageDTO {
 	}
 }
 
+enum CarotidScanTypeEnum {
+	CarotidLeft,
+	CarotidRight,
+}
+
+enum CarotidScanDirectionEnum {
+	TopToBottom,
+	BottomToTop,
+}
+
+enum CarotidAIImageTypeEnum {
+	Base,
+	YShape,
+	Plaque,
+}
+
+class MeasureImageFileDTO {
+	CarotidAIImageTypeEnum imageType;
+	String? imageFile;
+
+	MeasureImageFileDTO({
+		this.imageType = CarotidAIImageTypeEnum.Base,
+		this.imageFile,
+	});
+
+	factory MeasureImageFileDTO.fromJson(Map<String, dynamic> map) {
+		return MeasureImageFileDTO( 
+			imageType: CarotidAIImageTypeEnum.values.firstWhere((e) => e.index == map['ImageType']),
+			imageFile: map['ImageFile'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['ImageType'] = imageType.index;
+		if(imageFile != null)
+			map['ImageFile'] = imageFile;
+		return map;
+	}
+}
+
+class CarotidResultDTO {
+	CarotidScanTypeEnum carotidScanType;
+	CarotidScanDirectionEnum carotidScanDirection;
+	String? surfaceFile;
+	String? mdlFile;
+	List<MeasureImageFileDTO>? measureImageFiles;
+	String? measureResult;
+
+	CarotidResultDTO({
+		this.carotidScanType = CarotidScanTypeEnum.CarotidLeft,
+		this.carotidScanDirection = CarotidScanDirectionEnum.TopToBottom,
+		this.surfaceFile,
+		this.mdlFile,
+		this.measureImageFiles,
+		this.measureResult,
+	});
+
+	factory CarotidResultDTO.fromJson(Map<String, dynamic> map) {
+		return CarotidResultDTO( 
+			carotidScanType: CarotidScanTypeEnum.values.firstWhere((e) => e.index == map['CarotidScanType']),
+			carotidScanDirection: CarotidScanDirectionEnum.values.firstWhere((e) => e.index == map['CarotidScanDirection']),
+			surfaceFile: map['SurfaceFile'],
+			mdlFile: map['MdlFile'],
+			measureImageFiles: map['MeasureImageFiles'] != null ? (map['MeasureImageFiles'] as List).map((e)=>MeasureImageFileDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			measureResult: map['MeasureResult'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['CarotidScanType'] = carotidScanType.index;
+		map['CarotidScanDirection'] = carotidScanDirection.index;
+		if(surfaceFile != null)
+			map['SurfaceFile'] = surfaceFile;
+		if(mdlFile != null)
+			map['MdlFile'] = mdlFile;
+		if(measureImageFiles != null)
+			map['MeasureImageFiles'] = measureImageFiles;
+		if(measureResult != null)
+			map['MeasureResult'] = measureResult;
+		return map;
+	}
+}
+
 class RemedicalInfoDTO extends BaseDTO{
 	String? remedicalCode;
 	String? deviceCode;
@@ -1263,6 +1307,7 @@ class RemedicalInfoDTO extends BaseDTO{
 	List<DiagnosisOrganEnum>? diagnosisOrgans;
 	MeasuredResultsDTO? measuredResult;
 	ScanImageDTO? commentResult;
+	CarotidResultDTO? carotidResult;
 	DateTime? createTime;
 	DateTime? updateTime;
 
@@ -1280,6 +1325,7 @@ class RemedicalInfoDTO extends BaseDTO{
 		this.diagnosisOrgans,
 		this.measuredResult,
 		this.commentResult,
+		this.carotidResult,
 		this.createTime,
 		this.updateTime,
 	});
@@ -1299,6 +1345,7 @@ class RemedicalInfoDTO extends BaseDTO{
 			diagnosisOrgans: map['DiagnosisOrgans'] != null ? (map['DiagnosisOrgans'] as List).map((e)=>DiagnosisOrganEnum.values.firstWhere((i) => i.index == e)).toList() : null,
 			measuredResult: map['MeasuredResult'] != null ? MeasuredResultsDTO.fromJson(map['MeasuredResult']) : null,
 			commentResult: map['CommentResult'] != null ? ScanImageDTO.fromJson(map['CommentResult']) : null,
+			carotidResult: map['CarotidResult'] != null ? CarotidResultDTO.fromJson(map['CarotidResult']) : null,
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
 			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
 		);
@@ -1310,6 +1357,46 @@ class RemedicalInfoDTO extends BaseDTO{
 	}
 }
 
+enum DiagnosisStatusEnum {
+	NotRequired,
+	Under,
+	Completed,
+}
+
+enum DiagnosisReportStatusEnum {
+	NotRequired,
+	Reporting,
+	Reported,
+}
+
+class DiagnosisInfoDTO {
+	DiagnosisOrganEnum diagnosisOrgan;
+	DiagnosisConclusionEnum conclusion;
+	DiagnosisReportStatusEnum reportStatus;
+
+	DiagnosisInfoDTO({
+		this.diagnosisOrgan = DiagnosisOrganEnum.Null,
+		this.conclusion = DiagnosisConclusionEnum.NotRequired,
+		this.reportStatus = DiagnosisReportStatusEnum.NotRequired,
+	});
+
+	factory DiagnosisInfoDTO.fromJson(Map<String, dynamic> map) {
+		return DiagnosisInfoDTO( 
+			diagnosisOrgan: DiagnosisOrganEnum.values.firstWhere((e) => e.index == map['DiagnosisOrgan']),
+			conclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['Conclusion']),
+			reportStatus: DiagnosisReportStatusEnum.values.firstWhere((e) => e.index == map['ReportStatus']),
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['DiagnosisOrgan'] = diagnosisOrgan.index;
+		map['Conclusion'] = conclusion.index;
+		map['ReportStatus'] = reportStatus.index;
+		return map;
+	}
+}
+
 class GetRecordsPageDTO {
 	DateTime? createTime;
 	String? deptName;
@@ -1320,6 +1407,8 @@ class GetRecordsPageDTO {
 	RecordStatusEnum recordStatus;
 	bool isRead;
 	List<RemedicalInfoDTO>? remedicalList;
+	DiagnosisStatusEnum diagnosisStatus;
+	List<DiagnosisInfoDTO>? diagnosisInfos;
 
 	GetRecordsPageDTO({
 		this.createTime,
@@ -1331,6 +1420,8 @@ class GetRecordsPageDTO {
 		this.recordStatus = RecordStatusEnum.NotScanned,
 		this.isRead = false,
 		this.remedicalList,
+		this.diagnosisStatus = DiagnosisStatusEnum.NotRequired,
+		this.diagnosisInfos,
 	});
 
 	factory GetRecordsPageDTO.fromJson(Map<String, dynamic> map) {
@@ -1344,6 +1435,8 @@ class GetRecordsPageDTO {
 			recordStatus: RecordStatusEnum.values.firstWhere((e) => e.index == map['RecordStatus']),
 			isRead: map['IsRead'],
 			remedicalList: map['RemedicalList'] != null ? (map['RemedicalList'] as List).map((e)=>RemedicalInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			diagnosisStatus: DiagnosisStatusEnum.values.firstWhere((e) => e.index == map['DiagnosisStatus']),
+			diagnosisInfos: map['DiagnosisInfos'] != null ? (map['DiagnosisInfos'] as List).map((e)=>DiagnosisInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 		);
 	}
 
@@ -1365,6 +1458,9 @@ class GetRecordsPageDTO {
 		map['IsRead'] = isRead;
 		if(remedicalList != null)
 			map['RemedicalList'] = remedicalList;
+		map['DiagnosisStatus'] = diagnosisStatus.index;
+		if(diagnosisInfos != null)
+			map['DiagnosisInfos'] = diagnosisInfos;
 		return map;
 	}
 }

+ 9 - 1
lib/services/recordInfo.m.dart

@@ -1,7 +1,6 @@
 import 'authentication.m.dart';
 import 'patient.m.dart';
 import 'connect.m.dart';
-import 'device.m.dart';
 import 'organization.m.dart';
 
 import 'package:fis_jsonrpc/utils.dart';
@@ -131,6 +130,8 @@ class QueryRecordResult {
 	String? deviceName;
 	RecordStatusEnum recordStatus;
 	List<PatientInfoExt>? patientInfoExtList;
+	DiagnosisStatusEnum diagnosisStatus;
+	List<DiagnosisInfoDTO>? diagnosisInfos;
 
 	QueryRecordResult({
 		this.createTime,
@@ -142,6 +143,8 @@ class QueryRecordResult {
 		this.deviceName,
 		this.recordStatus = RecordStatusEnum.NotScanned,
 		this.patientInfoExtList,
+		this.diagnosisStatus = DiagnosisStatusEnum.NotRequired,
+		this.diagnosisInfos,
 	});
 
 	factory QueryRecordResult.fromJson(Map<String, dynamic> map) {
@@ -155,6 +158,8 @@ class QueryRecordResult {
 			deviceName: map['DeviceName'],
 			recordStatus: RecordStatusEnum.values.firstWhere((e) => e.index == map['RecordStatus']),
 			patientInfoExtList: map['PatientInfoExtList'] != null ? (map['PatientInfoExtList'] as List).map((e)=>PatientInfoExt.fromJson(e as Map<String,dynamic>)).toList() : null,
+			diagnosisStatus: DiagnosisStatusEnum.values.firstWhere((e) => e.index == map['DiagnosisStatus']),
+			diagnosisInfos: map['DiagnosisInfos'] != null ? (map['DiagnosisInfos'] as List).map((e)=>DiagnosisInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 		);
 	}
 
@@ -176,6 +181,9 @@ class QueryRecordResult {
 		map['RecordStatus'] = recordStatus.index;
 		if(patientInfoExtList != null)
 			map['PatientInfoExtList'] = patientInfoExtList;
+		map['DiagnosisStatus'] = diagnosisStatus.index;
+		if(diagnosisInfos != null)
+			map['DiagnosisInfos'] = diagnosisInfos;
 		return map;
 	}
 }

+ 23 - 0
lib/services/remedical.dart

@@ -8,6 +8,7 @@ import 'remedical.m.dart';
 import 'recordInfo.m.dart';
 import 'organization.m.dart';
 import 'patient.m.dart';
+import 'authentication.m.dart';
 
 
 class RemedicalService extends JsonRpcClientBase {
@@ -36,6 +37,7 @@ class RemedicalService extends JsonRpcClientBase {
 		FJsonConvert.setDecoder((map) => MeasureApplicationDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => CommentItemResultDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => PresetCommentItemResultDTO.fromJson(map));
+		FJsonConvert.setDecoder((map) => MeasureSystemSettingDTO.fromJson(map));
 	}
 
 	Future<CreateExaminfoResult> createExamInfoAsync(CreateExaminfoRequest request) async {
@@ -145,5 +147,26 @@ class RemedicalService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
+	Future<bool> saveUserDefinedCommentsAsync(SaveUserDefinedCommentsRequest request) async {
+		var rpcRst = await call("SaveUserDefinedCommentsAsync", request);
+		return rpcRst;
+	}
+
+	Future<bool> saveUserDefinedMeasureApplicationAsync(SaveUserDefinedMeasureApplicationRequest request) async {
+		var rpcRst = await call("SaveUserDefinedMeasureApplicationAsync", request);
+		return rpcRst;
+	}
+
+	Future<MeasureSystemSettingDTO> getMeasureSystemSettingAsync(GetMeasureSystemSettingRequest request) async {
+		var rpcRst = await call("GetMeasureSystemSettingAsync", request);
+		var result = MeasureSystemSettingDTO.fromJson(rpcRst as Map<String, dynamic>);
+		return result;
+	}
+
+	Future<bool> saveMeasureSystemSettingAsync(SaveMeasureSystemSettingRequest request) async {
+		var rpcRst = await call("SaveMeasureSystemSettingAsync", request);
+		return rpcRst;
+	}
+
 }
 

+ 336 - 1
lib/services/remedical.m.dart

@@ -2,7 +2,6 @@ import 'authentication.m.dart';
 import 'patient.m.dart';
 import 'recordInfo.m.dart';
 import 'connect.m.dart';
-import 'device.m.dart';
 import 'organization.m.dart';
 
 import 'package:fis_jsonrpc/utils.dart';
@@ -1107,4 +1106,340 @@ class GetReportElementByLanguageRequest extends TokenRequest{
 	}
 }
 
+class SaveUserDefinedCommentsRequest extends TokenRequest{
+	String? version;
+	String? languageCode;
+	String? applicationName;
+	String? categoryName;
+	List<CommentItemDTO>? commentItems;
+
+	SaveUserDefinedCommentsRequest({
+		this.version,
+		this.languageCode,
+		this.applicationName,
+		this.categoryName,
+		this.commentItems,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory SaveUserDefinedCommentsRequest.fromJson(Map<String, dynamic> map) {
+		return SaveUserDefinedCommentsRequest( 
+			version: map['Version'],
+			languageCode: map['LanguageCode'],
+			applicationName: map['ApplicationName'],
+			categoryName: map['CategoryName'],
+			commentItems: map['CommentItems'] != null ? (map['CommentItems'] as List).map((e)=>CommentItemDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(version != null)
+			map['Version'] = version;
+		if(languageCode != null)
+			map['LanguageCode'] = languageCode;
+		if(applicationName != null)
+			map['ApplicationName'] = applicationName;
+		if(categoryName != null)
+			map['CategoryName'] = categoryName;
+		if(commentItems != null)
+			map['CommentItems'] = commentItems;
+		return map;
+	}
+}
+
+class UserDefinedItemMetaDTO {
+	String? name;
+	String? workingMethodItem;
+
+	UserDefinedItemMetaDTO({
+		this.name,
+		this.workingMethodItem,
+	});
+
+	factory UserDefinedItemMetaDTO.fromJson(Map<String, dynamic> map) {
+		return UserDefinedItemMetaDTO( 
+			name: map['Name'],
+			workingMethodItem: map['WorkingMethodItem'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(name != null)
+			map['Name'] = name;
+		if(workingMethodItem != null)
+			map['WorkingMethodItem'] = workingMethodItem;
+		return map;
+	}
+}
+
+class UserDefinedMeasureFolderDTO {
+	String? name;
+	List<String>? workingItemNames;
+	String? defaultItem;
+	List<UserDefinedItemMetaDTO>? multiMethodItemMetas;
+
+	UserDefinedMeasureFolderDTO({
+		this.name,
+		this.workingItemNames,
+		this.defaultItem,
+		this.multiMethodItemMetas,
+	});
+
+	factory UserDefinedMeasureFolderDTO.fromJson(Map<String, dynamic> map) {
+		return UserDefinedMeasureFolderDTO( 
+			name: map['Name'],
+			workingItemNames: map['WorkingItemNames'] != null ? map['WorkingItemNames'].cast<String>().toList() : null,
+			defaultItem: map['DefaultItem'],
+			multiMethodItemMetas: map['MultiMethodItemMetas'] != null ? (map['MultiMethodItemMetas'] as List).map((e)=>UserDefinedItemMetaDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(name != null)
+			map['Name'] = name;
+		if(workingItemNames != null)
+			map['WorkingItemNames'] = workingItemNames;
+		if(defaultItem != null)
+			map['DefaultItem'] = defaultItem;
+		if(multiMethodItemMetas != null)
+			map['MultiMethodItemMetas'] = multiMethodItemMetas;
+		return map;
+	}
+}
+
+class UserDefinedMeasureGroupDTO {
+	String? name;
+	List<UserDefinedMeasureFolderDTO>? folders;
+
+	UserDefinedMeasureGroupDTO({
+		this.name,
+		this.folders,
+	});
+
+	factory UserDefinedMeasureGroupDTO.fromJson(Map<String, dynamic> map) {
+		return UserDefinedMeasureGroupDTO( 
+			name: map['Name'],
+			folders: map['Folders'] != null ? (map['Folders'] as List).map((e)=>UserDefinedMeasureFolderDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(name != null)
+			map['Name'] = name;
+		if(folders != null)
+			map['Folders'] = folders;
+		return map;
+	}
+}
+
+class UserDefinedMeasureModeDTO {
+	String? modeName;
+	List<UserDefinedMeasureGroupDTO>? workingGroups;
+
+	UserDefinedMeasureModeDTO({
+		this.modeName,
+		this.workingGroups,
+	});
+
+	factory UserDefinedMeasureModeDTO.fromJson(Map<String, dynamic> map) {
+		return UserDefinedMeasureModeDTO( 
+			modeName: map['ModeName'],
+			workingGroups: map['WorkingGroups'] != null ? (map['WorkingGroups'] as List).map((e)=>UserDefinedMeasureGroupDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(modeName != null)
+			map['ModeName'] = modeName;
+		if(workingGroups != null)
+			map['WorkingGroups'] = workingGroups;
+		return map;
+	}
+}
+
+class SaveUserDefinedMeasureApplicationRequest extends TokenRequest{
+	String? version;
+	String? applicationName;
+	String? categoryName;
+	UserDefinedMeasureModeDTO? workingMode;
+
+	SaveUserDefinedMeasureApplicationRequest({
+		this.version,
+		this.applicationName,
+		this.categoryName,
+		this.workingMode,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory SaveUserDefinedMeasureApplicationRequest.fromJson(Map<String, dynamic> map) {
+		return SaveUserDefinedMeasureApplicationRequest( 
+			version: map['Version'],
+			applicationName: map['ApplicationName'],
+			categoryName: map['CategoryName'],
+			workingMode: map['WorkingMode'] != null ? UserDefinedMeasureModeDTO.fromJson(map['WorkingMode']) : null,
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(version != null)
+			map['Version'] = version;
+		if(applicationName != null)
+			map['ApplicationName'] = applicationName;
+		if(categoryName != null)
+			map['CategoryName'] = categoryName;
+		if(workingMode != null)
+			map['WorkingMode'] = workingMode;
+		return map;
+	}
+}
+
+enum CursorTypeEnum {
+	CursorType1Icon,
+	CursorType2Icon,
+	CursorType3Icon,
+	CursorType4Icon,
+	CursorType5Icon,
+}
+
+class MeasureSystemSettingDTO {
+	String? version;
+	CursorTypeEnum cursorType;
+	int cursorSize;
+	int shapeCursorSize;
+	String? cursorColor;
+	bool showResultWindow;
+	int fontSize;
+	bool showCursorLine;
+	bool holdMeasureLine;
+	bool showDepthGuideline;
+	bool showBriefAnnotation;
+	String? minCursorDistance;
+	String? autoSnapDistance;
+	int annotationFontSize;
+	bool showProtocolInWorkSheet;
+	bool showAnnotation;
+
+	MeasureSystemSettingDTO({
+		this.version,
+		this.cursorType = CursorTypeEnum.CursorType1Icon,
+		this.cursorSize = 0,
+		this.shapeCursorSize = 0,
+		this.cursorColor,
+		this.showResultWindow = false,
+		this.fontSize = 0,
+		this.showCursorLine = false,
+		this.holdMeasureLine = false,
+		this.showDepthGuideline = false,
+		this.showBriefAnnotation = false,
+		this.minCursorDistance,
+		this.autoSnapDistance,
+		this.annotationFontSize = 0,
+		this.showProtocolInWorkSheet = false,
+		this.showAnnotation = false,
+	});
+
+	factory MeasureSystemSettingDTO.fromJson(Map<String, dynamic> map) {
+		return MeasureSystemSettingDTO( 
+			version: map['Version'],
+			cursorType: CursorTypeEnum.values.firstWhere((e) => e.index == map['CursorType']),
+			cursorSize: map['CursorSize'],
+			shapeCursorSize: map['ShapeCursorSize'],
+			cursorColor: map['CursorColor'],
+			showResultWindow: map['ShowResultWindow'],
+			fontSize: map['FontSize'],
+			showCursorLine: map['ShowCursorLine'],
+			holdMeasureLine: map['HoldMeasureLine'],
+			showDepthGuideline: map['ShowDepthGuideline'],
+			showBriefAnnotation: map['ShowBriefAnnotation'],
+			minCursorDistance: map['MinCursorDistance'],
+			autoSnapDistance: map['AutoSnapDistance'],
+			annotationFontSize: map['AnnotationFontSize'],
+			showProtocolInWorkSheet: map['ShowProtocolInWorkSheet'],
+			showAnnotation: map['ShowAnnotation'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(version != null)
+			map['Version'] = version;
+		map['CursorType'] = cursorType.index;
+		map['CursorSize'] = cursorSize;
+		map['ShapeCursorSize'] = shapeCursorSize;
+		if(cursorColor != null)
+			map['CursorColor'] = cursorColor;
+		map['ShowResultWindow'] = showResultWindow;
+		map['FontSize'] = fontSize;
+		map['ShowCursorLine'] = showCursorLine;
+		map['HoldMeasureLine'] = holdMeasureLine;
+		map['ShowDepthGuideline'] = showDepthGuideline;
+		map['ShowBriefAnnotation'] = showBriefAnnotation;
+		if(minCursorDistance != null)
+			map['MinCursorDistance'] = minCursorDistance;
+		if(autoSnapDistance != null)
+			map['AutoSnapDistance'] = autoSnapDistance;
+		map['AnnotationFontSize'] = annotationFontSize;
+		map['ShowProtocolInWorkSheet'] = showProtocolInWorkSheet;
+		map['ShowAnnotation'] = showAnnotation;
+		return map;
+	}
+}
+
+class GetMeasureSystemSettingRequest extends TokenRequest{
+
+	GetMeasureSystemSettingRequest({
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory GetMeasureSystemSettingRequest.fromJson(Map<String, dynamic> map) {
+		return GetMeasureSystemSettingRequest( 
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		return map;
+	}
+}
+
+class SaveMeasureSystemSettingRequest extends TokenRequest{
+	MeasureSystemSettingDTO? systemSetting;
+
+	SaveMeasureSystemSettingRequest({
+		this.systemSetting,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory SaveMeasureSystemSettingRequest.fromJson(Map<String, dynamic> map) {
+		return SaveMeasureSystemSettingRequest( 
+			systemSetting: map['SystemSetting'] != null ? MeasureSystemSettingDTO.fromJson(map['SystemSetting']) : null,
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(systemSetting != null)
+			map['SystemSetting'] = systemSetting;
+		return map;
+	}
+}
+
 

+ 12 - 1
lib/services/report.dart

@@ -5,7 +5,7 @@ import 'package:fis_common/json_convert.dart';
 
 import 'report.m.dart';
 
-import 'patient.m.dart';
+import 'authentication.m.dart';
 
 
 class ReportService extends JsonRpcClientBase {
@@ -245,5 +245,16 @@ class ReportService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
+	Future<ThesaurusDTO> getDefaultThesaurusContentAsync(GetDefaultThesaurusContentRequest request) async {
+		var rpcRst = await call("GetDefaultThesaurusContentAsync", request);
+		var result = ThesaurusDTO.fromJson(rpcRst as Map<String, dynamic>);
+		return result;
+	}
+
+	Future<bool> setUserDefaultThesaurusAsync(SetUserDefaultThesaurusRequest request) async {
+		var rpcRst = await call("SetUserDefaultThesaurusAsync", request);
+		return rpcRst;
+	}
+
 }
 

+ 54 - 1
lib/services/report.m.dart

@@ -1,7 +1,6 @@
 import 'authentication.m.dart';
 import 'connect.m.dart';
 import 'patient.m.dart';
-import 'device.m.dart';
 
 import 'package:fis_jsonrpc/utils.dart';
 
@@ -1204,6 +1203,7 @@ class ThesaurusDTO {
 	String? personalCode;
 	List<String>? thesaurusUser;
 	bool isDefault;
+	bool isUserDefault;
 
 	ThesaurusDTO({
 		this.thesaurusCode,
@@ -1215,6 +1215,7 @@ class ThesaurusDTO {
 		this.personalCode,
 		this.thesaurusUser,
 		this.isDefault = false,
+		this.isUserDefault = false,
 	});
 
 	factory ThesaurusDTO.fromJson(Map<String, dynamic> map) {
@@ -1228,6 +1229,7 @@ class ThesaurusDTO {
 			personalCode: map['PersonalCode'],
 			thesaurusUser: map['ThesaurusUser'] != null ? map['ThesaurusUser'].cast<String>().toList() : null,
 			isDefault: map['IsDefault'],
+			isUserDefault: map['IsUserDefault'],
 		);
 	}
 
@@ -1247,6 +1249,7 @@ class ThesaurusDTO {
 		if(thesaurusUser != null)
 			map['ThesaurusUser'] = thesaurusUser;
 		map['IsDefault'] = isDefault;
+		map['IsUserDefault'] = isUserDefault;
 		return map;
 	}
 }
@@ -1551,4 +1554,54 @@ class CopyOrgThesaurusRequest extends TokenRequest{
 	}
 }
 
+class GetDefaultThesaurusContentRequest extends TokenRequest{
+
+	GetDefaultThesaurusContentRequest({
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory GetDefaultThesaurusContentRequest.fromJson(Map<String, dynamic> map) {
+		return GetDefaultThesaurusContentRequest( 
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		return map;
+	}
+}
+
+class SetUserDefaultThesaurusRequest extends TokenRequest{
+	String? userCode;
+	String? thesaurusCode;
+
+	SetUserDefaultThesaurusRequest({
+		this.userCode,
+		this.thesaurusCode,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory SetUserDefaultThesaurusRequest.fromJson(Map<String, dynamic> map) {
+		return SetUserDefaultThesaurusRequest( 
+			userCode: map['UserCode'],
+			thesaurusCode: map['ThesaurusCode'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(userCode != null)
+			map['UserCode'] = userCode;
+		if(thesaurusCode != null)
+			map['ThesaurusCode'] = thesaurusCode;
+		return map;
+	}
+}
+
 

+ 0 - 1
lib/services/user.dart

@@ -6,7 +6,6 @@ import 'package:fis_common/json_convert.dart';
 import 'user.m.dart';
 
 import 'authentication.m.dart';
-import 'patient.m.dart';
 
 
 class UserService extends JsonRpcClientBase {

+ 0 - 1
lib/services/user.m.dart

@@ -2,7 +2,6 @@ import 'authentication.m.dart';
 import 'connect.m.dart';
 import 'patient.m.dart';
 import 'identityApply.m.dart';
-import 'device.m.dart';
 
 enum UserInfoStateEnum {
 	Nonactivated,