Browse Source

同步Server最新接口更改

loki.wu 2 years ago
parent
commit
1ebe2bdbf1

+ 5 - 0
lib/services/authentication.dart

@@ -31,6 +31,11 @@ class AuthenticationService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
+	Future<String> getVodAuthorizationAsync(TokenRequest request) async {
+		var rpcRst = await call("GetVodAuthorizationAsync", request);
+		return rpcRst;
+	}
+
 	Future<String> getServerDefaultTokenAsync() async {
 		var rpcRst = await call("GetServerDefaultTokenAsync", );
 		return rpcRst;

+ 9 - 5
lib/services/authentication.m.dart

@@ -1013,11 +1013,11 @@ enum CustomerRpcCode {
 	EmergencyOrganizationCodeError,
 	ConsultationExpertIsEmpty,
 	ConsultationInProcess,
-	placeHolder_844,
-	placeHolder_845,
-	placeHolder_846,
-	placeHolder_847,
-	placeHolder_848,
+	InviterNotOnLine,
+	InviterIsBusy,
+	ReferralOrganizationsIsEmpty,
+	EmergencyDoctorsIsEmpty,
+	ControllingParameterByOtherUser,
 	placeHolder_849,
 	placeHolder_850,
 	placeHolder_851,
@@ -7184,6 +7184,10 @@ enum CustomerRpcCode {
 	UserGroupCreatorCodeIsEmpty,
 	UserGroupStudentsIsEmpty,
 	UserGroupCodeIsEmpty,
+	VideoNameIsEmpty,
+	VideoTokenIsEmpty,
+	VideoCodeIsEmpty,
+	CourseVideoCodeIsEmpty,
 }
 
 class ValidateTokenResult {

+ 5 - 0
lib/services/device.dart

@@ -161,5 +161,10 @@ class DeviceService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
+	Future<bool> sendControlParameterByDeviceAsync(SendControlParameterByDeviceRequest request) async {
+		var rpcRst = await call("SendControlParameterByDeviceAsync", request);
+		return rpcRst;
+	}
+
 }
 

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

@@ -1052,4 +1052,39 @@ class ReportVideoDeviceInfoRequest extends TokenRequest{
 	}
 }
 
+class SendControlParameterByDeviceRequest extends TokenRequest{
+	String? controlUserCode;
+	ProbeApplicationInfoDTO? probeApplication;
+	ControlParameterDTO? parameter;
+
+	SendControlParameterByDeviceRequest({
+		this.controlUserCode,
+		this.probeApplication,
+		this.parameter,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory SendControlParameterByDeviceRequest.fromJson(Map<String, dynamic> map) {
+		return SendControlParameterByDeviceRequest( 
+			controlUserCode: map['ControlUserCode'],
+			probeApplication: map['ProbeApplication'] != null ? ProbeApplicationInfoDTO.fromJson(map['ProbeApplication']) : null,
+			parameter: map['Parameter'] != null ? ControlParameterDTO.fromJson(map['Parameter']) : null,
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(controlUserCode != null)
+			map['ControlUserCode'] = controlUserCode;
+		if(probeApplication != null)
+			map['ProbeApplication'] = probeApplication;
+		if(parameter != null)
+			map['Parameter'] = parameter;
+		return map;
+	}
+}
+
 

+ 18 - 0
lib/services/education.dart

@@ -30,6 +30,8 @@ class EducationService extends JsonRpcClientBase {
 		FJsonConvert.setDecoder((map) => UserGroupDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => PageResult<StudentInfoDTO>.fromJson(map));
 		FJsonConvert.setDecoder((map) => StudentInfoDTO.fromJson(map));
+		FJsonConvert.setDecoder((map) => PageResult<VideoInfoDTO>.fromJson(map));
+		FJsonConvert.setDecoder((map) => VideoInfoDTO.fromJson(map));
 	}
 
 	Future<List<CourseLabelDTO>> getCourseLabelsAsync(QueryCourseLabelListRequest request) async {
@@ -93,5 +95,21 @@ class EducationService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
+	Future<bool> createVideoAsync(SaveVideoRequest request) async {
+		var rpcRst = await call("CreateVideoAsync", request);
+		return rpcRst;
+	}
+
+	Future<PageResult<VideoInfoDTO>> findVideosPagesAsync(FindVideoPagesRequest request) async {
+		var rpcRst = await call("FindVideosPagesAsync", request);
+		var result = PageResult<VideoInfoDTO>.fromJson(rpcRst as Map<String, dynamic>);
+		return result;
+	}
+
+	Future<bool> deleteVideoByCodeAsync(DeleteVideoRequest request) async {
+		var rpcRst = await call("DeleteVideoByCodeAsync", request);
+		return rpcRst;
+	}
+
 }
 

+ 220 - 0
lib/services/education.m.dart

@@ -228,6 +228,7 @@ class ApplyCourseRequest extends TokenRequest{
 	List<String >? courseLabelCodes;
 	List<String >? userGroupCodes;
 	Decimal? price;
+	List<String >? courseVideoCodes;
 
 	ApplyCourseRequest({
 		this.name,
@@ -243,6 +244,7 @@ class ApplyCourseRequest extends TokenRequest{
 		this.courseLabelCodes,
 		this.userGroupCodes,
 		this.price,
+		this.courseVideoCodes,
 		String? token,
 	}) : super(
 			token: token,
@@ -263,6 +265,7 @@ class ApplyCourseRequest extends TokenRequest{
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
 			userGroupCodes: map['UserGroupCodes'] != null ? map['UserGroupCodes'].cast<String>().toList() : null,
 			price: map['Price'] != null ? Decimal.fromJson(map['Price']) : null,
+			courseVideoCodes: map['CourseVideoCodes'] != null ? map['CourseVideoCodes'].cast<String>().toList() : null,
 			token: map['Token'],
 		);
 	}
@@ -292,6 +295,8 @@ class ApplyCourseRequest extends TokenRequest{
 			map['UserGroupCodes'] = userGroupCodes;
 		if(price != null)
 			map['Price'] = price;
+		if(courseVideoCodes != null)
+			map['CourseVideoCodes'] = courseVideoCodes;
 		return map;
 	}
 }
@@ -485,6 +490,7 @@ class UpdateCourseRequest extends TokenRequest{
 	List<String >? courseLabelCodes;
 	List<String >? userGroupCodes;
 	Decimal? price;
+	List<String >? courseVideoCodes;
 
 	UpdateCourseRequest({
 		this.code,
@@ -501,6 +507,7 @@ class UpdateCourseRequest extends TokenRequest{
 		this.courseLabelCodes,
 		this.userGroupCodes,
 		this.price,
+		this.courseVideoCodes,
 		String? token,
 	}) : super(
 			token: token,
@@ -522,6 +529,7 @@ class UpdateCourseRequest extends TokenRequest{
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
 			userGroupCodes: map['UserGroupCodes'] != null ? map['UserGroupCodes'].cast<String>().toList() : null,
 			price: map['Price'] != null ? Decimal.fromJson(map['Price']) : null,
+			courseVideoCodes: map['CourseVideoCodes'] != null ? map['CourseVideoCodes'].cast<String>().toList() : null,
 			token: map['Token'],
 		);
 	}
@@ -553,6 +561,8 @@ class UpdateCourseRequest extends TokenRequest{
 			map['UserGroupCodes'] = userGroupCodes;
 		if(price != null)
 			map['Price'] = price;
+		if(courseVideoCodes != null)
+			map['CourseVideoCodes'] = courseVideoCodes;
 		return map;
 	}
 }
@@ -581,6 +591,10 @@ class BaseCourseInfoDTO {
 	String? organizationCode;
 	DateTime? createTime;
 	Decimal? price;
+	List<String >? courseLabelCodes;
+	List<String >? caseLabelCodes;
+	List<String >? userGroupCodes;
+	List<String >? courseVideoCodes;
 
 	BaseCourseInfoDTO({
 		this.code,
@@ -600,6 +614,10 @@ class BaseCourseInfoDTO {
 		this.organizationCode,
 		this.createTime,
 		this.price,
+		this.courseLabelCodes,
+		this.caseLabelCodes,
+		this.userGroupCodes,
+		this.courseVideoCodes,
 	});
 
 	factory BaseCourseInfoDTO.fromJson(Map<String, dynamic> map) {
@@ -621,6 +639,10 @@ class BaseCourseInfoDTO {
 			organizationCode: map['OrganizationCode'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
 			price: map['Price'] != null ? Decimal.fromJson(map['Price']) : null,
+			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
+			caseLabelCodes: map['CaseLabelCodes'] != null ? map['CaseLabelCodes'].cast<String>().toList() : null,
+			userGroupCodes: map['UserGroupCodes'] != null ? map['UserGroupCodes'].cast<String>().toList() : null,
+			courseVideoCodes: map['CourseVideoCodes'] != null ? map['CourseVideoCodes'].cast<String>().toList() : null,
 		);
 	}
 
@@ -655,6 +677,14 @@ class BaseCourseInfoDTO {
 			map['CreateTime'] = JsonRpcUtils.dateFormat(createTime!);
 		if(price != null)
 			map['Price'] = price;
+		if(courseLabelCodes != null)
+			map['CourseLabelCodes'] = courseLabelCodes;
+		if(caseLabelCodes != null)
+			map['CaseLabelCodes'] = caseLabelCodes;
+		if(userGroupCodes != null)
+			map['UserGroupCodes'] = userGroupCodes;
+		if(courseVideoCodes != null)
+			map['CourseVideoCodes'] = courseVideoCodes;
 		return map;
 	}
 }
@@ -727,17 +757,68 @@ class BaseUserGroupDTO extends BaseDTO{
 	}
 }
 
+class VideoInfoDTO {
+	String? code;
+	String? name;
+	String? videoToken;
+	String? poster;
+	int duration;
+	double videoSize;
+	DateTime? createTime;
+
+	VideoInfoDTO({
+		this.code,
+		this.name,
+		this.videoToken,
+		this.poster,
+		this.duration = 0,
+		this.videoSize = 0,
+		this.createTime,
+	});
+
+	factory VideoInfoDTO.fromJson(Map<String, dynamic> map) {
+		return VideoInfoDTO( 
+			code: map['Code'],
+			name: map['Name'],
+			videoToken: map['VideoToken'],
+			poster: map['Poster'],
+			duration: map['Duration'],
+			videoSize: double.parse(map['VideoSize'].toString()),
+			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(code != null)
+			map['Code'] = code;
+		if(name != null)
+			map['Name'] = name;
+		if(videoToken != null)
+			map['VideoToken'] = videoToken;
+		if(poster != null)
+			map['Poster'] = poster;
+		map['Duration'] = duration;
+		map['VideoSize'] = videoSize;
+		if(createTime != null)
+			map['CreateTime'] = JsonRpcUtils.dateFormat(createTime!);
+		return map;
+	}
+}
+
 class CourseInfoDetailDTO extends BaseCourseInfoDTO{
 	List<StudentInfoDTO >? students;
 	List<BaseLabelInfoDTO >? caseLabels;
 	List<BaseLabelInfoDTO >? courseLabels;
 	List<BaseUserGroupDTO >? userGroups;
+	List<VideoInfoDTO >? courseVideos;
 
 	CourseInfoDetailDTO({
 		this.students,
 		this.caseLabels,
 		this.courseLabels,
 		this.userGroups,
+		this.courseVideos,
 		String? code,
 		String? name,
 		String? courseIntro,
@@ -755,6 +836,10 @@ class CourseInfoDetailDTO extends BaseCourseInfoDTO{
 		String? organizationCode,
 		DateTime? createTime,
 		Decimal? price,
+		List<String >? courseLabelCodes,
+		List<String >? caseLabelCodes,
+		List<String >? userGroupCodes,
+		List<String >? courseVideoCodes,
 	}) : super(
 			code: code,
 			name: name,
@@ -773,6 +858,10 @@ class CourseInfoDetailDTO extends BaseCourseInfoDTO{
 			organizationCode: organizationCode,
 			createTime: createTime,
 			price: price,
+			courseLabelCodes: courseLabelCodes,
+			caseLabelCodes: caseLabelCodes,
+			userGroupCodes: userGroupCodes,
+			courseVideoCodes: courseVideoCodes,
 		);
 
 	factory CourseInfoDetailDTO.fromJson(Map<String, dynamic> map) {
@@ -781,6 +870,7 @@ class CourseInfoDetailDTO extends BaseCourseInfoDTO{
 			caseLabels: map['CaseLabels'] != null ? (map['CaseLabels'] as List).map((e)=>BaseLabelInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			courseLabels: map['CourseLabels'] != null ? (map['CourseLabels'] as List).map((e)=>BaseLabelInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			userGroups: map['UserGroups'] != null ? (map['UserGroups'] as List).map((e)=>BaseUserGroupDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			courseVideos: map['CourseVideos'] != null ? (map['CourseVideos'] as List).map((e)=>VideoInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			code: map['Code'],
 			name: map['Name'],
 			courseIntro: map['CourseIntro'],
@@ -798,6 +888,10 @@ class CourseInfoDetailDTO extends BaseCourseInfoDTO{
 			organizationCode: map['OrganizationCode'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
 			price: map['Price'] != null ? Decimal.fromJson(map['Price']) : null,
+			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
+			caseLabelCodes: map['CaseLabelCodes'] != null ? map['CaseLabelCodes'].cast<String>().toList() : null,
+			userGroupCodes: map['UserGroupCodes'] != null ? map['UserGroupCodes'].cast<String>().toList() : null,
+			courseVideoCodes: map['CourseVideoCodes'] != null ? map['CourseVideoCodes'].cast<String>().toList() : null,
 		);
 	}
 
@@ -811,15 +905,19 @@ class CourseInfoDetailDTO extends BaseCourseInfoDTO{
 			map['CourseLabels'] = courseLabels;
 		if(userGroups != null)
 			map['UserGroups'] = userGroups;
+		if(courseVideos != null)
+			map['CourseVideos'] = courseVideos;
 		return map;
 	}
 }
 
 class FindCourseByCodeRequest extends TokenRequest{
 	String? code;
+	String? languageCode;
 
 	FindCourseByCodeRequest({
 		this.code,
+		this.languageCode,
 		String? token,
 	}) : super(
 			token: token,
@@ -828,6 +926,7 @@ class FindCourseByCodeRequest extends TokenRequest{
 	factory FindCourseByCodeRequest.fromJson(Map<String, dynamic> map) {
 		return FindCourseByCodeRequest( 
 			code: map['Code'],
+			languageCode: map['LanguageCode'],
 			token: map['Token'],
 		);
 	}
@@ -836,6 +935,8 @@ class FindCourseByCodeRequest extends TokenRequest{
 		final map = super.toJson();
 		if(code != null)
 			map['Code'] = code;
+		if(languageCode != null)
+			map['LanguageCode'] = languageCode;
 		return map;
 	}
 }
@@ -1126,4 +1227,123 @@ class UserGroupFilterRequest extends TokenRequest{
 	}
 }
 
+class SaveVideoRequest extends TokenRequest{
+	String? courseCode;
+	String? code;
+	String? name;
+	String? videoToken;
+	String? poster;
+	int duration;
+	double videoSize;
+
+	SaveVideoRequest({
+		this.courseCode,
+		this.code,
+		this.name,
+		this.videoToken,
+		this.poster,
+		this.duration = 0,
+		this.videoSize = 0,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory SaveVideoRequest.fromJson(Map<String, dynamic> map) {
+		return SaveVideoRequest( 
+			courseCode: map['CourseCode'],
+			code: map['Code'],
+			name: map['Name'],
+			videoToken: map['VideoToken'],
+			poster: map['Poster'],
+			duration: map['Duration'],
+			videoSize: double.parse(map['VideoSize'].toString()),
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(courseCode != null)
+			map['CourseCode'] = courseCode;
+		if(code != null)
+			map['Code'] = code;
+		if(name != null)
+			map['Name'] = name;
+		if(videoToken != null)
+			map['VideoToken'] = videoToken;
+		if(poster != null)
+			map['Poster'] = poster;
+		map['Duration'] = duration;
+		map['VideoSize'] = videoSize;
+		return map;
+	}
+}
+
+class FindVideoPagesRequest extends PageRequest{
+	String? keyword;
+	String? courseCode;
+
+	FindVideoPagesRequest({
+		this.keyword,
+		this.courseCode,
+		int pageIndex = 0,
+		int pageSize = 0,
+		String? token,
+	}) : super(
+			pageIndex: pageIndex,
+			pageSize: pageSize,
+			token: token,
+		);
+
+	factory FindVideoPagesRequest.fromJson(Map<String, dynamic> map) {
+		return FindVideoPagesRequest( 
+			keyword: map['Keyword'],
+			courseCode: map['CourseCode'],
+			pageIndex: map['PageIndex'],
+			pageSize: map['PageSize'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(keyword != null)
+			map['Keyword'] = keyword;
+		if(courseCode != null)
+			map['CourseCode'] = courseCode;
+		return map;
+	}
+}
+
+class DeleteVideoRequest extends TokenRequest{
+	String? code;
+	String? courseCode;
+
+	DeleteVideoRequest({
+		this.code,
+		this.courseCode,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory DeleteVideoRequest.fromJson(Map<String, dynamic> map) {
+		return DeleteVideoRequest( 
+			code: map['Code'],
+			courseCode: map['CourseCode'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(code != null)
+			map['Code'] = code;
+		if(courseCode != null)
+			map['CourseCode'] = courseCode;
+		return map;
+	}
+}
+
 

+ 2 - 12
lib/services/liveConsultation.dart

@@ -294,18 +294,8 @@ class LiveConsultationService extends JsonRpcClientBase {
 		return rpcRst;
 	}
 
-	Future<bool> setEmergencyOrganizationAsync(SetEmergencyOrganizationRequest request) async {
-		var rpcRst = await call("SetEmergencyOrganizationAsync", request);
-		return rpcRst;
-	}
-
-	Future<bool> setEmergencyDoctorAsync(SetEmergencyDoctorRequest request) async {
-		var rpcRst = await call("SetEmergencyDoctorAsync", request);
-		return rpcRst;
-	}
-
-	Future<String> getEmergencyOrderAsync(GetEmergencyOrderRequest request) async {
-		var rpcRst = await call("GetEmergencyOrderAsync", request);
+	Future<bool> controlParameterAsync(ControlDeviceParameterInConsultationRequest request) async {
+		var rpcRst = await call("ControlParameterAsync", request);
 		return rpcRst;
 	}
 

+ 32 - 83
lib/services/liveConsultation.m.dart

@@ -297,11 +297,6 @@ class DataItemDTO {
 	}
 }
 
-enum ConsultationReportMode {
-	ExpertReport,
-	ApplicantReport,
-}
-
 class ApplyConsultationRequest extends TokenRequest{
 	String? expertUserCode;
 	String? deviceCode;
@@ -309,7 +304,6 @@ class ApplyConsultationRequest extends TokenRequest{
 	DateTime? consultationTime;
 	List<DataItemDTO >? patientDatas;
 	String? patientCode;
-	ConsultationReportMode reportMode;
 	String? diseases;
 	String? scanUserCode;
 	String? expertOrganizationCode;
@@ -323,7 +317,6 @@ class ApplyConsultationRequest extends TokenRequest{
 		this.consultationTime,
 		this.patientDatas,
 		this.patientCode,
-		this.reportMode = ConsultationReportMode.ExpertReport,
 		this.diseases,
 		this.scanUserCode,
 		this.expertOrganizationCode,
@@ -342,7 +335,6 @@ class ApplyConsultationRequest extends TokenRequest{
 			consultationTime: map['ConsultationTime'] != null ? DateTime.parse(map['ConsultationTime']) : null,
 			patientDatas: map['PatientDatas'] != null ? (map['PatientDatas'] as List).map((e)=>DataItemDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			patientCode: map['PatientCode'],
-			reportMode: ConsultationReportMode.values.firstWhere((e) => e.index == map['ReportMode']),
 			diseases: map['Diseases'],
 			scanUserCode: map['ScanUserCode'],
 			expertOrganizationCode: map['ExpertOrganizationCode'],
@@ -366,7 +358,6 @@ class ApplyConsultationRequest extends TokenRequest{
 			map['PatientDatas'] = patientDatas;
 		if(patientCode != null)
 			map['PatientCode'] = patientCode;
-		map['ReportMode'] = reportMode.index;
 		if(diseases != null)
 			map['Diseases'] = diseases;
 		if(scanUserCode != null)
@@ -920,6 +911,11 @@ class ConsultationReminderDTO {
 	}
 }
 
+enum ConsultationReportMode {
+	ExpertReport,
+	ApplicantReport,
+}
+
 class ConsultationDetailDTO {
 	String? consultationCode;
 	String? applyOrganizationCode;
@@ -950,7 +946,7 @@ class ConsultationDetailDTO {
 	String? patientName;
 	String? sex;
 	List<DataItemDTO >? patientDatas;
-	List<ConsultationFileDTO >? fileInfos;
+	List<ConsultationFileDTO >? consultationFileList;
 	String? rejectReason;
 	String? location;
 	List<ConsultationMemberDTO >? consultationMembers;
@@ -976,6 +972,7 @@ class ConsultationDetailDTO {
 	bool isEvaluateShow;
 	bool isFollowUpShow;
 	bool isImproveShow;
+	bool isEditReportShow;
 
 	ConsultationDetailDTO({
 		this.consultationCode,
@@ -1007,7 +1004,7 @@ class ConsultationDetailDTO {
 		this.patientName,
 		this.sex,
 		this.patientDatas,
-		this.fileInfos,
+		this.consultationFileList,
 		this.rejectReason,
 		this.location,
 		this.consultationMembers,
@@ -1033,6 +1030,7 @@ class ConsultationDetailDTO {
 		this.isEvaluateShow = false,
 		this.isFollowUpShow = false,
 		this.isImproveShow = false,
+		this.isEditReportShow = false,
 	});
 
 	factory ConsultationDetailDTO.fromJson(Map<String, dynamic> map) {
@@ -1066,7 +1064,7 @@ class ConsultationDetailDTO {
 			patientName: map['PatientName'],
 			sex: map['Sex'],
 			patientDatas: map['PatientDatas'] != null ? (map['PatientDatas'] as List).map((e)=>DataItemDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			fileInfos: map['FileInfos'] != null ? (map['FileInfos'] as List).map((e)=>ConsultationFileDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			consultationFileList: map['ConsultationFileList'] != null ? (map['ConsultationFileList'] as List).map((e)=>ConsultationFileDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			rejectReason: map['RejectReason'],
 			location: map['Location'],
 			consultationMembers: map['ConsultationMembers'] != null ? (map['ConsultationMembers'] as List).map((e)=>ConsultationMemberDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
@@ -1092,6 +1090,7 @@ class ConsultationDetailDTO {
 			isEvaluateShow: map['IsEvaluateShow'],
 			isFollowUpShow: map['IsFollowUpShow'],
 			isImproveShow: map['IsImproveShow'],
+			isEditReportShow: map['IsEditReportShow'],
 		);
 	}
 
@@ -1153,8 +1152,8 @@ class ConsultationDetailDTO {
 			map['Sex'] = sex;
 		if(patientDatas != null)
 			map['PatientDatas'] = patientDatas;
-		if(fileInfos != null)
-			map['FileInfos'] = fileInfos;
+		if(consultationFileList != null)
+			map['ConsultationFileList'] = consultationFileList;
 		if(rejectReason != null)
 			map['RejectReason'] = rejectReason;
 		if(location != null)
@@ -1190,6 +1189,7 @@ class ConsultationDetailDTO {
 		map['IsEvaluateShow'] = isEvaluateShow;
 		map['IsFollowUpShow'] = isFollowUpShow;
 		map['IsImproveShow'] = isImproveShow;
+		map['IsEditReportShow'] = isEditReportShow;
 		return map;
 	}
 }
@@ -2743,14 +2743,10 @@ class AcceptInvitationRequest extends TokenRequest{
 }
 
 class ApplyEmergencyTreatmentRequest extends TokenRequest{
-	String? expertUserCode;
 	String? deviceUniqueCode;
-	String? emergencyCode;
 
 	ApplyEmergencyTreatmentRequest({
-		this.expertUserCode,
 		this.deviceUniqueCode,
-		this.emergencyCode,
 		String? token,
 	}) : super(
 			token: token,
@@ -2758,96 +2754,49 @@ class ApplyEmergencyTreatmentRequest extends TokenRequest{
 
 	factory ApplyEmergencyTreatmentRequest.fromJson(Map<String, dynamic> map) {
 		return ApplyEmergencyTreatmentRequest( 
-			expertUserCode: map['ExpertUserCode'],
 			deviceUniqueCode: map['DeviceUniqueCode'],
-			emergencyCode: map['EmergencyCode'],
 			token: map['Token'],
 		);
 	}
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
-		if(expertUserCode != null)
-			map['ExpertUserCode'] = expertUserCode;
 		if(deviceUniqueCode != null)
 			map['DeviceUniqueCode'] = deviceUniqueCode;
-		if(emergencyCode != null)
-			map['EmergencyCode'] = emergencyCode;
-		return map;
-	}
-}
-
-class SetEmergencyOrganizationRequest extends TokenRequest{
-	String? emergencyOrganizationCode;
-
-	SetEmergencyOrganizationRequest({
-		this.emergencyOrganizationCode,
-		String? token,
-	}) : super(
-			token: token,
-		);
-
-	factory SetEmergencyOrganizationRequest.fromJson(Map<String, dynamic> map) {
-		return SetEmergencyOrganizationRequest( 
-			emergencyOrganizationCode: map['EmergencyOrganizationCode'],
-			token: map['Token'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		if(emergencyOrganizationCode != null)
-			map['EmergencyOrganizationCode'] = emergencyOrganizationCode;
-		return map;
-	}
-}
-
-class SetEmergencyDoctorRequest extends TokenRequest{
-	String? emergencyDoctorCode;
-
-	SetEmergencyDoctorRequest({
-		this.emergencyDoctorCode,
-		String? token,
-	}) : super(
-			token: token,
-		);
-
-	factory SetEmergencyDoctorRequest.fromJson(Map<String, dynamic> map) {
-		return SetEmergencyDoctorRequest( 
-			emergencyDoctorCode: map['EmergencyDoctorCode'],
-			token: map['Token'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		if(emergencyDoctorCode != null)
-			map['EmergencyDoctorCode'] = emergencyDoctorCode;
 		return map;
 	}
 }
 
-class GetEmergencyOrderRequest extends TokenRequest{
-	String? emergencySerialNumber;
+class ControlDeviceParameterInConsultationRequest extends TokenRequest{
+	String? consultationCode;
+	List<AdditionParameterDTO >? parameters;
+	ControlDeviceParameterEnum controlType;
 
-	GetEmergencyOrderRequest({
-		this.emergencySerialNumber,
+	ControlDeviceParameterInConsultationRequest({
+		this.consultationCode,
+		this.parameters,
+		this.controlType = ControlDeviceParameterEnum.Start,
 		String? token,
 	}) : super(
 			token: token,
 		);
 
-	factory GetEmergencyOrderRequest.fromJson(Map<String, dynamic> map) {
-		return GetEmergencyOrderRequest( 
-			emergencySerialNumber: map['EmergencySerialNumber'],
+	factory ControlDeviceParameterInConsultationRequest.fromJson(Map<String, dynamic> map) {
+		return ControlDeviceParameterInConsultationRequest( 
+			consultationCode: map['ConsultationCode'],
+			parameters: map['Parameters'] != null ? (map['Parameters'] as List).map((e)=>AdditionParameterDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			controlType: ControlDeviceParameterEnum.values.firstWhere((e) => e.index == map['ControlType']),
 			token: map['Token'],
 		);
 	}
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
-		if(emergencySerialNumber != null)
-			map['EmergencySerialNumber'] = emergencySerialNumber;
+		if(consultationCode != null)
+			map['ConsultationCode'] = consultationCode;
+		if(parameters != null)
+			map['Parameters'] = parameters;
+		map['ControlType'] = controlType.index;
 		return map;
 	}
 }

+ 470 - 118
lib/services/notification.m.dart

@@ -36,6 +36,10 @@ enum NotificationTypeEnum {
 	CancelLiveConsultationToDeviceNotification,
 	AnnouncementPublishNotification,
 	SendInteractiveBoardDataNotification,
+	DeviceParametersNotification,
+	DeviceControlledParametersNotification,
+	EmergencyCallNotification,
+	EmergencyCallFailedNotification,
 }
 
 class NotificationDTO {
@@ -221,6 +225,275 @@ class ConnectionNotification extends NotificationDTO{
 	}
 }
 
+enum ControlDeviceParameterEnum {
+	Start,
+	End,
+	RunExecuteApi,
+	ExecuteProbeApplicationSetting,
+}
+
+class AdditionParameterDTO {
+	String? parameterName;
+	String? parameterType;
+	String? parameterValue;
+
+	AdditionParameterDTO({
+		this.parameterName,
+		this.parameterType,
+		this.parameterValue,
+	});
+
+	factory AdditionParameterDTO.fromJson(Map<String, dynamic> map) {
+		return AdditionParameterDTO( 
+			parameterName: map['ParameterName'],
+			parameterType: map['ParameterType'],
+			parameterValue: map['ParameterValue'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(parameterName != null)
+			map['ParameterName'] = parameterName;
+		if(parameterType != null)
+			map['ParameterType'] = parameterType;
+		if(parameterValue != null)
+			map['ParameterValue'] = parameterValue;
+		return map;
+	}
+}
+
+class DeviceControlledParametersNotification extends NotificationDTO{
+	String? controlUserCode;
+	String? controlUserName;
+	ControlDeviceParameterEnum controlType;
+	List<AdditionParameterDTO >? parameters;
+
+	DeviceControlledParametersNotification({
+		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
+		this.controlUserCode,
+		this.controlUserName,
+		this.controlType = ControlDeviceParameterEnum.Start,
+		this.parameters,
+		String? code,
+		bool isResponse = false,
+	}) : super(
+			notificationType: notificationType,
+			code: code,
+			isResponse: isResponse,
+		);
+
+	factory DeviceControlledParametersNotification.fromJson(Map<String, dynamic> map) {
+		return DeviceControlledParametersNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			controlUserCode: map['ControlUserCode'],
+			controlUserName: map['ControlUserName'],
+			controlType: ControlDeviceParameterEnum.values.firstWhere((e) => e.index == map['ControlType']),
+			parameters: map['Parameters'] != null ? (map['Parameters'] as List).map((e)=>AdditionParameterDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			code: map['Code'],
+			isResponse: map['IsResponse'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(controlUserCode != null)
+			map['ControlUserCode'] = controlUserCode;
+		if(controlUserName != null)
+			map['ControlUserName'] = controlUserName;
+		map['ControlType'] = controlType.index;
+		if(parameters != null)
+			map['Parameters'] = parameters;
+		return map;
+	}
+}
+
+class ApplicationSettingInfoDTO {
+	String? id;
+	String? name;
+	bool isPreferred;
+	bool isUserDefined;
+	bool isHidden;
+
+	ApplicationSettingInfoDTO({
+		this.id,
+		this.name,
+		this.isPreferred = false,
+		this.isUserDefined = false,
+		this.isHidden = false,
+	});
+
+	factory ApplicationSettingInfoDTO.fromJson(Map<String, dynamic> map) {
+		return ApplicationSettingInfoDTO( 
+			id: map['Id'],
+			name: map['Name'],
+			isPreferred: map['IsPreferred'],
+			isUserDefined: map['IsUserDefined'],
+			isHidden: map['IsHidden'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(id != null)
+			map['Id'] = id;
+		if(name != null)
+			map['Name'] = name;
+		map['IsPreferred'] = isPreferred;
+		map['IsUserDefined'] = isUserDefined;
+		map['IsHidden'] = isHidden;
+		return map;
+	}
+}
+
+class ProbeInfoDTO {
+	String? name;
+	List<String >? applications;
+	List<ApplicationSettingInfoDTO >? applicationInfos;
+
+	ProbeInfoDTO({
+		this.name,
+		this.applications,
+		this.applicationInfos,
+	});
+
+	factory ProbeInfoDTO.fromJson(Map<String, dynamic> map) {
+		return ProbeInfoDTO( 
+			name: map['Name'],
+			applications: map['Applications'] != null ? map['Applications'].cast<String>().toList() : null,
+			applicationInfos: map['ApplicationInfos'] != null ? (map['ApplicationInfos'] as List).map((e)=>ApplicationSettingInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(name != null)
+			map['Name'] = name;
+		if(applications != null)
+			map['Applications'] = applications;
+		if(applicationInfos != null)
+			map['ApplicationInfos'] = applicationInfos;
+		return map;
+	}
+}
+
+class ProbeApplicationInfoDTO {
+	List<ProbeInfoDTO >? probes;
+	String? activeProbe;
+	String? activeApplication;
+
+	ProbeApplicationInfoDTO({
+		this.probes,
+		this.activeProbe,
+		this.activeApplication,
+	});
+
+	factory ProbeApplicationInfoDTO.fromJson(Map<String, dynamic> map) {
+		return ProbeApplicationInfoDTO( 
+			probes: map['Probes'] != null ? (map['Probes'] as List).map((e)=>ProbeInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			activeProbe: map['ActiveProbe'],
+			activeApplication: map['ActiveApplication'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(probes != null)
+			map['Probes'] = probes;
+		if(activeProbe != null)
+			map['ActiveProbe'] = activeProbe;
+		if(activeApplication != null)
+			map['ActiveApplication'] = activeApplication;
+		return map;
+	}
+}
+
+class ControlParameterDTO {
+	bool canExecute;
+	List<ControlParameterDTO >? children;
+	String? description;
+	String? displayValue;
+	String? parentDescription;
+	String? valuesMapString;
+
+	ControlParameterDTO({
+		this.canExecute = false,
+		this.children,
+		this.description,
+		this.displayValue,
+		this.parentDescription,
+		this.valuesMapString,
+	});
+
+	factory ControlParameterDTO.fromJson(Map<String, dynamic> map) {
+		return ControlParameterDTO( 
+			canExecute: map['CanExecute'],
+			children: map['Children'] != null ? (map['Children'] as List).map((e)=>ControlParameterDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			description: map['Description'],
+			displayValue: map['DisplayValue'],
+			parentDescription: map['ParentDescription'],
+			valuesMapString: map['ValuesMapString'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['CanExecute'] = canExecute;
+		if(children != null)
+			map['Children'] = children;
+		if(description != null)
+			map['Description'] = description;
+		if(displayValue != null)
+			map['DisplayValue'] = displayValue;
+		if(parentDescription != null)
+			map['ParentDescription'] = parentDescription;
+		if(valuesMapString != null)
+			map['ValuesMapString'] = valuesMapString;
+		return map;
+	}
+}
+
+class DeviceParametersNotification extends NotificationDTO{
+	String? deviceCode;
+	ProbeApplicationInfoDTO? probeApplication;
+	ControlParameterDTO? parameter;
+
+	DeviceParametersNotification({
+		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
+		this.deviceCode,
+		this.probeApplication,
+		this.parameter,
+		String? code,
+		bool isResponse = false,
+	}) : super(
+			notificationType: notificationType,
+			code: code,
+			isResponse: isResponse,
+		);
+
+	factory DeviceParametersNotification.fromJson(Map<String, dynamic> map) {
+		return DeviceParametersNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			deviceCode: map['DeviceCode'],
+			probeApplication: map['ProbeApplication'] != null ? ProbeApplicationInfoDTO.fromJson(map['ProbeApplication']) : null,
+			parameter: map['Parameter'] != null ? ControlParameterDTO.fromJson(map['Parameter']) : null,
+			code: map['Code'],
+			isResponse: map['IsResponse'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(deviceCode != null)
+			map['DeviceCode'] = deviceCode;
+		if(probeApplication != null)
+			map['ProbeApplication'] = probeApplication;
+		if(parameter != null)
+			map['Parameter'] = parameter;
+		return map;
+	}
+}
+
 class DisconnectNotification extends NotificationDTO{
 
 	DisconnectNotification({
@@ -1047,123 +1320,12 @@ class CloseLiveConsultationToDeviceNotification extends NotificationDTO{
 	}
 }
 
-class LiveConsultationJoinerInfo extends LiveConsultationMemberInfo{
-	bool isOnline;
-	bool mute;
-	bool isInitiator;
-	LoginSource loginSource;
-	LiveData? liveData;
-
-	LiveConsultationJoinerInfo({
-		this.isOnline = false,
-		this.mute = false,
-		this.isInitiator = false,
-		this.loginSource = LoginSource.PC,
-		this.liveData,
-		String? id,
-		String? name,
-		String? headImageUrl,
-	}) : super(
-			id: id,
-			name: name,
-			headImageUrl: headImageUrl,
-		);
-
-	factory LiveConsultationJoinerInfo.fromJson(Map<String, dynamic> map) {
-		return LiveConsultationJoinerInfo( 
-			isOnline: map['IsOnline'],
-			mute: map['Mute'],
-			isInitiator: map['IsInitiator'],
-			loginSource: LoginSource.values.firstWhere((e) => e.index == map['LoginSource']),
-			liveData: map['LiveData'] != null ? LiveData.fromJson(map['LiveData']) : null,
-			id: map['Id'],
-			name: map['Name'],
-			headImageUrl: map['HeadImageUrl'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		map['IsOnline'] = isOnline;
-		map['Mute'] = mute;
-		map['IsInitiator'] = isInitiator;
-		map['LoginSource'] = loginSource.index;
-		if(liveData != null)
-			map['LiveData'] = liveData;
-		return map;
-	}
-}
-
-class HeartRateJoinConsultationNotification extends NotificationDTO{
-	String? consultationCode;
-	LiveConsultationJoinerInfo? joiner;
-
-	HeartRateJoinConsultationNotification({
-		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
-		this.consultationCode,
-		this.joiner,
-		String? code,
-		bool isResponse = false,
-	}) : super(
-			notificationType: notificationType,
-			code: code,
-			isResponse: isResponse,
-		);
-
-	factory HeartRateJoinConsultationNotification.fromJson(Map<String, dynamic> map) {
-		return HeartRateJoinConsultationNotification( 
-			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
-			consultationCode: map['ConsultationCode'],
-			joiner: map['Joiner'] != null ? LiveConsultationJoinerInfo.fromJson(map['Joiner']) : null,
-			code: map['Code'],
-			isResponse: map['IsResponse'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		if(consultationCode != null)
-			map['ConsultationCode'] = consultationCode;
-		if(joiner != null)
-			map['Joiner'] = joiner;
-		return map;
-	}
-}
-
-class LiveConsultationLeaverInfo extends LiveConsultationMemberInfo{
-
-	LiveConsultationLeaverInfo({
-		String? id,
-		String? name,
-		String? headImageUrl,
-	}) : super(
-			id: id,
-			name: name,
-			headImageUrl: headImageUrl,
-		);
-
-	factory LiveConsultationLeaverInfo.fromJson(Map<String, dynamic> map) {
-		return LiveConsultationLeaverInfo( 
-			id: map['Id'],
-			name: map['Name'],
-			headImageUrl: map['HeadImageUrl'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		return map;
-	}
-}
-
-class HeartRateLeaveConsultationNotification extends NotificationDTO{
+class EmergencyCallFailedNotification extends NotificationDTO{
 	String? consultationCode;
-	LiveConsultationLeaverInfo? leaverInfo;
 
-	HeartRateLeaveConsultationNotification({
+	EmergencyCallFailedNotification({
 		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
 		this.consultationCode,
-		this.leaverInfo,
 		String? code,
 		bool isResponse = false,
 	}) : super(
@@ -1172,11 +1334,10 @@ class HeartRateLeaveConsultationNotification extends NotificationDTO{
 			isResponse: isResponse,
 		);
 
-	factory HeartRateLeaveConsultationNotification.fromJson(Map<String, dynamic> map) {
-		return HeartRateLeaveConsultationNotification( 
+	factory EmergencyCallFailedNotification.fromJson(Map<String, dynamic> map) {
+		return EmergencyCallFailedNotification( 
 			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
 			consultationCode: map['ConsultationCode'],
-			leaverInfo: map['LeaverInfo'] != null ? LiveConsultationLeaverInfo.fromJson(map['LeaverInfo']) : null,
 			code: map['Code'],
 			isResponse: map['IsResponse'],
 		);
@@ -1186,8 +1347,6 @@ class HeartRateLeaveConsultationNotification extends NotificationDTO{
 		final map = super.toJson();
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
-		if(leaverInfo != null)
-			map['LeaverInfo'] = leaverInfo;
 		return map;
 	}
 }
@@ -1267,6 +1426,7 @@ class LiveConsultationMember {
 	int mergedVideoOutputHeight;
 	LiveData? liveData;
 	List<VideoDeviceOutputInfo >? videoDeviceInfos;
+	bool isControllingParameter;
 
 	LiveConsultationMember({
 		this.id,
@@ -1286,6 +1446,7 @@ class LiveConsultationMember {
 		this.mergedVideoOutputHeight = 0,
 		this.liveData,
 		this.videoDeviceInfos,
+		this.isControllingParameter = false,
 	});
 
 	factory LiveConsultationMember.fromJson(Map<String, dynamic> map) {
@@ -1307,6 +1468,7 @@ class LiveConsultationMember {
 			mergedVideoOutputHeight: map['MergedVideoOutputHeight'],
 			liveData: map['LiveData'] != null ? LiveData.fromJson(map['LiveData']) : null,
 			videoDeviceInfos: map['VideoDeviceInfos'] != null ? (map['VideoDeviceInfos'] as List).map((e)=>VideoDeviceOutputInfo.fromJson(e as Map<String,dynamic>)).toList() : null,
+			isControllingParameter: map['IsControllingParameter'],
 		);
 	}
 
@@ -1335,6 +1497,196 @@ class LiveConsultationMember {
 			map['LiveData'] = liveData;
 		if(videoDeviceInfos != null)
 			map['VideoDeviceInfos'] = videoDeviceInfos;
+		map['IsControllingParameter'] = isControllingParameter;
+		return map;
+	}
+}
+
+class EmergencyCallNotification extends NotificationDTO{
+	String? consultationCode;
+	int roomNo;
+	int timeout;
+	LiveConsultationMember? initiator;
+
+	EmergencyCallNotification({
+		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
+		this.consultationCode,
+		this.roomNo = 0,
+		this.timeout = 0,
+		this.initiator,
+		String? code,
+		bool isResponse = false,
+	}) : super(
+			notificationType: notificationType,
+			code: code,
+			isResponse: isResponse,
+		);
+
+	factory EmergencyCallNotification.fromJson(Map<String, dynamic> map) {
+		return EmergencyCallNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			consultationCode: map['ConsultationCode'],
+			roomNo: map['RoomNo'],
+			timeout: map['Timeout'],
+			initiator: map['Initiator'] != null ? LiveConsultationMember.fromJson(map['Initiator']) : null,
+			code: map['Code'],
+			isResponse: map['IsResponse'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(consultationCode != null)
+			map['ConsultationCode'] = consultationCode;
+		map['RoomNo'] = roomNo;
+		map['Timeout'] = timeout;
+		if(initiator != null)
+			map['Initiator'] = initiator;
+		return map;
+	}
+}
+
+class LiveConsultationJoinerInfo extends LiveConsultationMemberInfo{
+	bool isOnline;
+	bool mute;
+	bool isInitiator;
+	LoginSource loginSource;
+	LiveData? liveData;
+
+	LiveConsultationJoinerInfo({
+		this.isOnline = false,
+		this.mute = false,
+		this.isInitiator = false,
+		this.loginSource = LoginSource.PC,
+		this.liveData,
+		String? id,
+		String? name,
+		String? headImageUrl,
+	}) : super(
+			id: id,
+			name: name,
+			headImageUrl: headImageUrl,
+		);
+
+	factory LiveConsultationJoinerInfo.fromJson(Map<String, dynamic> map) {
+		return LiveConsultationJoinerInfo( 
+			isOnline: map['IsOnline'],
+			mute: map['Mute'],
+			isInitiator: map['IsInitiator'],
+			loginSource: LoginSource.values.firstWhere((e) => e.index == map['LoginSource']),
+			liveData: map['LiveData'] != null ? LiveData.fromJson(map['LiveData']) : null,
+			id: map['Id'],
+			name: map['Name'],
+			headImageUrl: map['HeadImageUrl'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		map['IsOnline'] = isOnline;
+		map['Mute'] = mute;
+		map['IsInitiator'] = isInitiator;
+		map['LoginSource'] = loginSource.index;
+		if(liveData != null)
+			map['LiveData'] = liveData;
+		return map;
+	}
+}
+
+class HeartRateJoinConsultationNotification extends NotificationDTO{
+	String? consultationCode;
+	LiveConsultationJoinerInfo? joiner;
+
+	HeartRateJoinConsultationNotification({
+		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
+		this.consultationCode,
+		this.joiner,
+		String? code,
+		bool isResponse = false,
+	}) : super(
+			notificationType: notificationType,
+			code: code,
+			isResponse: isResponse,
+		);
+
+	factory HeartRateJoinConsultationNotification.fromJson(Map<String, dynamic> map) {
+		return HeartRateJoinConsultationNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			consultationCode: map['ConsultationCode'],
+			joiner: map['Joiner'] != null ? LiveConsultationJoinerInfo.fromJson(map['Joiner']) : null,
+			code: map['Code'],
+			isResponse: map['IsResponse'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(consultationCode != null)
+			map['ConsultationCode'] = consultationCode;
+		if(joiner != null)
+			map['Joiner'] = joiner;
+		return map;
+	}
+}
+
+class LiveConsultationLeaverInfo extends LiveConsultationMemberInfo{
+
+	LiveConsultationLeaverInfo({
+		String? id,
+		String? name,
+		String? headImageUrl,
+	}) : super(
+			id: id,
+			name: name,
+			headImageUrl: headImageUrl,
+		);
+
+	factory LiveConsultationLeaverInfo.fromJson(Map<String, dynamic> map) {
+		return LiveConsultationLeaverInfo( 
+			id: map['Id'],
+			name: map['Name'],
+			headImageUrl: map['HeadImageUrl'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		return map;
+	}
+}
+
+class HeartRateLeaveConsultationNotification extends NotificationDTO{
+	String? consultationCode;
+	LiveConsultationLeaverInfo? leaverInfo;
+
+	HeartRateLeaveConsultationNotification({
+		NotificationTypeEnum notificationType = NotificationTypeEnum.Unknown,
+		this.consultationCode,
+		this.leaverInfo,
+		String? code,
+		bool isResponse = false,
+	}) : super(
+			notificationType: notificationType,
+			code: code,
+			isResponse: isResponse,
+		);
+
+	factory HeartRateLeaveConsultationNotification.fromJson(Map<String, dynamic> map) {
+		return HeartRateLeaveConsultationNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			consultationCode: map['ConsultationCode'],
+			leaverInfo: map['LeaverInfo'] != null ? LiveConsultationLeaverInfo.fromJson(map['LeaverInfo']) : null,
+			code: map['Code'],
+			isResponse: map['IsResponse'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(consultationCode != null)
+			map['ConsultationCode'] = consultationCode;
+		if(leaverInfo != null)
+			map['LeaverInfo'] = leaverInfo;
 		return map;
 	}
 }

+ 12 - 0
lib/services/notificationdecoder.dart

@@ -28,6 +28,12 @@ class NotificationDecoder {
 		_builders.add(NotificationTypeEnum.ConnectionNotification,
 				(map) => ConnectionNotification.fromJson(map));
 
+		_builders.add(NotificationTypeEnum.DeviceControlledParametersNotification,
+				(map) => DeviceControlledParametersNotification.fromJson(map));
+
+		_builders.add(NotificationTypeEnum.DeviceParametersNotification,
+				(map) => DeviceParametersNotification.fromJson(map));
+
 		_builders.add(NotificationTypeEnum.DisconnectNotification,
 				(map) => DisconnectNotification.fromJson(map));
 
@@ -79,6 +85,12 @@ class NotificationDecoder {
 		_builders.add(NotificationTypeEnum.CloseLiveConsultationToDeviceNotification,
 				(map) => CloseLiveConsultationToDeviceNotification.fromJson(map));
 
+		_builders.add(NotificationTypeEnum.EmergencyCallFailedNotification,
+				(map) => EmergencyCallFailedNotification.fromJson(map));
+
+		_builders.add(NotificationTypeEnum.EmergencyCallNotification,
+				(map) => EmergencyCallNotification.fromJson(map));
+
 		_builders.add(NotificationTypeEnum.HeartRateJoinConsultationNotification,
 				(map) => HeartRateJoinConsultationNotification.fromJson(map));
 

+ 0 - 16
lib/services/organization.m.dart

@@ -84,8 +84,6 @@ class OrganizationBasicDTO extends OrganizationBaseDTO{
 	double referralLimitHours;
 	List<String >? referralOrganizationCodes;
 	List<ReferralOrganizationDTO >? referralOrganizations;
-	String? emergencyOrganizationCode;
-	String? emergencyDoctorCode;
 
 	OrganizationBasicDTO({
 		this.regionCode,
@@ -99,8 +97,6 @@ class OrganizationBasicDTO extends OrganizationBaseDTO{
 		this.referralLimitHours = 0,
 		this.referralOrganizationCodes,
 		this.referralOrganizations,
-		this.emergencyOrganizationCode,
-		this.emergencyDoctorCode,
 		String? organizationCode,
 		String? organizationName,
 		DateTime? createTime,
@@ -125,8 +121,6 @@ class OrganizationBasicDTO extends OrganizationBaseDTO{
 			referralLimitHours: double.parse(map['ReferralLimitHours'].toString()),
 			referralOrganizationCodes: map['ReferralOrganizationCodes'] != null ? map['ReferralOrganizationCodes'].cast<String>().toList() : null,
 			referralOrganizations: map['ReferralOrganizations'] != null ? (map['ReferralOrganizations'] as List).map((e)=>ReferralOrganizationDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			emergencyOrganizationCode: map['EmergencyOrganizationCode'],
-			emergencyDoctorCode: map['EmergencyDoctorCode'],
 			organizationCode: map['OrganizationCode'],
 			organizationName: map['OrganizationName'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
@@ -154,10 +148,6 @@ class OrganizationBasicDTO extends OrganizationBaseDTO{
 			map['ReferralOrganizationCodes'] = referralOrganizationCodes;
 		if(referralOrganizations != null)
 			map['ReferralOrganizations'] = referralOrganizations;
-		if(emergencyOrganizationCode != null)
-			map['EmergencyOrganizationCode'] = emergencyOrganizationCode;
-		if(emergencyDoctorCode != null)
-			map['EmergencyDoctorCode'] = emergencyDoctorCode;
 		return map;
 	}
 }
@@ -218,8 +208,6 @@ class OrganizationDTO extends OrganizationBasicDTO{
 		double referralLimitHours = 0,
 		List<String >? referralOrganizationCodes,
 		List<ReferralOrganizationDTO >? referralOrganizations,
-		String? emergencyOrganizationCode,
-		String? emergencyDoctorCode,
 		String? organizationCode,
 		String? organizationName,
 		DateTime? createTime,
@@ -236,8 +224,6 @@ class OrganizationDTO extends OrganizationBasicDTO{
 			referralLimitHours: referralLimitHours,
 			referralOrganizationCodes: referralOrganizationCodes,
 			referralOrganizations: referralOrganizations,
-			emergencyOrganizationCode: emergencyOrganizationCode,
-			emergencyDoctorCode: emergencyDoctorCode,
 			organizationCode: organizationCode,
 			organizationName: organizationName,
 			createTime: createTime,
@@ -272,8 +258,6 @@ class OrganizationDTO extends OrganizationBasicDTO{
 			referralLimitHours: double.parse(map['ReferralLimitHours'].toString()),
 			referralOrganizationCodes: map['ReferralOrganizationCodes'] != null ? map['ReferralOrganizationCodes'].cast<String>().toList() : null,
 			referralOrganizations: map['ReferralOrganizations'] != null ? (map['ReferralOrganizations'] as List).map((e)=>ReferralOrganizationDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			emergencyOrganizationCode: map['EmergencyOrganizationCode'],
-			emergencyDoctorCode: map['EmergencyDoctorCode'],
 			organizationCode: map['OrganizationCode'],
 			organizationName: map['OrganizationName'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,

+ 224 - 38
lib/services/other.m.dart

@@ -751,11 +751,15 @@ class FindExaminationQuestionPagesRequest extends PageRequest{
 	String? searchKey;
 	List<String >? caseLabelCodes;
 	List<String >? courseLabelCodes;
+	List<String >? codes;
+	List<String >? notInCodes;
 
 	FindExaminationQuestionPagesRequest({
 		this.searchKey,
 		this.caseLabelCodes,
 		this.courseLabelCodes,
+		this.codes,
+		this.notInCodes,
 		int pageIndex = 0,
 		int pageSize = 0,
 		String? token,
@@ -770,6 +774,8 @@ class FindExaminationQuestionPagesRequest extends PageRequest{
 			searchKey: map['SearchKey'],
 			caseLabelCodes: map['CaseLabelCodes'] != null ? map['CaseLabelCodes'].cast<String>().toList() : null,
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
+			codes: map['Codes'] != null ? map['Codes'].cast<String>().toList() : null,
+			notInCodes: map['NotInCodes'] != null ? map['NotInCodes'].cast<String>().toList() : null,
 			pageIndex: map['PageIndex'],
 			pageSize: map['PageSize'],
 			token: map['Token'],
@@ -784,6 +790,35 @@ class FindExaminationQuestionPagesRequest extends PageRequest{
 			map['CaseLabelCodes'] = caseLabelCodes;
 		if(courseLabelCodes != null)
 			map['CourseLabelCodes'] = courseLabelCodes;
+		if(codes != null)
+			map['Codes'] = codes;
+		if(notInCodes != null)
+			map['NotInCodes'] = notInCodes;
+		return map;
+	}
+}
+
+class FindExaminationQuestionsByCodesRequest extends TokenRequest{
+	List<String >? codes;
+
+	FindExaminationQuestionsByCodesRequest({
+		this.codes,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory FindExaminationQuestionsByCodesRequest.fromJson(Map<String, dynamic> map) {
+		return FindExaminationQuestionsByCodesRequest( 
+			codes: map['Codes'] != null ? map['Codes'].cast<String>().toList() : null,
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(codes != null)
+			map['Codes'] = codes;
 		return map;
 	}
 }
@@ -798,11 +833,11 @@ enum QuestionTypeEnum {
 
 class QuestionOptionDTO {
 	String? content;
-	String? trueOrFalse;
+	bool trueOrFalse;
 
 	QuestionOptionDTO({
 		this.content,
-		this.trueOrFalse,
+		this.trueOrFalse = false,
 	});
 
 	factory QuestionOptionDTO.fromJson(Map<String, dynamic> map) {
@@ -816,8 +851,7 @@ class QuestionOptionDTO {
 		final map = Map<String, dynamic>();
 		if(content != null)
 			map['Content'] = content;
-		if(trueOrFalse != null)
-			map['TrueOrFalse'] = trueOrFalse;
+		map['TrueOrFalse'] = trueOrFalse;
 		return map;
 	}
 }
@@ -826,10 +860,11 @@ class CreateExaminationQuestionRequest extends TokenRequest{
 	String? stem;
 	QuestionTypeEnum questionType;
 	List<QuestionOptionDTO >? questionOptionList;
-	String? pictureList;
-	String? videoList;
+	List<String >? pictureList;
+	List<String >? videoList;
 	List<String >? caseLabelCodes;
 	List<String >? courseLabelCodes;
+	bool trueOrFalse;
 
 	CreateExaminationQuestionRequest({
 		this.stem,
@@ -839,6 +874,7 @@ class CreateExaminationQuestionRequest extends TokenRequest{
 		this.videoList,
 		this.caseLabelCodes,
 		this.courseLabelCodes,
+		this.trueOrFalse = false,
 		String? token,
 	}) : super(
 			token: token,
@@ -849,10 +885,11 @@ class CreateExaminationQuestionRequest extends TokenRequest{
 			stem: map['Stem'],
 			questionType: QuestionTypeEnum.values.firstWhere((e) => e.index == map['QuestionType']),
 			questionOptionList: map['QuestionOptionList'] != null ? (map['QuestionOptionList'] as List).map((e)=>QuestionOptionDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			pictureList: map['PictureList'],
-			videoList: map['VideoList'],
+			pictureList: map['PictureList'] != null ? map['PictureList'].cast<String>().toList() : null,
+			videoList: map['VideoList'] != null ? map['VideoList'].cast<String>().toList() : null,
 			caseLabelCodes: map['CaseLabelCodes'] != null ? map['CaseLabelCodes'].cast<String>().toList() : null,
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
+			trueOrFalse: map['TrueOrFalse'],
 			token: map['Token'],
 		);
 	}
@@ -872,15 +909,16 @@ class CreateExaminationQuestionRequest extends TokenRequest{
 			map['CaseLabelCodes'] = caseLabelCodes;
 		if(courseLabelCodes != null)
 			map['CourseLabelCodes'] = courseLabelCodes;
+		map['TrueOrFalse'] = trueOrFalse;
 		return map;
 	}
 }
 
 class GetExaminationQuestionRequest extends TokenRequest{
-	String? examinationQuestionCode;
+	String? code;
 
 	GetExaminationQuestionRequest({
-		this.examinationQuestionCode,
+		this.code,
 		String? token,
 	}) : super(
 			token: token,
@@ -888,29 +926,32 @@ class GetExaminationQuestionRequest extends TokenRequest{
 
 	factory GetExaminationQuestionRequest.fromJson(Map<String, dynamic> map) {
 		return GetExaminationQuestionRequest( 
-			examinationQuestionCode: map['ExaminationQuestionCode'],
+			code: map['Code'],
 			token: map['Token'],
 		);
 	}
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
-		if(examinationQuestionCode != null)
-			map['ExaminationQuestionCode'] = examinationQuestionCode;
+		if(code != null)
+			map['Code'] = code;
 		return map;
 	}
 }
 
 class UpdateExaminationQuestionRequest extends TokenRequest{
+	String? code;
 	String? stem;
 	QuestionTypeEnum questionType;
 	List<QuestionOptionDTO >? questionOptionList;
-	String? pictureList;
-	String? videoList;
+	List<String >? pictureList;
+	List<String >? videoList;
 	List<String >? caseLabelCodes;
 	List<String >? courseLabelCodes;
+	bool trueOrFalse;
 
 	UpdateExaminationQuestionRequest({
+		this.code,
 		this.stem,
 		this.questionType = QuestionTypeEnum.Judge,
 		this.questionOptionList,
@@ -918,6 +959,7 @@ class UpdateExaminationQuestionRequest extends TokenRequest{
 		this.videoList,
 		this.caseLabelCodes,
 		this.courseLabelCodes,
+		this.trueOrFalse = false,
 		String? token,
 	}) : super(
 			token: token,
@@ -925,19 +967,23 @@ class UpdateExaminationQuestionRequest extends TokenRequest{
 
 	factory UpdateExaminationQuestionRequest.fromJson(Map<String, dynamic> map) {
 		return UpdateExaminationQuestionRequest( 
+			code: map['Code'],
 			stem: map['Stem'],
 			questionType: QuestionTypeEnum.values.firstWhere((e) => e.index == map['QuestionType']),
 			questionOptionList: map['QuestionOptionList'] != null ? (map['QuestionOptionList'] as List).map((e)=>QuestionOptionDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			pictureList: map['PictureList'],
-			videoList: map['VideoList'],
+			pictureList: map['PictureList'] != null ? map['PictureList'].cast<String>().toList() : null,
+			videoList: map['VideoList'] != null ? map['VideoList'].cast<String>().toList() : null,
 			caseLabelCodes: map['CaseLabelCodes'] != null ? map['CaseLabelCodes'].cast<String>().toList() : null,
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
+			trueOrFalse: map['TrueOrFalse'],
 			token: map['Token'],
 		);
 	}
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
+		if(code != null)
+			map['Code'] = code;
 		if(stem != null)
 			map['Stem'] = stem;
 		map['QuestionType'] = questionType.index;
@@ -951,15 +997,16 @@ class UpdateExaminationQuestionRequest extends TokenRequest{
 			map['CaseLabelCodes'] = caseLabelCodes;
 		if(courseLabelCodes != null)
 			map['CourseLabelCodes'] = courseLabelCodes;
+		map['TrueOrFalse'] = trueOrFalse;
 		return map;
 	}
 }
 
 class DeleteExaminationQuestionRequest extends TokenRequest{
-	String? examinationQuestionCode;
+	String? code;
 
 	DeleteExaminationQuestionRequest({
-		this.examinationQuestionCode,
+		this.code,
 		String? token,
 	}) : super(
 			token: token,
@@ -967,15 +1014,15 @@ class DeleteExaminationQuestionRequest extends TokenRequest{
 
 	factory DeleteExaminationQuestionRequest.fromJson(Map<String, dynamic> map) {
 		return DeleteExaminationQuestionRequest( 
-			examinationQuestionCode: map['ExaminationQuestionCode'],
+			code: map['Code'],
 			token: map['Token'],
 		);
 	}
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
-		if(examinationQuestionCode != null)
-			map['ExaminationQuestionCode'] = examinationQuestionCode;
+		if(code != null)
+			map['Code'] = code;
 		return map;
 	}
 }
@@ -1683,6 +1730,7 @@ class AdminApplyCourseRequest extends TokenRequest{
 	List<String >? courseLabelCodes;
 	List<String >? userGroupCodes;
 	Decimal? price;
+	List<String >? courseVideoCodes;
 
 	AdminApplyCourseRequest({
 		this.name,
@@ -1700,6 +1748,7 @@ class AdminApplyCourseRequest extends TokenRequest{
 		this.courseLabelCodes,
 		this.userGroupCodes,
 		this.price,
+		this.courseVideoCodes,
 		String? token,
 	}) : super(
 			token: token,
@@ -1722,6 +1771,7 @@ class AdminApplyCourseRequest extends TokenRequest{
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
 			userGroupCodes: map['UserGroupCodes'] != null ? map['UserGroupCodes'].cast<String>().toList() : null,
 			price: map['Price'] != null ? Decimal.fromJson(map['Price']) : null,
+			courseVideoCodes: map['CourseVideoCodes'] != null ? map['CourseVideoCodes'].cast<String>().toList() : null,
 			token: map['Token'],
 		);
 	}
@@ -1754,6 +1804,8 @@ class AdminApplyCourseRequest extends TokenRequest{
 			map['UserGroupCodes'] = userGroupCodes;
 		if(price != null)
 			map['Price'] = price;
+		if(courseVideoCodes != null)
+			map['CourseVideoCodes'] = courseVideoCodes;
 		return map;
 	}
 }
@@ -1815,10 +1867,12 @@ class AdminDeleteCourseByCodeRequest extends TokenRequest{
 class AdminFindCoursePagesRequest extends PageRequest{
 	String? keyword;
 	CourseStatusEnum status;
+	String? languageCode;
 
 	AdminFindCoursePagesRequest({
 		this.keyword,
 		this.status = CourseStatusEnum.Unknown,
+		this.languageCode,
 		int pageIndex = 0,
 		int pageSize = 0,
 		String? token,
@@ -1832,6 +1886,7 @@ class AdminFindCoursePagesRequest extends PageRequest{
 		return AdminFindCoursePagesRequest( 
 			keyword: map['Keyword'],
 			status: CourseStatusEnum.values.firstWhere((e) => e.index == map['Status']),
+			languageCode: map['LanguageCode'],
 			pageIndex: map['PageIndex'],
 			pageSize: map['PageSize'],
 			token: map['Token'],
@@ -1843,6 +1898,8 @@ class AdminFindCoursePagesRequest extends PageRequest{
 		if(keyword != null)
 			map['Keyword'] = keyword;
 		map['Status'] = status.index;
+		if(languageCode != null)
+			map['LanguageCode'] = languageCode;
 		return map;
 	}
 }
@@ -1864,6 +1921,7 @@ class AdminUpdateCourseRequest extends TokenRequest{
 	List<String >? courseLabelCodes;
 	List<String >? userGroupCodes;
 	Decimal? price;
+	List<String >? courseVideoCodes;
 
 	AdminUpdateCourseRequest({
 		this.code,
@@ -1882,6 +1940,7 @@ class AdminUpdateCourseRequest extends TokenRequest{
 		this.courseLabelCodes,
 		this.userGroupCodes,
 		this.price,
+		this.courseVideoCodes,
 		String? token,
 	}) : super(
 			token: token,
@@ -1905,6 +1964,7 @@ class AdminUpdateCourseRequest extends TokenRequest{
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
 			userGroupCodes: map['UserGroupCodes'] != null ? map['UserGroupCodes'].cast<String>().toList() : null,
 			price: map['Price'] != null ? Decimal.fromJson(map['Price']) : null,
+			courseVideoCodes: map['CourseVideoCodes'] != null ? map['CourseVideoCodes'].cast<String>().toList() : null,
 			token: map['Token'],
 		);
 	}
@@ -1939,6 +1999,8 @@ class AdminUpdateCourseRequest extends TokenRequest{
 			map['UserGroupCodes'] = userGroupCodes;
 		if(price != null)
 			map['Price'] = price;
+		if(courseVideoCodes != null)
+			map['CourseVideoCodes'] = courseVideoCodes;
 		return map;
 	}
 }
@@ -4729,8 +4791,6 @@ class ModifyOrganizationRequest extends OrganizationDTO{
 		double referralLimitHours = 0,
 		List<String >? referralOrganizationCodes,
 		List<ReferralOrganizationDTO >? referralOrganizations,
-		String? emergencyOrganizationCode,
-		String? emergencyDoctorCode,
 		String? organizationCode,
 		String? organizationName,
 		DateTime? createTime,
@@ -4762,8 +4822,6 @@ class ModifyOrganizationRequest extends OrganizationDTO{
 			referralLimitHours: referralLimitHours,
 			referralOrganizationCodes: referralOrganizationCodes,
 			referralOrganizations: referralOrganizations,
-			emergencyOrganizationCode: emergencyOrganizationCode,
-			emergencyDoctorCode: emergencyDoctorCode,
 			organizationCode: organizationCode,
 			organizationName: organizationName,
 			createTime: createTime,
@@ -4799,8 +4857,6 @@ class ModifyOrganizationRequest extends OrganizationDTO{
 			referralLimitHours: double.parse(map['ReferralLimitHours'].toString()),
 			referralOrganizationCodes: map['ReferralOrganizationCodes'] != null ? map['ReferralOrganizationCodes'].cast<String>().toList() : null,
 			referralOrganizations: map['ReferralOrganizations'] != null ? (map['ReferralOrganizations'] as List).map((e)=>ReferralOrganizationDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			emergencyOrganizationCode: map['EmergencyOrganizationCode'],
-			emergencyDoctorCode: map['EmergencyDoctorCode'],
 			organizationCode: map['OrganizationCode'],
 			organizationName: map['OrganizationName'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
@@ -6334,6 +6390,36 @@ class UpdateGradingProtectionConfigEnableRequest extends TokenRequest{
 	}
 }
 
+class FindVideosByCourseCodeRequest extends TokenRequest{
+	String? code;
+	String? courseCode;
+
+	FindVideosByCourseCodeRequest({
+		this.code,
+		this.courseCode,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory FindVideosByCourseCodeRequest.fromJson(Map<String, dynamic> map) {
+		return FindVideosByCourseCodeRequest( 
+			code: map['Code'],
+			courseCode: map['CourseCode'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(code != null)
+			map['Code'] = code;
+		if(courseCode != null)
+			map['CourseCode'] = courseCode;
+		return map;
+	}
+}
+
 class GetOpLogsByCodesFormMasterRequest {
 	List<String >? codes;
 
@@ -6683,6 +6769,31 @@ class FindOrganizationBindExpertsRequest extends TokenRequest{
 	}
 }
 
+class GetEmergencyOrderRequest extends TokenRequest{
+	String? emergencySerialNumber;
+
+	GetEmergencyOrderRequest({
+		this.emergencySerialNumber,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory GetEmergencyOrderRequest.fromJson(Map<String, dynamic> map) {
+		return GetEmergencyOrderRequest( 
+			emergencySerialNumber: map['EmergencySerialNumber'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(emergencySerialNumber != null)
+			map['EmergencySerialNumber'] = emergencySerialNumber;
+		return map;
+	}
+}
+
 enum AgeUnitsEnum {
 	Year,
 	YearAndMonth,
@@ -7888,6 +7999,8 @@ enum SyncTypeEnum {
 	ChangeConsultationStatus,
 	Agree,
 	Notification,
+	EmergencyAccept,
+	ChangeControllingParameter,
 }
 
 enum SyncServiceEnum {
@@ -7903,6 +8016,7 @@ enum TransactionTypeEnum {
 	Announcement,
 	Session,
 	RemoteDia,
+	ControlParameter,
 }
 
 enum ASETypeEnum {
@@ -9159,6 +9273,71 @@ class ReportPushRecordDTO extends BaseDTO{
 	}
 }
 
+class ProbeSettingInfoDTO {
+	String? name;
+	List<ApplicationSettingInfoDTO >? applications;
+
+	ProbeSettingInfoDTO({
+		this.name,
+		this.applications,
+	});
+
+	factory ProbeSettingInfoDTO.fromJson(Map<String, dynamic> map) {
+		return ProbeSettingInfoDTO( 
+			name: map['Name'],
+			applications: map['Applications'] != null ? (map['Applications'] as List).map((e)=>ApplicationSettingInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(name != null)
+			map['Name'] = name;
+		if(applications != null)
+			map['Applications'] = applications;
+		return map;
+	}
+}
+
+class ProbeApplicationSettingInfoDTO {
+	List<ProbeSettingInfoDTO >? probes;
+	String? activeProbe;
+	String? activeApplication;
+	int maxNumberForApplication;
+	int maxNumberForApplicationOfUserDefine;
+
+	ProbeApplicationSettingInfoDTO({
+		this.probes,
+		this.activeProbe,
+		this.activeApplication,
+		this.maxNumberForApplication = 0,
+		this.maxNumberForApplicationOfUserDefine = 0,
+	});
+
+	factory ProbeApplicationSettingInfoDTO.fromJson(Map<String, dynamic> map) {
+		return ProbeApplicationSettingInfoDTO( 
+			probes: map['Probes'] != null ? (map['Probes'] as List).map((e)=>ProbeSettingInfoDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
+			activeProbe: map['ActiveProbe'],
+			activeApplication: map['ActiveApplication'],
+			maxNumberForApplication: map['MaxNumberForApplication'],
+			maxNumberForApplicationOfUserDefine: map['MaxNumberForApplicationOfUserDefine'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		if(probes != null)
+			map['Probes'] = probes;
+		if(activeProbe != null)
+			map['ActiveProbe'] = activeProbe;
+		if(activeApplication != null)
+			map['ActiveApplication'] = activeApplication;
+		map['MaxNumberForApplication'] = maxNumberForApplication;
+		map['MaxNumberForApplicationOfUserDefine'] = maxNumberForApplicationOfUserDefine;
+		return map;
+	}
+}
+
 class RegionItemDTO {
 	String? c;
 	String? g;
@@ -11963,8 +12142,6 @@ class ManageOrganizationDTO extends OrganizationDTO{
 		double referralLimitHours = 0,
 		List<String >? referralOrganizationCodes,
 		List<ReferralOrganizationDTO >? referralOrganizations,
-		String? emergencyOrganizationCode,
-		String? emergencyDoctorCode,
 		String? organizationCode,
 		String? organizationName,
 		DateTime? createTime,
@@ -11996,8 +12173,6 @@ class ManageOrganizationDTO extends OrganizationDTO{
 			referralLimitHours: referralLimitHours,
 			referralOrganizationCodes: referralOrganizationCodes,
 			referralOrganizations: referralOrganizations,
-			emergencyOrganizationCode: emergencyOrganizationCode,
-			emergencyDoctorCode: emergencyDoctorCode,
 			organizationCode: organizationCode,
 			organizationName: organizationName,
 			createTime: createTime,
@@ -12040,8 +12215,6 @@ class ManageOrganizationDTO extends OrganizationDTO{
 			referralLimitHours: double.parse(map['ReferralLimitHours'].toString()),
 			referralOrganizationCodes: map['ReferralOrganizationCodes'] != null ? map['ReferralOrganizationCodes'].cast<String>().toList() : null,
 			referralOrganizations: map['ReferralOrganizations'] != null ? (map['ReferralOrganizations'] as List).map((e)=>ReferralOrganizationDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			emergencyOrganizationCode: map['EmergencyOrganizationCode'],
-			emergencyDoctorCode: map['EmergencyDoctorCode'],
 			organizationCode: map['OrganizationCode'],
 			organizationName: map['OrganizationName'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
@@ -12401,6 +12574,7 @@ class LiveMemberDTO {
 	bool videoOpened;
 	String? loginServerHost;
 	LiveDataDTO? liveData;
+	bool isControllingParameter;
 
 	LiveMemberDTO({
 		this.code,
@@ -12412,6 +12586,7 @@ class LiveMemberDTO {
 		this.videoOpened = false,
 		this.loginServerHost,
 		this.liveData,
+		this.isControllingParameter = false,
 	});
 
 	factory LiveMemberDTO.fromJson(Map<String, dynamic> map) {
@@ -12425,6 +12600,7 @@ class LiveMemberDTO {
 			videoOpened: map['VideoOpened'],
 			loginServerHost: map['LoginServerHost'],
 			liveData: map['LiveData'] != null ? LiveDataDTO.fromJson(map['LiveData']) : null,
+			isControllingParameter: map['IsControllingParameter'],
 		);
 	}
 
@@ -12444,6 +12620,7 @@ class LiveMemberDTO {
 			map['LoginServerHost'] = loginServerHost;
 		if(liveData != null)
 			map['LiveData'] = liveData;
+		map['IsControllingParameter'] = isControllingParameter;
 		return map;
 	}
 }
@@ -12605,15 +12782,18 @@ class ExaminationPaperDTO {
 }
 
 class ExaminationQuestionDTO extends BaseDTO{
+	String? code;
 	String? stem;
 	QuestionTypeEnum questionType;
 	List<QuestionOptionDTO >? questionOptionList;
-	String? pictureList;
-	String? videoList;
+	List<String >? pictureList;
+	List<String >? videoList;
 	List<String >? caseLabelCodes;
 	List<String >? courseLabelCodes;
+	bool trueOrFalse;
 
 	ExaminationQuestionDTO({
+		this.code,
 		this.stem,
 		this.questionType = QuestionTypeEnum.Judge,
 		this.questionOptionList,
@@ -12621,6 +12801,7 @@ class ExaminationQuestionDTO extends BaseDTO{
 		this.videoList,
 		this.caseLabelCodes,
 		this.courseLabelCodes,
+		this.trueOrFalse = false,
 		DateTime? createTime,
 		DateTime? updateTime,
 	}) : super(
@@ -12630,13 +12811,15 @@ class ExaminationQuestionDTO extends BaseDTO{
 
 	factory ExaminationQuestionDTO.fromJson(Map<String, dynamic> map) {
 		return ExaminationQuestionDTO( 
+			code: map['Code'],
 			stem: map['Stem'],
 			questionType: QuestionTypeEnum.values.firstWhere((e) => e.index == map['QuestionType']),
 			questionOptionList: map['QuestionOptionList'] != null ? (map['QuestionOptionList'] as List).map((e)=>QuestionOptionDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
-			pictureList: map['PictureList'],
-			videoList: map['VideoList'],
+			pictureList: map['PictureList'] != null ? map['PictureList'].cast<String>().toList() : null,
+			videoList: map['VideoList'] != null ? map['VideoList'].cast<String>().toList() : null,
 			caseLabelCodes: map['CaseLabelCodes'] != null ? map['CaseLabelCodes'].cast<String>().toList() : null,
 			courseLabelCodes: map['CourseLabelCodes'] != null ? map['CourseLabelCodes'].cast<String>().toList() : null,
+			trueOrFalse: map['TrueOrFalse'],
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
 			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
 		);
@@ -12644,6 +12827,8 @@ class ExaminationQuestionDTO extends BaseDTO{
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
+		if(code != null)
+			map['Code'] = code;
 		if(stem != null)
 			map['Stem'] = stem;
 		map['QuestionType'] = questionType.index;
@@ -12657,6 +12842,7 @@ class ExaminationQuestionDTO extends BaseDTO{
 			map['CaseLabelCodes'] = caseLabelCodes;
 		if(courseLabelCodes != null)
 			map['CourseLabelCodes'] = courseLabelCodes;
+		map['TrueOrFalse'] = trueOrFalse;
 		return map;
 	}
 }

+ 17 - 5
lib/services/remedical.m.dart

@@ -2589,6 +2589,11 @@ class ReportPreviewDTO {
 	}
 }
 
+enum ReportTypeEnum {
+	RemoteDiagnosis,
+	LiveConsultation,
+}
+
 class ReportBaseDTO extends BaseDTO{
 	String? reportCode;
 	String? recordCode;
@@ -2605,6 +2610,7 @@ class ReportBaseDTO extends BaseDTO{
 	String? reportUserName;
 	List<ReportPreviewDTO >? reportPreviewList;
 	String? referralRecordCode;
+	ReportTypeEnum reportType;
 
 	ReportBaseDTO({
 		this.reportCode,
@@ -2622,6 +2628,7 @@ class ReportBaseDTO extends BaseDTO{
 		this.reportUserName,
 		this.reportPreviewList,
 		this.referralRecordCode,
+		this.reportType = ReportTypeEnum.RemoteDiagnosis,
 		DateTime? createTime,
 		DateTime? updateTime,
 	}) : super(
@@ -2646,6 +2653,7 @@ class ReportBaseDTO extends BaseDTO{
 			reportUserName: map['ReportUserName'],
 			reportPreviewList: map['ReportPreviewList'] != null ? (map['ReportPreviewList'] as List).map((e)=>ReportPreviewDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			referralRecordCode: map['ReferralRecordCode'],
+			reportType: ReportTypeEnum.values.firstWhere((e) => e.index == map['ReportType']),
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
 			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
 		);
@@ -2682,6 +2690,7 @@ class ReportBaseDTO extends BaseDTO{
 			map['ReportPreviewList'] = reportPreviewList;
 		if(referralRecordCode != null)
 			map['ReferralRecordCode'] = referralRecordCode;
+		map['ReportType'] = reportType.index;
 		return map;
 	}
 }
@@ -2712,6 +2721,7 @@ class ReportDTO extends ReportBaseDTO{
 		String? reportUserName,
 		List<ReportPreviewDTO >? reportPreviewList,
 		String? referralRecordCode,
+		ReportTypeEnum reportType = ReportTypeEnum.RemoteDiagnosis,
 		DateTime? createTime,
 		DateTime? updateTime,
 	}) : super(
@@ -2730,6 +2740,7 @@ class ReportDTO extends ReportBaseDTO{
 			reportUserName: reportUserName,
 			reportPreviewList: reportPreviewList,
 			referralRecordCode: referralRecordCode,
+			reportType: reportType,
 			createTime: createTime,
 			updateTime: updateTime,
 		);
@@ -2755,6 +2766,7 @@ class ReportDTO extends ReportBaseDTO{
 			reportUserName: map['ReportUserName'],
 			reportPreviewList: map['ReportPreviewList'] != null ? (map['ReportPreviewList'] as List).map((e)=>ReportPreviewDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			referralRecordCode: map['ReferralRecordCode'],
+			reportType: ReportTypeEnum.values.firstWhere((e) => e.index == map['ReportType']),
 			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
 			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
 		);
@@ -2773,18 +2785,18 @@ class ReportDTO extends ReportBaseDTO{
 	}
 }
 
-class FindExamReportsRequest extends TokenRequest{
+class FindReportsRequest extends TokenRequest{
 	String? recordCode;
 
-	FindExamReportsRequest({
+	FindReportsRequest({
 		this.recordCode,
 		String? token,
 	}) : super(
 			token: token,
 		);
 
-	factory FindExamReportsRequest.fromJson(Map<String, dynamic> map) {
-		return FindExamReportsRequest( 
+	factory FindReportsRequest.fromJson(Map<String, dynamic> map) {
+		return FindReportsRequest( 
 			recordCode: map['RecordCode'],
 			token: map['Token'],
 		);
@@ -2798,7 +2810,7 @@ class FindExamReportsRequest extends TokenRequest{
 	}
 }
 
-class QueryReferralExamReportRequest extends FindExamReportsRequest{
+class QueryReferralExamReportRequest extends FindReportsRequest{
 	String? referralRecordCode;
 
 	QueryReferralExamReportRequest({

+ 7 - 1
lib/services/report.dart

@@ -45,12 +45,18 @@ class ReportService extends JsonRpcClientBase {
 		return result;
 	}
 
-	Future<List<ReportDTO>> findExamReportsAsync(FindExamReportsRequest request) async {
+	Future<List<ReportDTO>> findExamReportsAsync(FindReportsRequest request) async {
 		var rpcRst = await call("FindExamReportsAsync", request);
 		var result = (rpcRst as List).map((e)=>ReportDTO.fromJson(e as Map<String, dynamic>)).toList();
 		return result;
 	}
 
+	Future<List<ReportDTO>> findReportsAsync(FindReportsRequest request) async {
+		var rpcRst = await call("FindReportsAsync", request);
+		var result = (rpcRst as List).map((e)=>ReportDTO.fromJson(e as Map<String, dynamic>)).toList();
+		return result;
+	}
+
 	Future<List<ReportDTO>> findPatientReportsAsync(FindPatientReportsRequest request) async {
 		var rpcRst = await call("FindPatientReportsAsync", request);
 		var result = (rpcRst as List).map((e)=>ReportDTO.fromJson(e as Map<String, dynamic>)).toList();

+ 0 - 5
lib/services/report.m.dart

@@ -325,11 +325,6 @@ class FindShareContentRequest {
 	}
 }
 
-enum ReportTypeEnum {
-	RemoteDiagnosis,
-	LiveConsultation,
-}
-
 class AddReportRequest extends TokenRequest{
 	ReportTypeEnum reportType;
 	String? recordCode;