123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- using Newtonsoft.Json;
- using System;
- using System.IO;
- using System.Text;
- using Vinno.IUS.Common.Configuration;
- using Vinno.IUS.Common.Log;
- using Vinno.vCloud.Protocol.Infrastructures;
- using WingInterfaceLibrary.DTO.Comment;
- using WingInterfaceLibrary.DTO.Measure;
- using WingInterfaceLibrary.Interface;
- namespace Vinno.vCloud.Common.FIS.Remedicals
- {
- static class vCloudScanData2Serializer
- {
- /// <summary>
- /// Serialize scan data content to a file.
- /// </summary>
- /// <param name="data">the scan data.</param>
- /// <param name="filePath">The file path to store the content.</param>
- public static void Serialize(this vCloudScanDataV2 data, string filePath)
- {
- var stringBuilder = new StringBuilder();
- stringBuilder.AppendLine("[ScanData]");
- //Id
- stringBuilder.AppendLine($"Id = {data.Id}");
- if (!string.IsNullOrEmpty(data.ExamRecordId))
- {
- stringBuilder.AppendLine($"ExamRecordId = {data.ExamRecordId}");
- }
- //examId
- stringBuilder.AppendLine($"ExamId = {data.ExamId}");
- //workOrderId
- stringBuilder.AppendLine($"WorkOrderId = {data.WorkOrderId}");
- //DataType
- stringBuilder.AppendLine($"DataType = {data.DataType}");
- //Description
- stringBuilder.AppendLine($"Description = {data.Description}");
- //Application
- stringBuilder.AppendLine($"Description = {data.Application}");
- //ApplicationCategory
- stringBuilder.AppendLine($"Description = {data.ApplicationCategory}");
- //FilePath
- stringBuilder.AppendLine($"VidFilePath = {data.VidFilePath}");
- //Status
- stringBuilder.AppendLine($"Status = {data.Status}");
- //PatientInfo
- var patientInfo = data.PatientInfo;
- if (patientInfo != null)
- {
- var patientInfoString = JsonConvert.SerializeObject(data.PatientInfo);
- stringBuilder.AppendLine($"PatientInfo = {patientInfoString}");
- }
- var measuredResults = data.MeasuredResults;
- if (measuredResults != null)
- {
- var measuredResultsString = JsonConvert.SerializeObject(data.MeasuredResults);
- stringBuilder.AppendLine($"MeasuredResults = {measuredResultsString}");
- }
- var commentResults = data.CommentResults;
- if (commentResults != null)
- {
- var commentResultsString = JsonConvert.SerializeObject(data.CommentResults);
- stringBuilder.AppendLine($"CommonResults = {commentResultsString}");
- }
- File.WriteAllText(filePath, stringBuilder.ToString());
- }
- /// <summary>
- /// Deserialize a scan data from a file.
- /// </summary>
- /// <param name="leaf">The leaf to create the scan data.</param>
- /// <param name="scanDataFilePath"></param>
- /// <returns><see cref="vCloudScanData"/></returns>
- public static vCloudScanDataV2 Deserialize(IRemedicalService remedicalService, IStorageService storageService, string token, string scanDataFilePath)
- {
- if (File.Exists(scanDataFilePath))
- {
- try
- {
- var configContent = File.ReadAllText(scanDataFilePath);
- var configLoader = new ConfigLoader();
- var sections = configLoader.LoadConfig(configContent);
- var id = string.Empty;
- var examId = string.Empty;
- var examRecordId = string.Empty;
- var workOrderId = string.Empty;
- var filePath = string.Empty;
- var dataType = VidType.VinnoVidSingle;
- var description = string.Empty;
- var application = string.Empty;
- var applicationCategory = string.Empty;
- var status = UploadStatus.Idle;
- var patientInfo = new PatientScanInfo();
- MeasuredResultsDTO measuredResults = null;
- ScanImageDTO commentResults = null;
- foreach (var section in sections)
- {
- switch (section.Name)
- {
- case "ScanData":
- {
- foreach (var item in section.Items)
- {
- switch (item.Key)
- {
- case "Id":
- id = item.Value;
- break;
- case "ExamId":
- examId = item.Value;
- break;
- case "WorkOrderId":
- workOrderId = item.Value;
- break;
- case "DataType":
- Enum.TryParse(item.Value, out dataType);
- break;
- case "Description":
- description = item.Value;
- break;
- case "Application":
- application = item.Value;
- break;
- case "ApplicationCategory":
- applicationCategory = item.Value;
- break;
- case "Status":
- Enum.TryParse(item.Value, out status);
- break;
- case "ExamRecordId":
- examRecordId = item.Value;
- break;
- case "VidFilePath":
- filePath = item.Value;
- break;
- case "PatientInfo":
- patientInfo = JsonConvert.DeserializeObject<PatientScanInfo>(item.Value);
- break;
- case "MeasuredResults":
- measuredResults = JsonConvert.DeserializeObject<MeasuredResultsDTO>(item.Value);
- break;
- case "CommentResults":
- commentResults = JsonConvert.DeserializeObject<ScanImageDTO>(item.Value);
- break;
- }
- }
- }
- break;
- }
- }
- var record = new vCloudExamRecord(examRecordId, examId, workOrderId);
- var scanData = new vCloudScanDataV2(record, id, filePath, dataType, description, patientInfo, status, remedicalService, storageService, token, measuredResults, commentResults);
- return scanData;
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"Load scan data2 error: {ex}");
- }
- }
- return null;
- }
- }
- }
|