internal static StudyData ReadStudyData(WadoDataSetModel model) { var adaptee = new StudyData(); adaptee.AccessionNumber = model.AccessionNumber; //adaptee.AdditionalPatientHistory //adaptee.AdmittingDiagnosesDescription //adaptee.Age adaptee.Date = model.StudyDate; adaptee.Description = model.StudyDescription; //adaptee.Id adaptee.InstanceUID = model.StudyInstanceUID; adaptee.ModalitiesInStudy = new string[] { model.Modality }; //adaptee.NameOfDoctorsReading = //adaptee.NumberOfRelatedInstances = //adaptee.NumberOfRelatedSeries = adaptee.Patient = new PatientData(); adaptee.Patient.BirthDate = model.PatientBirthDate; //adaptee.Patient.Comments //adaptee.Patient.EthnicGroup adaptee.Patient.ID = model.PatientID; adaptee.Patient.Name = model.PatientName; adaptee.Patient.NumberOfRelatedInstances = model.NumberOfStudyRelatedInstances; adaptee.Patient.NumberOfRelatedSeries = model.NumberOfStudyRelatedSeries; //adaptee.Patient.NumberOfRelatedStudies adaptee.Patient.Sex = model.PatientSex; //adaptee.ReferringPhysiciansName //adaptee.Size = //adaptee.Weight = return(adaptee); }
internal static SeriesData ReadSeriesData(WadoDataSetModel model) { var adaptee = new SeriesData(); adaptee.CompleteMRTI = false; adaptee.Date = model.SeriesDate; adaptee.Description = model.SeriesDescription; adaptee.InstanceUID = model.SeriesInstanceUID; adaptee.Modality = model.Modality; adaptee.Number = model.SeriesNumber; adaptee.NumberOfRelatedInstances = model.NumberOfInstances; adaptee.Patient = new PatientData(); adaptee.Patient.BirthDate = model.PatientBirthDate; //adaptee.Patient.Comments //adaptee.Patient.EthnicGroup adaptee.Patient.ID = model.PatientID; adaptee.Patient.Name = model.PatientName; adaptee.Patient.NumberOfRelatedInstances = model.NumberOfStudyRelatedInstances; adaptee.Patient.NumberOfRelatedSeries = model.NumberOfStudyRelatedSeries; //adaptee.Patient.NumberOfRelatedStudies adaptee.SopInstanceUIDs = new List <string>() { model.SOPInstanceUID }; adaptee.StudyInstanceUID = model.StudyInstanceUID; return(adaptee); }
internal static string ToWadoRenderedRsQueryUrl(WadoDataSetModel model) { var url = new StringBuilder(); if (!string.IsNullOrEmpty(model.StudyInstanceUID)) { url.Append("studies/").Append(model.StudyInstanceUID).Append("/"); if (!string.IsNullOrEmpty(model.SeriesInstanceUID)) { url.Append("series/").Append(model.SeriesInstanceUID).Append("/"); if (!string.IsNullOrEmpty(model.SOPInstanceUID)) { url.Append("instances/").Append(model.SOPInstanceUID).Append("/"); } } } else { throw new ArgumentNullException(); } url.Append("Rendered"); return(url.ToString()); }
private static string BuildQueryParams(WadoDataSetModel model, List <string> execluded) { string query = "?"; foreach (var propertyInfo in model.GetType().GetProperties()) { if (null != execluded) { if (execluded.Exists(x => (x == propertyInfo.Name))) { continue; } } var value = propertyInfo.GetValue(model) as string; if (string.IsNullOrEmpty(value)) { continue; } query += propertyInfo.Name + "=" + value + "&"; } query = query.TrimEnd('&').TrimEnd('?'); return(query); }
internal static string ToWadoRsQueryUrl(WadoDataSetModel model) { if (string.IsNullOrEmpty(model.StudyInstanceUID) || string.IsNullOrEmpty(model.SeriesInstanceUID) || string.IsNullOrEmpty(model.SOPInstanceUID)) { throw new ArgumentNullException("StudyInstanceUID, SeriesInstanceUID or SOPInstanceUID"); } string url = string.Format("studies/{0}/series/{1}/instances/{2}/", model.StudyInstanceUID, model.SeriesInstanceUID, model.SOPInstanceUID); return(url); }
internal static WadoDataSetModel ReadQueryOptions(QueryOptions query) { var model = new WadoDataSetModel(); if (null != query) { if (null != query.PatientsOptions) { model.PatientBirthDate = query.PatientsOptions.BirthDate; //query.PatientsOptions.Comments; //query.PatientsOptions.EthnicGroup; model.PatientID = query.PatientsOptions.PatientID; model.PatientName = query.PatientsOptions.PatientName; model.PatientSex = query.PatientsOptions.Sex; } if (null != query.StudiesOptions) { model.AccessionNumber = query.StudiesOptions.AccessionNumber; if (null != query.StudiesOptions.ModalitiesInStudy && query.StudiesOptions.ModalitiesInStudy.Length > 0) { model.Modality = query.StudiesOptions.ModalitiesInStudy[0]; } //query.StudiesOptions.ReferDoctorName //query.StudiesOptions.StudyDateEnd; model.StudyDate = query.StudiesOptions.StudyDateStart; model.StudyInstanceUID = query.StudiesOptions.StudyInstanceUID; //query.StudiesOptions.StudyTimeEnd //query.StudiesOptions.StudyTimeStart; } if (null != query.SeriesOptions) { if (string.IsNullOrEmpty(model.Modality)) { model.Modality = query.SeriesOptions.Modality; } //query.SeriesOptions.SeriesDateEnd model.SeriesDate = query.SeriesOptions.SeriesDateStart; model.SeriesDescription = query.SeriesOptions.SeriesDescription; model.SeriesInstanceUID = query.SeriesOptions.SeriesInstanceUID; model.SeriesNumber = query.SeriesOptions.SeriesNumber; } if (null != query.InstancesOptions) { model.InstanceNumber = query.InstancesOptions.InstanceNumber; model.SOPInstanceUID = query.InstancesOptions.SOPInstanceUID; } } return(model); }
internal static WadoDataSetModel FromProperties(Dictionary <string, string> prp) { var model = new WadoDataSetModel(); foreach (var propertyInfo in model.GetType().GetProperties()) { if (prp.ContainsKey(propertyInfo.Name)) { propertyInfo.SetValue(model, FormatProperty(propertyInfo.Name, prp)); } } return(model); }
internal static PatientData ReadPatientData(WadoDataSetModel model) { var adaptee = new PatientData(); adaptee.BirthDate = model.PatientBirthDate; adaptee.Comments = string.Empty; adaptee.EthnicGroup = string.Empty; adaptee.ID = model.PatientID; adaptee.Name = model.PatientName; adaptee.NumberOfRelatedInstances = model.NumberOfStudyRelatedInstances; adaptee.NumberOfRelatedSeries = model.NumberOfStudyRelatedSeries; adaptee.NumberOfRelatedStudies = string.Empty; adaptee.Sex = model.PatientSex; return(adaptee); }
internal static InstanceData ReadInstanceData(WadoDataSetModel model) { var adaptee = new InstanceData(); //adaptee.DicomJSON //adaptee.ImageURL adaptee.InstanceNumber = model.InstanceNumber; //adaptee.MRTIImageInfo adaptee.NumberOfFrames = (string.IsNullOrEmpty(model.NumberOfFrames)) ? 0 : int.Parse(model.NumberOfFrames); //PageInfo PagesInfo adaptee.PatientID = model.PatientID; adaptee.SeriesInstanceUID = model.SeriesInstanceUID; adaptee.SOPClassUID = model.SOPClassUID; adaptee.SOPInstanceUID = model.SOPInstanceUID; adaptee.StationName = model.StationName; adaptee.StudyInstanceUID = model.StudyInstanceUID; adaptee.TransferSyntax = model.TransferSyntaxUID; return(adaptee); }
internal async Task <Stream> RetrieveDatasetRendered(WadoDataSetModel query, Size?size) { var stm = await RestClient.queryRenderedDicomFile(UrlBuilder.Combine(ServiceConfig.WadoRsServiceUrl, WadoDataSetConverter.ToWadoRenderedRsQueryUrl(query)), null, size); return(stm); }
internal async Task <Stream> RetrieveDataset(WadoDataSetModel query) { var stm = await RestClient.queryDicomStream(UrlBuilder.Combine(ServiceConfig.WadoRsServiceUrl, WadoDataSetConverter.ToWadoRsQueryUrl(query))); return(stm); }
internal async Task <List <WadoDataSetModel> > InstanceLevel(WadoDataSetModel query) { var stm = await RestClient.queryJson(UrlBuilder.Combine(ServiceConfig.QidoRsServiceUrl, WadoDataSetConverter.ToQidoQueryUrl(query, "instance"))); return(WadoDataSetModelFactory.ReadJsonObjects(stm)); }
internal static string ToQidoQueryUrl(WadoDataSetModel model, string queryRetrieveLevel) { var url = string.Empty; if (string.IsNullOrEmpty(queryRetrieveLevel)) { if (!string.IsNullOrEmpty(model.StudyInstanceUID)) { if (!string.IsNullOrEmpty(model.SeriesInstanceUID)) { queryRetrieveLevel = "instance"; } else { queryRetrieveLevel = "series"; } } else { queryRetrieveLevel = "study"; } } switch (queryRetrieveLevel.ToLower()) { case "patient": //this is not a standard qido-rs query //throw new Exception("Patient level query is not a standard qido-rs query"); { url = "patients" + BuildQueryParams(model, null); } break; case "study": { url = "studies" + BuildQueryParams(model, null); } break; case "series": { if (!string.IsNullOrEmpty(model.StudyInstanceUID)) { var execludeList = new List <string>(); execludeList.Add("StudyInstanceUID"); url = string.Format("studies/{0}/series", model.StudyInstanceUID) + BuildQueryParams(model, execludeList); } else { Debug.WriteLine("Warning: building query string for a relational series query (optional for qido services)"); url = "series" + BuildQueryParams(model, null); //throw new Exception("Series level query requires study instance uid to be present"); } } break; case "instance": { var execludeList = new List <string>(); execludeList.Add("StudyInstanceUID"); execludeList.Add("SeriesInstanceUID"); url = string.Format("studies/{0}/series/{1}/instances", model.StudyInstanceUID, model.SeriesInstanceUID) + BuildQueryParams(model, execludeList); } break; default: { throw new ArgumentException(); } } return(url); }