public async Task <string> UpdateHighScore(StudyItem document) { // Set header authorization client.DefaultRequestHeaders.Accept.Clear(); //client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "NWEzOTVkNDktZmJlMy00ZDdkLWE5OTktMjlhMTQ2MzkzMmYxLWJsdWVtaXg6NjFlYTc2M2Y0YzIzNDc0YjYzMjgyNTlkZjI0ZmY3NGU2YWE4MmZmMTU0OTFhZWQ4M2U5ZGE5YWI5OWEzMjU4NQ=="); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header //string should be serialized of StudyItem string payload = JsonConvert.SerializeObject(document); HttpContent content = new StringContent(payload, Encoding.UTF8, "application/json"); string uri = "https://5a395d49-fbe3-4d7d-a999-29a1463932f1-bluemix.cloudant.com/mydb/" + document._id.ToString(); // Call asynchronous network methods in a try/catch block to handle exceptions. try { HttpResponseMessage response = await client.PutAsync(uri, content); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); return(responseBody); } catch (HttpRequestException e) { Debug.Log("\nException Caught!"); Debug.Log("Message : " + e.Message); return(("Message : " + e.Message).ToString()); } }
public static List <StudyItem> GetSweeps(List <StudyItem> model, SearchResponse allsweeps, string study, string agency) { // move foreach (var sweep in allsweeps.Results) { StudyItem item = new StudyItem(); item.AgencyId = sweep.AgencyId; item.DisplayLabel = sweep.DisplayLabel; item.Identifier = sweep.Identifier; item.ReferenceItem = study; if (agency == null) { model.Add(item); } else { if (sweep.AgencyId == agency) { model.Add(item); } } } model = model.OrderBy(r => r.ReferenceItem).ToList(); return(model); }
public static List <StudyItem> BuildSweepsNodes(List <StudyItem> model, SearchResponse allsweeps, string study, string agency, List <TreeViewNode> nodes, string parent) { int i = 1; bool found = false; foreach (var sweep in allsweeps.Results) { StudyItem item = new StudyItem(); item.AgencyId = sweep.AgencyId; item.DisplayLabel = sweep.DisplayLabel; item.Identifier = sweep.Identifier; item.ReferenceItem = study; if (sweep.AgencyId == agency) { State cstate = new State(); List <string> search = new List <string>() { item.AgencyId + "," + item.Identifier.ToString() + "," + item.DisplayLabel }; //if (selecteditems != null) { found = search.Any(s => selecteditems.Contains(s)); } else { found = false; } cstate.selected = found; nodes.Add(new TreeViewNode { id = parent + " " + item.Identifier.ToString(), parent = parent.ToString(), text = item.DisplayLabel, state = cstate }); } i++; } model = model.OrderBy(r => r.ReferenceItem).ToList(); return(model); }
private void InitFile() { Util.DeleteChildren(parent); string path = ""; #if UNITY_EDITOR path = Application.streamingAssetsPath + "/Study"; #else path = Application.persistentDataPath + "/Study"; #endif path = Application.streamingAssetsPath + "/Study"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } DirectoryInfo direction = new DirectoryInfo(path); FileInfo[] files = direction.GetFiles(".", SearchOption.AllDirectories); index = 1; for (int i = 0; i < files.Length; i++) { if (files[i].Name.EndsWith(".txt") /* || files[i].Name.EndsWith(".pdf") || files[i].Name.EndsWith(".word")*/) { Debug.Log(files[i].Name); StudyInfo info = new StudyInfo(); info.name = files[i].Name; info.url = files[i].FullName; info.type = FileType.TXT; StudyItem item = Instantiate(itemPrefab); item.SetContent(info); item.transform.SetParent(parent, false); } } }
public ActionResult Add(StudyItem entity) { entity.RegTime = DateTime.Now; entity.ModfiedTime = DateTime.Now; entity.DelFlag = true; StudyItemService.Add(entity); return(Json(new { status = 1, errorMsg = "操作成功!!" })); }
/// <summary> /// Activate the tool action. /// </summary> /// <remarks> /// This function detects secondary monitor if availible then open the study in separate window and show it in the secondary monitor /// </remarks> public void Activate() { //Get Current Selected Study StudyItem item = this.Context.SelectedStudy; if (item != null) { string[] studyInstanceUids = { "" + item.StudyInstanceUID + "" }; //Create an OpenStudyArgs to be used later to open the study //Note that I used WindowBehaviour.Separate to open the study in a separate Form OpenStudyArgs args = new OpenStudyArgs(studyInstanceUids, item.Server, item.StudyLoaderName, WindowBehaviour.Separate); //Open the selected study OpenStudyHelper.OpenStudies(args); //Move it to secondary screen if only there are more than one screen if (System.Windows.Forms.Screen.AllScreens.Length > 1) { //Get All System Screens System.Windows.Forms.Screen[] Screens = System.Windows.Forms.Screen.AllScreens; //Create a variable to hold the secondary screen variable and assign it to null System.Windows.Forms.Screen SecScreenVar; SecScreenVar = null; //assign the SecScreenVar to the secondary screen foreach (System.Windows.Forms.Screen SecScreen in Screens) { //if its the secondary assign it if (SecScreen.Primary == false) { SecScreenVar = SecScreen; } } //If a secondary screen found if (SecScreenVar != null) { //Get the newly opened study window Form currentForm = Form.ActiveForm; //Set its start position to manual currentForm.StartPosition = FormStartPosition.Manual; //Set its location to the secondary screen currentForm.Location = SecScreenVar.WorkingArea.Location; //Set its size to the secondary screen size currentForm.Size = new Size(SecScreenVar.WorkingArea.Width, SecScreenVar.WorkingArea.Height); //Reshow it in its new location currentForm.Hide(); currentForm.Show(); } } } }
private void Update() { if (lastItem != selectItem) { foreBg.SetActive(false); studyDetail.SetContent(selectItem.info); lastItem = selectItem; } }
protected override DragDropOption PerformDropForeignItems(IList <IGalleryItem> droppingItems, IGalleryItem targetItem, DragDropOption actions, ModifierFlags modifiers) { StudyItem study = (StudyItem)targetItem; DragDropOption action = DragDropOption.None; foreach (IGalleryItem droppingItem in droppingItems) { if (droppingItem is SeriesItem) { SeriesItem series = (SeriesItem)droppingItem; if (modifiers == ModifierFlags.None) { if (!study.Series.Contains(series)) { study.Series.Add(series.Copy()); action = DragDropOption.Move; } } else if (modifiers == ModifierFlags.Shift) { study.Series.Add(series.Copy()); action = DragDropOption.Copy; } } else if (droppingItem is ImageItem) { ImageItem image = (ImageItem)droppingItem; if (modifiers == ModifierFlags.None) { SeriesNode seriesNode = (SeriesNode)GetNodeAncestor(image.Node, 1); StudyNode studyNode = (StudyNode)GetNodeAncestor(seriesNode, 1); if (study.Node != studyNode) { SeriesItem series = new SeriesItem(seriesNode.Copy(false)); series.Images.Add(image.Copy()); series.UpdateIcon(); study.Series.Add(series); action = DragDropOption.Move; } } else if (modifiers == ModifierFlags.Shift) { SeriesNode seriesNode = (SeriesNode)GetNodeAncestor(image.Node, 1); SeriesItem series = new SeriesItem(seriesNode.Copy(false)); series.Images.Add(image.Copy()); series.UpdateIcon(); study.Series.Add(series); action = DragDropOption.Copy; } } } return(action); }
private static StudyItem ConvertToStudyItem(StudyRootStudyIdentifier study) { study.ResolveServer(true); var item = new StudyItem(study); if (String.IsNullOrEmpty(item.InstanceAvailability)) { item.InstanceAvailability = "ONLINE"; } return(item); }
private StudyItem ConvertToStudyItem(StudyRootStudyIdentifier study) { string studyLoaderName; ApplicationEntity applicationEntity; ServerPartition partiton = ServerPartitionMonitor.Instance.GetPartition(study.RetrieveAeTitle); if (partiton != null) { studyLoaderName = WebViewerServices.Default.StudyLoaderName; string host = WebViewerServices.Default.ArchiveServerHostname; int port = WebViewerServices.Default.ArchiveServerPort; int headerPort = WebViewerServices.Default.ArchiveServerHeaderPort; int wadoPort = WebViewerServices.Default.ArchiveServerWADOPort; applicationEntity = new ApplicationEntity() { AETitle = study.RetrieveAeTitle, ScpParameters = new ScpParameters(host, port), StreamingParameters = new StreamingParameters(headerPort, wadoPort) }; } else { Device theDevice = FindServer(study.RetrieveAeTitle); if (theDevice != null) { // TODO (Marmot) - Need to get this to work with changes in marmot applicationEntity = new ApplicationEntity() { ScpParameters = new ScpParameters(theDevice.IpAddress, theDevice.Port), AETitle = theDevice.AeTitle }; } else // (node == null) { Platform.Log(LogLevel.Warn, String.Format("Unable to find server information '{0}' in order to load study '{1}'", study.RetrieveAeTitle, study.StudyInstanceUid)); return(null); } } var item = new StudyItem(study, ServiceNodeExtensions.ToServiceNode(applicationEntity)); if (String.IsNullOrEmpty(item.InstanceAvailability)) { item.InstanceAvailability = "ONLINE"; } return(item); }
public ActionResult Add(int id = 0, string content = "") { StudyItem model = new StudyItem(); model.RegTime = DateTime.Now; model.ModfiedTime = DateTime.Now; model.StudyOnlineID = id; model.DelFlag = true; model.Context = content; model.UserInfoID = 1; StudyItemService.Add(model); return(Json(new { status = 1, msg = "成功" })); }
protected override DragDropOption CheckDropForeignItems(IList <IGalleryItem> droppingItems, IGalleryItem targetItem, DragDropOption actions, ModifierFlags modifiers) { StudyItem study = (StudyItem)targetItem; bool allowed = true; foreach (IGalleryItem droppingItem in droppingItems) { if (droppingItem is SeriesItem) { SeriesItem series = (SeriesItem)droppingItem; if (modifiers == ModifierFlags.None) { allowed &= !(study.Series.Contains(series)); // disallow moves where the item is already in the target tree } else if (modifiers == ModifierFlags.Shift) { allowed &= true; } } else if (droppingItem is ImageItem) { ImageItem image = (ImageItem)droppingItem; if (modifiers == ModifierFlags.None) { allowed &= (study.Node != GetNodeAncestor(image.Node, 2)); // disallow moves where the item is already in the target tree } else if (modifiers == ModifierFlags.Shift) { allowed &= true; } } else { allowed &= false; } } if (allowed) { if (modifiers == ModifierFlags.None) { return(DragDropOption.Move); } else if (modifiers == ModifierFlags.Shift) { return(DragDropOption.Copy); } } return(DragDropOption.None); }
internal RenameStudyComponent(StudyItem studyItem) { _original = new StudyData(); _original.AccessionNumber = studyItem.AccessionNumber; _original.PatientsName = studyItem.PatientsName; _original.PatientId = studyItem.PatientId; _original.StudyDescription = studyItem.StudyDescription; _original.PatientsBirthDateRaw = studyItem.PatientsBirthDate; _original.StudyDateRaw = studyItem.StudyDate; _renamed = _original.Clone(); _validator = new DicomAnonymizer.ValidationStrategy(); }
public override StudyItemList Query(QueryParameters queryParams, object targetServer) { ApplicationEntity selectedServer = (ApplicationEntity)targetServer; StudyItemList list = new StudyItemList(); foreach (var key in MINTApi.GetStudies(selectedServer.Host)) { var item = new StudyItem(key.StudyUid, key, MINTApi.LoaderName); MINTApi.FillStudyItem(item, key); list.Add(item); } return(list); }
/// <summary> /// Queries local datastore for studies based on specified search function. /// </summary> private void QueryStudies(string query, Converter <string, KeyValuePair <string, double>[]> searchFunc) { // if there is a previous task that may still be running, disconnect it so we effectively abandon it if (_queryStudiesTask != null) { _queryStudiesTask.ProgressUpdated -= OnQueryStudiesProgressUpdate; } // clear existing items _searchResults.Items.Clear(); // create new task to query similar studies asynchronously so as not to block UI _queryStudiesTask = new BackgroundTask( delegate(IBackgroundTaskContext ctx) { KeyValuePair <string, double>[] similarStudyUids = searchFunc(query); foreach (KeyValuePair <string, double> kvp in similarStudyUids) { string studyUid = kvp.Key; double score = kvp.Value; QueryParameters queryParams = new QueryParameters(); queryParams.Add("PatientsName", ""); queryParams.Add("PatientId", ""); queryParams.Add("AccessionNumber", ""); queryParams.Add("StudyDescription", ""); queryParams.Add("ModalitiesInStudy", ""); queryParams.Add("StudyDate", ""); queryParams.Add("StudyInstanceUid", studyUid); // currently only the local dicom store is supported StudyItemList similarStudyItems = ImageViewerComponent.FindStudy(queryParams, null, "DICOM_LOCAL"); // should only ever be one result at most // if zero results, it means the study exists in the tag database but not in the local dicom store StudyItem studyItem = CollectionUtils.FirstElement(similarStudyItems); if (studyItem != null) { StudyTableEntry entry = new StudyTableEntry(studyItem, MakeTagsString(_database.GetTagsForStudy(studyUid)), score); ctx.ReportProgress(new StudyQueryProgress(entry)); } } }, false); _queryStudiesTask.ProgressUpdated += OnQueryStudiesProgressUpdate; _queryStudiesTask.Run(); }
public void FullStudyItemFromXmlTest() { var item = new StudyItem("11111", null, ""); Stream xmlStrm = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(studySummaryXml)); MINTApi.FullStudyItemFromXml(item, xmlStrm); Assert.AreEqual("20030303", item.StudyDate); Assert.AreEqual("194001.000000", item.StudyTime); Assert.AreEqual("7570281", item.AccessionNumber); Assert.AreEqual(new PersonName("REF^PHYS^HERE"), item.ReferringPhysiciansName); Assert.AreEqual(new PersonName("NAME^HERE"), item.PatientsName); Assert.AreEqual("1122334455", item.PatientId); Assert.AreEqual("19920601", item.PatientsBirthDate); Assert.AreEqual("M", item.PatientsSex); Assert.AreEqual("7570281", item.StudyId); }
private static MINTApi.StudyKey MINTStudyKey(StudyItem studyItem) { MINTApi.StudyKey key = studyItem.Server as MINTApi.StudyKey; if (key == null && Properties.Settings.Default.EnableXRef) { //we must be looking at studies listed in another server - see if the study is available in //the MINT service and cache it if it is. if (!_cachedKeys.TryGetValue(studyItem.StudyInstanceUid, out key)) { key = MINTApi.GetStudyKey(Properties.Settings.Default.MINTHostname, studyItem.StudyInstanceUid); if (key != null) { _cachedKeys[studyItem.StudyInstanceUid] = key; } } } return(key); }
public static List <StudyItem> BuildSweepsTree(List <StudyItem> model, SearchResponse allsweeps, string study, string agency, List <TreeViewNode> nodes, string parent) { // move int i = 1; foreach (var sweep in allsweeps.Results) { StudyItem item = new StudyItem(); item.AgencyId = sweep.AgencyId; item.DisplayLabel = sweep.DisplayLabel; item.Identifier = sweep.Identifier; item.ReferenceItem = study; if (sweep.AgencyId == agency) { model.Add(item); nodes.Add(new TreeViewNode { id = parent + " " + item.Identifier.ToString(), parent = parent.ToString(), text = item.DisplayLabel }); } i++; } model = model.OrderBy(r => r.ReferenceItem).ToList(); return(model); }
public override StudyItemList Query(QueryParameters queryParams, IApplicationEntity targetServer) { Platform.CheckForNullReference(queryParams, "queryParams"); Platform.CheckForNullReference(targetServer, "targetServer"); var selectedServer = targetServer.ToServiceNode(); //.NET strings are unicode, therefore, so is all the query data. const string utf8 = "ISO_IR 192"; var requestCollection = new DicomAttributeCollection { SpecificCharacterSet = utf8 }; requestCollection[DicomTags.SpecificCharacterSet].SetStringValue(utf8); requestCollection[DicomTags.QueryRetrieveLevel].SetStringValue("STUDY"); requestCollection[DicomTags.StudyInstanceUid].SetStringValue(""); requestCollection[DicomTags.PatientId].SetStringValue(queryParams["PatientId"]); requestCollection[DicomTags.AccessionNumber].SetStringValue(queryParams["AccessionNumber"]); requestCollection[DicomTags.PatientsName].SetStringValue(queryParams["PatientsName"]); requestCollection[DicomTags.ReferringPhysiciansName].SetStringValue(queryParams["ReferringPhysiciansName"]); requestCollection[DicomTags.StudyDate].SetStringValue(queryParams["StudyDate"]); requestCollection[DicomTags.StudyTime].SetStringValue(""); requestCollection[DicomTags.StudyDescription].SetStringValue(queryParams["StudyDescription"]); requestCollection[DicomTags.PatientsBirthDate].SetStringValue(""); requestCollection[DicomTags.ModalitiesInStudy].SetStringValue(queryParams["ModalitiesInStudy"]); requestCollection[DicomTags.NumberOfStudyRelatedInstances].SetStringValue(""); requestCollection[DicomTags.InstanceAvailability].SetEmptyValue(); // must not be included in request requestCollection[DicomTags.PatientSpeciesDescription].SetStringValue(GetString(queryParams, "PatientSpeciesDescription")); var codeValue = GetString(queryParams, "PatientSpeciesCodeSequenceCodeValue"); var codeMeaning = GetString(queryParams, "PatientSpeciesCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; requestCollection[DicomTags.PatientSpeciesCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } requestCollection[DicomTags.PatientBreedDescription].SetStringValue(GetString(queryParams, "PatientBreedDescription")); codeValue = GetString(queryParams, "PatientBreedCodeSequenceCodeValue"); codeMeaning = GetString(queryParams, "PatientBreedCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; requestCollection[DicomTags.PatientBreedCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } requestCollection[DicomTags.ResponsiblePerson].SetStringValue(GetString(queryParams, "ResponsiblePerson")); requestCollection[DicomTags.ResponsiblePersonRole].SetStringValue(""); requestCollection[DicomTags.ResponsibleOrganization].SetStringValue(GetString(queryParams,"ResponsibleOrganization")); IList<DicomAttributeCollection> results = Query(selectedServer, requestCollection); StudyItemList studyItemList = new StudyItemList(); foreach (DicomAttributeCollection result in results) { StudyItem item = new StudyItem(result[DicomTags.StudyInstanceUid].GetString(0, ""), selectedServer); //TODO: add DicomField attributes to the StudyItem class (implement typeconverter for PersonName class). item.PatientsBirthDate = result[DicomTags.PatientsBirthDate].GetString(0, ""); item.AccessionNumber = result[DicomTags.AccessionNumber].GetString(0, ""); item.StudyDescription = result[DicomTags.StudyDescription].GetString(0, ""); item.StudyDate = result[DicomTags.StudyDate].GetString(0, ""); item.StudyTime = result[DicomTags.StudyTime].GetString(0, ""); item.PatientId = result[DicomTags.PatientId].GetString(0, ""); item.PatientsName = new PersonName(result[DicomTags.PatientsName].GetString(0, "")); item.ReferringPhysiciansName = new PersonName(result[DicomTags.ReferringPhysiciansName].GetString(0, "")); item.ModalitiesInStudy = DicomStringHelper.GetStringArray(result[DicomTags.ModalitiesInStudy].ToString()); DicomAttribute attribute = result[DicomTags.NumberOfStudyRelatedInstances]; if (!attribute.IsEmpty && !attribute.IsNull) item.NumberOfStudyRelatedInstances = attribute.GetInt32(0, 0); item.SpecificCharacterSet = result.SpecificCharacterSet; item.InstanceAvailability = result[DicomTags.InstanceAvailability].GetString(0, ""); if (String.IsNullOrEmpty(item.InstanceAvailability)) item.InstanceAvailability = "ONLINE"; item.PatientSpeciesDescription = result[DicomTags.PatientSpeciesDescription].GetString(0, ""); var patientSpeciesCodeSequence = result[DicomTags.PatientSpeciesCodeSequence]; if (!patientSpeciesCodeSequence.IsNull && patientSpeciesCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientSpeciesCodeSequence].Values)[0]); item.PatientSpeciesCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientSpeciesCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientSpeciesCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.PatientBreedDescription = result[DicomTags.PatientBreedDescription].GetString(0, ""); var patientBreedCodeSequence = result[DicomTags.PatientBreedCodeSequence]; if (!patientBreedCodeSequence.IsNull && patientBreedCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientBreedCodeSequence].Values)[0]); item.PatientBreedCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientBreedCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientBreedCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.ResponsiblePerson = new PersonName(result[DicomTags.ResponsiblePerson].GetString(0, "")); item.ResponsiblePersonRole = result[DicomTags.ResponsiblePersonRole].GetString(0, ""); item.ResponsibleOrganization = result[DicomTags.ResponsibleOrganization].GetString(0, ""); studyItemList.Add(item); } AuditHelper.LogQueryIssued(selectedServer.AETitle, selectedServer.ScpParameters.HostName, EventSource.CurrentUser, EventResult.Success, SopClass.StudyRootQueryRetrieveInformationModelFindUid, requestCollection); return studyItemList; }
public StudyTableEntry(StudyItem studyItem, string tags, double similarityScore) { _studyItem = studyItem; _tags = tags; _similarityScore = similarityScore; }
private StudyItem ConvertToStudyItem(StudyRootStudyIdentifier study) { string studyLoaderName; ApplicationEntity applicationEntity; ServerPartition partiton = ServerPartitionMonitor.Instance.GetPartition(study.RetrieveAeTitle); if (partiton != null) { studyLoaderName = WebViewerServices.Default.StudyLoaderName; string host = WebViewerServices.Default.ArchiveServerHostname; int port = WebViewerServices.Default.ArchiveServerPort; int headerPort = WebViewerServices.Default.ArchiveServerHeaderPort; int wadoPort = WebViewerServices.Default.ArchiveServerWADOPort; applicationEntity = new ApplicationEntity() { AETitle = study.RetrieveAeTitle, ScpParameters = new ScpParameters(host, port), StreamingParameters = new StreamingParameters(headerPort, wadoPort) }; } else { Device theDevice = FindServer(study.RetrieveAeTitle); if (theDevice != null) { // TODO (Marmot) - Need to get this to work with changes in marmot applicationEntity = new ApplicationEntity() { ScpParameters = new ScpParameters(theDevice.IpAddress, theDevice.Port), AETitle = theDevice.AeTitle }; } else // (node == null) { Platform.Log(LogLevel.Warn, String.Format("Unable to find server information '{0}' in order to load study '{1}'", study.RetrieveAeTitle, study.StudyInstanceUid)); return null; } } var item = new StudyItem(study, ServiceNodeExtensions.ToServiceNode(applicationEntity)); if (String.IsNullOrEmpty(item.InstanceAvailability)) item.InstanceAvailability = "ONLINE"; return item; }
public override PriorStudyFinderResult FindPriorStudies() { _cancel = false; var priorsServerQueries = new List <IStudyRootQuery>(); foreach (ServerPartition partition in ServerPartitionMonitor.Instance) { using (IReadContext ctx = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { IDeviceEntityBroker broker = ctx.GetBroker <IDeviceEntityBroker>(); DeviceSelectCriteria criteria = new DeviceSelectCriteria(); criteria.DeviceTypeEnum.EqualTo(DeviceTypeEnum.PriorsServer); criteria.ServerPartitionKey.EqualTo(partition.Key); IList <Device> list = broker.Find(criteria); foreach (Device theDevice in list) { // Check the settings and log for debug purposes if (!theDevice.Enabled) { Platform.Log(LogLevel.Debug, "Prior Server '{0}' on partition '{1}' is disabled in the device setting", theDevice.AeTitle, partition.AeTitle); continue; } DicomStudyRootQuery remoteQuery = new DicomStudyRootQuery(partition.AeTitle, theDevice.AeTitle, theDevice.IpAddress, theDevice.Port); priorsServerQueries.Add(remoteQuery); } } } // Log the prior servers for debug purpose if (Platform.IsLogLevelEnabled(LogLevel.Debug) && priorsServerQueries.Count > 0) { StringBuilder log = new StringBuilder(); log.Append("Searching for priors on the following servers:"); StringBuilder serverList = new StringBuilder(); foreach (DicomStudyRootQuery server in priorsServerQueries) { if (serverList.Length > 0) { serverList.Append(","); } serverList.AppendFormat("{0}", server); } log.Append(serverList.ToString()); Platform.Log(LogLevel.Debug, log.ToString()); } StudyItemList results = new StudyItemList(); DefaultPatientReconciliationStrategy reconciliationStrategy = new DefaultPatientReconciliationStrategy(); List <string> patientIds = new List <string>(); foreach (Patient patient in Viewer.StudyTree.Patients) { if (_cancel) { break; } IPatientData reconciled = reconciliationStrategy.ReconcileSearchCriteria(patient); if (!patientIds.Contains(reconciled.PatientId)) { patientIds.Add(reconciled.PatientId); } } //Note: we don't catch the exception for this one because it's just querying the other //partitions, so if it fails we want an outright failure to occur. Besides, it should never happen //if the server is functioning correctly. using (StudyRootQueryBridge bridge = new StudyRootQueryBridge(Platform.GetService <IStudyRootQuery>())) { foreach (string patientId in patientIds) { StudyRootStudyIdentifier identifier = new StudyRootStudyIdentifier { PatientId = patientId }; IList <StudyRootStudyIdentifier> studies = bridge.StudyQuery(identifier); foreach (StudyRootStudyIdentifier study in studies) { if (_cancel) { break; } StudyItem studyItem = ConvertToStudyItem(study); if (studyItem != null) { results.Add(studyItem); } } } } bool complete = true; foreach (IStudyRootQuery query in priorsServerQueries) { foreach (string patientId in patientIds) { try { var identifier = new StudyRootStudyIdentifier { PatientId = patientId }; IList <StudyRootStudyIdentifier> list = query.StudyQuery(identifier); foreach (StudyRootStudyIdentifier i in list) { if (_cancel) { break; } StudyItem studyItem = ConvertToStudyItem(i); if (studyItem != null) { results.Add(studyItem); } } } catch (FaultException <DataValidationFault> ex) { complete = false; Platform.Log(LogLevel.Error, ex, "An error has occurred when searching for prior studies on server '{0}'", query.ToString()); } catch (FaultException <QueryFailedFault> ex) { complete = false; Platform.Log(LogLevel.Error, ex, "An error has occurred when searching for prior studies on server '{0}'", query.ToString()); } } } return(new PriorStudyFinderResult(results, complete)); }
public override StudyItemList Query(QueryParameters queryParams, IApplicationEntity server) { Platform.CheckForNullReference(queryParams, "queryParams"); //.NET strings are unicode, therefore, so is all the query data. const string utf8 = "ISO_IR 192"; var collection = new DicomAttributeCollection { SpecificCharacterSet = utf8 }; collection[DicomTags.SpecificCharacterSet].SetStringValue(utf8); collection[DicomTags.QueryRetrieveLevel].SetStringValue("STUDY"); collection[DicomTags.PatientId].SetStringValue(queryParams["PatientId"]); collection[DicomTags.AccessionNumber].SetStringValue(queryParams["AccessionNumber"]); collection[DicomTags.PatientsName].SetStringValue(queryParams["PatientsName"]); collection[DicomTags.ReferringPhysiciansName].SetStringValue(queryParams["ReferringPhysiciansName"]); collection[DicomTags.StudyDate].SetStringValue(queryParams["StudyDate"]); collection[DicomTags.StudyTime].SetStringValue(""); collection[DicomTags.StudyDescription].SetStringValue(queryParams["StudyDescription"]); collection[DicomTags.PatientsBirthDate].SetStringValue(""); collection[DicomTags.ModalitiesInStudy].SetStringValue(queryParams["ModalitiesInStudy"]); collection[DicomTags.StudyInstanceUid].SetStringValue(queryParams["StudyInstanceUid"]); collection[DicomTags.NumberOfStudyRelatedInstances].SetStringValue(""); collection[DicomTags.InstanceAvailability].SetEmptyValue(); // must not be included in request collection[DicomTags.PatientSpeciesDescription].SetStringValue(GetString(queryParams, "PatientSpeciesDescription")); var codeValue = GetString(queryParams, "PatientSpeciesCodeSequenceCodeValue"); var codeMeaning = GetString(queryParams, "PatientSpeciesCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; collection[DicomTags.PatientSpeciesCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } collection[DicomTags.PatientBreedDescription].SetStringValue(GetString(queryParams, "PatientBreedDescription")); codeValue = GetString(queryParams, "PatientBreedCodeSequenceCodeValue"); codeMeaning = GetString(queryParams, "PatientBreedCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; collection[DicomTags.PatientBreedCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } collection[DicomTags.ResponsiblePerson].SetStringValue(GetString(queryParams, "ResponsiblePerson")); collection[DicomTags.ResponsiblePersonRole].SetStringValue(""); collection[DicomTags.ResponsibleOrganization].SetStringValue(GetString(queryParams, "ResponsibleOrganization")); var localServer = ServerDirectory.GetLocalServer(); var studyItemList = new StudyItemList(); using (var context = new DataAccessContext()) { foreach (DicomAttributeCollection result in context.GetStudyStoreQuery().Query(collection)) { var item = new StudyItem(result[DicomTags.StudyInstanceUid].ToString(), localServer); item.SpecificCharacterSet = result.SpecificCharacterSet; item.PatientId = result[DicomTags.PatientId].ToString(); item.PatientsName = new PersonName(result[DicomTags.PatientsName].ToString()); item.ReferringPhysiciansName = new PersonName(result[DicomTags.ReferringPhysiciansName].GetString(0, "")); item.PatientsBirthDate = result[DicomTags.PatientsBirthDate].ToString(); item.StudyDate = result[DicomTags.StudyDate].ToString(); item.StudyTime = result[DicomTags.StudyTime].ToString(); item.StudyDescription = result[DicomTags.StudyDescription].ToString(); item.ModalitiesInStudy = DicomStringHelper.GetStringArray(result[DicomTags.ModalitiesInStudy].ToString()); item.AccessionNumber = result[DicomTags.AccessionNumber].ToString(); item.NumberOfStudyRelatedInstances = result[DicomTags.NumberOfStudyRelatedInstances].GetInt32(0, 0); item.InstanceAvailability = result[DicomTags.InstanceAvailability].GetString(0, ""); if (String.IsNullOrEmpty(item.InstanceAvailability)) { item.InstanceAvailability = "ONLINE"; } item.PatientSpeciesDescription = result[DicomTags.PatientSpeciesDescription].GetString(0, ""); var patientSpeciesCodeSequence = result[DicomTags.PatientSpeciesCodeSequence]; if (!patientSpeciesCodeSequence.IsNull && patientSpeciesCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientSpeciesCodeSequence].Values)[0]); item.PatientSpeciesCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientSpeciesCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientSpeciesCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.PatientBreedDescription = result[DicomTags.PatientBreedDescription].GetString(0, ""); var patientBreedCodeSequence = result[DicomTags.PatientBreedCodeSequence]; if (!patientBreedCodeSequence.IsNull && patientBreedCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientBreedCodeSequence].Values)[0]); item.PatientBreedCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientBreedCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientBreedCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.ResponsiblePerson = new PersonName(result[DicomTags.ResponsiblePerson].GetString(0, "")); item.ResponsiblePersonRole = result[DicomTags.ResponsiblePersonRole].GetString(0, ""); item.ResponsibleOrganization = result[DicomTags.ResponsibleOrganization].GetString(0, ""); studyItemList.Add(item); } } AuditHelper.LogQueryIssued(null, null, EventSource.CurrentUser, EventResult.Success, SopClass.StudyRootQueryRetrieveInformationModelFindUid, collection); return(studyItemList); }
public override StudyItemList Query(QueryParameters queryParams, IApplicationEntity server) { Platform.CheckForNullReference(queryParams, "queryParams"); //.NET strings are unicode, therefore, so is all the query data. const string utf8 = "ISO_IR 192"; var collection = new DicomAttributeCollection {SpecificCharacterSet = utf8}; collection[DicomTags.SpecificCharacterSet].SetStringValue(utf8); collection[DicomTags.QueryRetrieveLevel].SetStringValue("STUDY"); collection[DicomTags.PatientId].SetStringValue(queryParams["PatientId"]); collection[DicomTags.AccessionNumber].SetStringValue(queryParams["AccessionNumber"]); collection[DicomTags.PatientsName].SetStringValue(queryParams["PatientsName"]); collection[DicomTags.ReferringPhysiciansName].SetStringValue(queryParams["ReferringPhysiciansName"]); collection[DicomTags.StudyDate].SetStringValue(queryParams["StudyDate"]); collection[DicomTags.StudyTime].SetStringValue(""); collection[DicomTags.StudyDescription].SetStringValue(queryParams["StudyDescription"]); collection[DicomTags.PatientsBirthDate].SetStringValue(""); collection[DicomTags.ModalitiesInStudy].SetStringValue(queryParams["ModalitiesInStudy"]); collection[DicomTags.StudyInstanceUid].SetStringValue(queryParams["StudyInstanceUid"]); collection[DicomTags.NumberOfStudyRelatedInstances].SetStringValue(""); collection[DicomTags.InstanceAvailability].SetEmptyValue(); // must not be included in request collection[DicomTags.PatientSpeciesDescription].SetStringValue(GetString(queryParams, "PatientSpeciesDescription")); var codeValue = GetString(queryParams, "PatientSpeciesCodeSequenceCodeValue"); var codeMeaning = GetString(queryParams, "PatientSpeciesCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; collection[DicomTags.PatientSpeciesCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } collection[DicomTags.PatientBreedDescription].SetStringValue(GetString(queryParams, "PatientBreedDescription")); codeValue = GetString(queryParams, "PatientBreedCodeSequenceCodeValue"); codeMeaning = GetString(queryParams, "PatientBreedCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; collection[DicomTags.PatientBreedCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } collection[DicomTags.ResponsiblePerson].SetStringValue(GetString(queryParams, "ResponsiblePerson")); collection[DicomTags.ResponsiblePersonRole].SetStringValue(""); collection[DicomTags.ResponsibleOrganization].SetStringValue(GetString(queryParams, "ResponsibleOrganization")); var localServer = ServerDirectory.GetLocalServer(); var studyItemList = new StudyItemList(); using (var context = new DataAccessContext()) { foreach (DicomAttributeCollection result in context.GetStudyStoreQuery().Query(collection)) { var item = new StudyItem(result[DicomTags.StudyInstanceUid].ToString(), localServer); item.SpecificCharacterSet = result.SpecificCharacterSet; item.PatientId = result[DicomTags.PatientId].ToString(); item.PatientsName = new PersonName(result[DicomTags.PatientsName].ToString()); item.ReferringPhysiciansName = new PersonName(result[DicomTags.ReferringPhysiciansName].GetString(0, "")); item.PatientsBirthDate = result[DicomTags.PatientsBirthDate].ToString(); item.StudyDate = result[DicomTags.StudyDate].ToString(); item.StudyTime = result[DicomTags.StudyTime].ToString(); item.StudyDescription = result[DicomTags.StudyDescription].ToString(); item.ModalitiesInStudy = DicomStringHelper.GetStringArray(result[DicomTags.ModalitiesInStudy].ToString()); item.AccessionNumber = result[DicomTags.AccessionNumber].ToString(); item.NumberOfStudyRelatedInstances = result[DicomTags.NumberOfStudyRelatedInstances].GetInt32(0, 0); item.InstanceAvailability = result[DicomTags.InstanceAvailability].GetString(0, ""); if (String.IsNullOrEmpty(item.InstanceAvailability)) item.InstanceAvailability = "ONLINE"; item.PatientSpeciesDescription = result[DicomTags.PatientSpeciesDescription].GetString(0, ""); var patientSpeciesCodeSequence = result[DicomTags.PatientSpeciesCodeSequence]; if (!patientSpeciesCodeSequence.IsNull && patientSpeciesCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[]) result[DicomTags.PatientSpeciesCodeSequence].Values)[0]); item.PatientSpeciesCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientSpeciesCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientSpeciesCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.PatientBreedDescription = result[DicomTags.PatientBreedDescription].GetString(0, ""); var patientBreedCodeSequence = result[DicomTags.PatientBreedCodeSequence]; if (!patientBreedCodeSequence.IsNull && patientBreedCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientBreedCodeSequence].Values)[0]); item.PatientBreedCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientBreedCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientBreedCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.ResponsiblePerson = new PersonName(result[DicomTags.ResponsiblePerson].GetString(0, "")); item.ResponsiblePersonRole = result[DicomTags.ResponsiblePersonRole].GetString(0, ""); item.ResponsibleOrganization = result[DicomTags.ResponsibleOrganization].GetString(0, ""); studyItemList.Add(item); } } AuditHelper.LogQueryIssued(null, null, EventSource.CurrentUser, EventResult.Success, SopClass.StudyRootQueryRetrieveInformationModelFindUid, collection); return studyItemList; }
public string StudyItemGetter(StudyItem item) { PropertyInfo property = typeof(Student).GetProperty(item.ToString()); MethodInfo method = property.GetGetMethod(); return (string)method.Invoke(this, new object[] { }); }
public static void FullStudyItemFromXml(StudyItem item, Stream xmlStream) { var doc = ReadDocFromStream(xmlStream); foreach (XmlNode child in doc.ChildNodes) { if (child.Name == RootTag) { var studyMetaChildren = child.ChildNodes; if (studyMetaChildren == null) { continue; } foreach (XmlNode metaNode in studyMetaChildren) { if (metaNode.Name == "attributes") { var attributeNodes = metaNode.ChildNodes; if (attributeNodes == null) { continue; } foreach (XmlNode node in attributeNodes) { // The DICOM study instance UID, not the MINT UUID. var xmlNodeAttr = node.Attributes.GetNamedItem("tag"); if (string.IsNullOrEmpty(xmlNodeAttr.Value)) { continue; } var valueNode = node.Attributes.GetNamedItem("val"); string value = ""; if (valueNode != null) { value = valueNode.Value; } switch (xmlNodeAttr.Value) { case "00080020": item.StudyDate = value; break; case "00080030": item.StudyTime = value; break; case "00080050": item.AccessionNumber = value; break; case "00080090": item.ReferringPhysiciansName = new PersonName(value); break; case "00081030": item.StudyDescription = value; break; case "00100010": item.PatientsName = new PersonName(value); break; case "00100020": item.PatientId = value; break; case "00100030": item.PatientsBirthDate = value; break; case "00100040": item.PatientsSex = value; break; case "00200010": item.StudyId = value; break; default: break; } } } } } } }
public ActionResult Edit(StudyItem entity) { entity.ModfiedTime = DateTime.Now; StudyItemService.Update(entity); return(Json(new { status = 1, errorMsg = "操作成功!!" })); }
public void AssertSopRefs() { Context.DesktopWindow.ShowMessageBox(string.Format("Sop References Held: {0}", StudyItem.CountInstances()), "Study Filters", MessageBoxActions.Ok); }
public SingleStudyLoader(SynchronizationContext uiThreadContext, IImageViewer viewer, StudyItem studyItem) : this(uiThreadContext, viewer) { _studyItem = studyItem; }
private static StudyItem ConvertToStudyItem(StudyRootStudyIdentifier study) { study.ResolveServer(true); var item = new StudyItem(study); if (String.IsNullOrEmpty(item.InstanceAvailability)) item.InstanceAvailability = "ONLINE"; return item; }
public SingleStudyLoader(SynchronizationContext uiThreadContext, ImageViewerComponent viewer, StudyItem studyItem) : this(uiThreadContext, viewer) { _studyItem = studyItem; }
internal StudyLoadFailedEventArgs(StudyItem study, Exception error) { this.Error = error; this.Study = study; }
public override PriorStudyFinderResult FindPriorStudies() { _cancel = false; var results = new Dictionary <string, StudyItem>(); IPatientReconciliationStrategy reconciliationStrategy = new DefaultPatientReconciliationStrategy(); reconciliationStrategy.SetStudyTree(Viewer.StudyTree); var patientIds = new Dictionary <string, string>(); foreach (Patient patient in Viewer.StudyTree.Patients) { if (_cancel) { break; } IPatientData reconciled = reconciliationStrategy.ReconcileSearchCriteria(patient); patientIds[reconciled.PatientId] = reconciled.PatientId; } int failedCount = 0; int successCount = 0; foreach (var priorsServer in ServerDirectory.GetPriorsServers(true)) { if (_cancel) { break; } try { using (var bridge = new StudyRootQueryBridge(priorsServer.GetService <IStudyRootQuery>())) { foreach (string patientId in patientIds.Keys) { //#10790: don't search for priors if patient id is empty if (string.IsNullOrEmpty(patientId)) { continue; } var identifier = new StudyRootStudyIdentifier { PatientId = patientId }; IList <StudyRootStudyIdentifier> studies = bridge.StudyQuery(identifier); Platform.Log(LogLevel.Debug, "Found {0} prior studies on server '{1}'", studies.Count, priorsServer.Name); foreach (StudyRootStudyIdentifier study in studies) { if (_cancel) { break; } //Eliminate false positives right away. IPatientData reconciled = reconciliationStrategy.ReconcilePatientInformation(study); if (reconciled == null) { continue; } StudyItem studyItem = ConvertToStudyItem(study); if (studyItem == null || results.ContainsKey(studyItem.StudyInstanceUid)) { continue; } if (!results.ContainsKey(studyItem.StudyInstanceUid)) { results[studyItem.StudyInstanceUid] = studyItem; } } } } ++successCount; } catch (Exception e) { ++failedCount; Platform.Log(LogLevel.Error, e, "Failed to query server: {0}", priorsServer.Name); } } if (_cancel) { //Just pretend the query never happened. return(new PriorStudyFinderResult(new StudyItemList(), true)); } if (failedCount > 0) { PriorStudyLoaderExceptionPolicy.NotifyFailedQuery(); if (successCount == 0) { throw new Exception("The search for prior studies has failed."); } } else { //Even if success count is zero, we'll still consider it "successful". PriorStudyLoaderExceptionPolicy.NotifySuccessfulQuery(); } Platform.Log(LogLevel.Debug, "Found {0} prior studies in total.", results.Count); return(new PriorStudyFinderResult(new StudyItemList(results.Values), failedCount == 0)); }
public static void FillStudyItem(StudyItem item, StudyKey key) { HttpWebResponse rep = CallService(key.SummaryUri); FullStudyItemFromXml(item, rep.GetResponseStream()); }
public override StudyItemList Query(QueryParameters queryParams, IApplicationEntity targetServer) { Platform.CheckForNullReference(queryParams, "queryParams"); Platform.CheckForNullReference(targetServer, "targetServer"); var selectedServer = targetServer.ToServiceNode(); //.NET strings are unicode, therefore, so is all the query data. const string utf8 = "ISO_IR 192"; var requestCollection = new DicomAttributeCollection { SpecificCharacterSet = utf8 }; requestCollection[DicomTags.SpecificCharacterSet].SetStringValue(utf8); requestCollection[DicomTags.QueryRetrieveLevel].SetStringValue("STUDY"); requestCollection[DicomTags.StudyInstanceUid].SetStringValue(""); requestCollection[DicomTags.PatientId].SetStringValue(queryParams["PatientId"]); requestCollection[DicomTags.AccessionNumber].SetStringValue(queryParams["AccessionNumber"]); requestCollection[DicomTags.PatientsName].SetStringValue(queryParams["PatientsName"]); requestCollection[DicomTags.ReferringPhysiciansName].SetStringValue(queryParams["ReferringPhysiciansName"]); requestCollection[DicomTags.StudyDate].SetStringValue(queryParams["StudyDate"]); requestCollection[DicomTags.StudyTime].SetStringValue(""); requestCollection[DicomTags.StudyDescription].SetStringValue(queryParams["StudyDescription"]); requestCollection[DicomTags.PatientsBirthDate].SetStringValue(""); requestCollection[DicomTags.ModalitiesInStudy].SetStringValue(queryParams["ModalitiesInStudy"]); requestCollection[DicomTags.NumberOfStudyRelatedInstances].SetStringValue(""); requestCollection[DicomTags.InstanceAvailability].SetEmptyValue(); // must not be included in request requestCollection[DicomTags.PatientSpeciesDescription].SetStringValue(GetString(queryParams, "PatientSpeciesDescription")); var codeValue = GetString(queryParams, "PatientSpeciesCodeSequenceCodeValue"); var codeMeaning = GetString(queryParams, "PatientSpeciesCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; requestCollection[DicomTags.PatientSpeciesCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } requestCollection[DicomTags.PatientBreedDescription].SetStringValue(GetString(queryParams, "PatientBreedDescription")); codeValue = GetString(queryParams, "PatientBreedCodeSequenceCodeValue"); codeMeaning = GetString(queryParams, "PatientBreedCodeSequenceCodeMeaning"); if (codeValue != null || codeMeaning != null) { var codeSequenceMacro = new CodeSequenceMacro { CodingSchemeDesignator = "", CodeValue = codeValue, CodeMeaning = codeMeaning }; requestCollection[DicomTags.PatientBreedCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem); } requestCollection[DicomTags.ResponsiblePerson].SetStringValue(GetString(queryParams, "ResponsiblePerson")); requestCollection[DicomTags.ResponsiblePersonRole].SetStringValue(""); requestCollection[DicomTags.ResponsibleOrganization].SetStringValue(GetString(queryParams, "ResponsibleOrganization")); IList <DicomAttributeCollection> results = Query(selectedServer, requestCollection); StudyItemList studyItemList = new StudyItemList(); foreach (DicomAttributeCollection result in results) { StudyItem item = new StudyItem(result[DicomTags.StudyInstanceUid].GetString(0, ""), selectedServer); //TODO: add DicomField attributes to the StudyItem class (implement typeconverter for PersonName class). item.PatientsBirthDate = result[DicomTags.PatientsBirthDate].GetString(0, ""); item.AccessionNumber = result[DicomTags.AccessionNumber].GetString(0, ""); item.StudyDescription = result[DicomTags.StudyDescription].GetString(0, ""); item.StudyDate = result[DicomTags.StudyDate].GetString(0, ""); item.StudyTime = result[DicomTags.StudyTime].GetString(0, ""); item.PatientId = result[DicomTags.PatientId].GetString(0, ""); item.PatientsName = new PersonName(result[DicomTags.PatientsName].GetString(0, "")); item.ReferringPhysiciansName = new PersonName(result[DicomTags.ReferringPhysiciansName].GetString(0, "")); item.ModalitiesInStudy = DicomStringHelper.GetStringArray(result[DicomTags.ModalitiesInStudy].ToString()); DicomAttribute attribute = result[DicomTags.NumberOfStudyRelatedInstances]; if (!attribute.IsEmpty && !attribute.IsNull) { item.NumberOfStudyRelatedInstances = attribute.GetInt32(0, 0); } item.SpecificCharacterSet = result.SpecificCharacterSet; item.InstanceAvailability = result[DicomTags.InstanceAvailability].GetString(0, ""); if (String.IsNullOrEmpty(item.InstanceAvailability)) { item.InstanceAvailability = "ONLINE"; } item.PatientSpeciesDescription = result[DicomTags.PatientSpeciesDescription].GetString(0, ""); var patientSpeciesCodeSequence = result[DicomTags.PatientSpeciesCodeSequence]; if (!patientSpeciesCodeSequence.IsNull && patientSpeciesCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientSpeciesCodeSequence].Values)[0]); item.PatientSpeciesCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientSpeciesCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientSpeciesCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.PatientBreedDescription = result[DicomTags.PatientBreedDescription].GetString(0, ""); var patientBreedCodeSequence = result[DicomTags.PatientBreedCodeSequence]; if (!patientBreedCodeSequence.IsNull && patientBreedCodeSequence.Count > 0) { var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientBreedCodeSequence].Values)[0]); item.PatientBreedCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator; item.PatientBreedCodeSequenceCodeValue = codeSequenceMacro.CodeValue; item.PatientBreedCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning; } item.ResponsiblePerson = new PersonName(result[DicomTags.ResponsiblePerson].GetString(0, "")); item.ResponsiblePersonRole = result[DicomTags.ResponsiblePersonRole].GetString(0, ""); item.ResponsibleOrganization = result[DicomTags.ResponsibleOrganization].GetString(0, ""); studyItemList.Add(item); } AuditHelper.LogQueryIssued(selectedServer.AETitle, selectedServer.ScpParameters.HostName, EventSource.CurrentUser, EventResult.Success, SopClass.StudyRootQueryRetrieveInformationModelFindUid, requestCollection); return(studyItemList); }
public void StudyItemSetter(StudyItem item, string value) { PropertyInfo property = typeof(Student).GetProperty(item.ToString()); MethodInfo method= property.GetSetMethod(); method.Invoke(this, new object[] { value }); }
private void StudyGallery_SelectionChanged(object sender, EventArgs e) { StudyItem item = (StudyItem)_gvStudies.Selection.Item; this.SelectedStudy = item; }