import 'dart:core';

import 'package:fis_jsonrpc/client_base.dart';
import 'package:fis_common/json_convert.dart';

import 'vitalPatientExtension.m.dart';

import 'device.m.dart';


class VitalPatientExtensionService extends JsonRpcClientBase {
	VitalPatientExtensionService(
		String host, {
		String serviceName = "IVitalPatientExtensionService",
		Map<String, String>? headers,
		int? timeout,
	}) : super(
						host,
						serviceName,
						headers: headers,
						timeout: timeout,
				) {
		/// 注册响应实体反序列化处理器
		FJsonConvert.setDecoder((map) => PatientExtensionDTO.fromJson(map));
		FJsonConvert.setDecoder((map) => PageCollection<PatientExtensionDTO>.fromJson(map));
	}

	Future<String> createPatientExtensionAsync(CreatePatientExtensionRequest request) async {
		var rpcRst = await call("CreatePatientExtensionAsync", request);
		return rpcRst;
	}

	Future<PatientExtensionDTO> getPatientExtensionDetailAsync(GetPatientExtensionRequest request) async {
		var rpcRst = await call("GetPatientExtensionDetailAsync", request);
		var result = PatientExtensionDTO.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

	Future<PatientExtensionDTO> getPatientExtensionDetailByCodeAndKeyAsync(GetPatientExtensionByCodeAndKeyRequest request) async {
		var rpcRst = await call("GetPatientExtensionDetailByCodeAndKeyAsync", request);
		var result = PatientExtensionDTO.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

	Future<PageCollection<PatientExtensionDTO>> getPatientExtensionPageAsync(PatientExtensionPageRequest request) async {
		var rpcRst = await call("GetPatientExtensionPageAsync", request);
		var result = PageCollection<PatientExtensionDTO>.fromJson(rpcRst as Map<String, dynamic>);
		return result;
	}

	Future<bool> removePatientExtensionAsync(RemovePatientExtensionRequest request) async {
		var rpcRst = await call("RemovePatientExtensionAsync", request);
		return rpcRst;
	}

	Future<List<PatientExtensionDTO>> getPatientExtensionListAsync(GetPatientExtensionListRequest request) async {
		var rpcRst = await call("GetPatientExtensionListAsync", request);
		var result = (rpcRst as List).map((e)=>PatientExtensionDTO.fromJson(e as Map<String, dynamic>)).toList();
		return result;
	}

	Future<bool> updatePatientExtensionAsync(UpdatePatientExtensionRequest request) async {
		var rpcRst = await call("UpdatePatientExtensionAsync", request);
		return rpcRst;
	}

}