/// <summary> /// Retrieve a list of reading sites for the inquiring site /// </summary> /// <param name="siteStationNumber">Site being questioned</param> /// <returns>ReadingSiteList object contains all available reading site for the questioned site</returns> public ReadingSiteList GetReadingSites(string siteStationNumber) { Log.Debug("Retrieving reading sites..."); if (string.IsNullOrWhiteSpace(siteStationNumber)) { Log.Error("Missing parameter: siteStationNumber."); } string URI = String.Format("pathology/reading/{0}", siteStationNumber); IRestResponse response; ReadingSiteList result = new ReadingSiteList(); try { response = ExecuteGet(URI, VixServiceTypes.Pathology); ValidateRestResponse(response); result = ResponseParser.ParseGetReadingSiteResponse(response.Content); } catch (MagVixFailureException vfe) { Log.Error("Unexpected response.", vfe); } catch (Exception ex) { Log.Error("Could not complete request to retrieve reading site list.", ex); } Log.Debug(result.Items.Count.ToString() + " reading sites retrieved."); return result; }
/// <summary> /// Initializes a new instance of the <see cref="ConsultationStatusViewModel"/> class with cases /// </summary> /// <param name="readSites">list of known reading sites</param> public ConsultationStatusViewModel(CaseListItem item, ReadingSiteList sitelist) { this.Sites = new ObservableCollection<SiteConsultationStatusViewModel>(); this.SelectedSites = new ObservableCollection<SiteConsultationStatusViewModel>(); this.CancelConsultationCommand = new RelayCommand(CancelConsultation, () => CanCancelConsultation()); this.RequestConsultationCommand = new RelayCommand(RequestConsultation, () => CanRequestConsultation()); this.RefuseConsultationCommand = new RelayCommand(RefuseConsultation, () => CanRefuseConsultation()); this.AccessionNr = item.AccessionNumber; this.PatientName = item.PatientName; this.PatientID = item.PatientID; bool canRequestConsultation = true; foreach (ReadingSiteInfo readingSiteInfo in sitelist.Items) { if ((readingSiteInfo.SiteStationNumber == UserContext.LocalSite.PrimarySiteStationNUmber) && (readingSiteInfo.SiteType == ReadingSiteType.consultation)) { canRequestConsultation = false; break; } } // process consultation sites foreach (ReadingSiteInfo siteInfo in sitelist.Items) { SiteConsultationStatusViewModel itemVM = new SiteConsultationStatusViewModel(); itemVM.Item = item; itemVM.SiteInfo = siteInfo; Site localSite = UserContext.LocalSite; itemVM.CanRequestConsultation = canRequestConsultation; foreach (CaseConsultation consult in item.ConsultationList.ConsultationList) { if ((siteInfo.SiteStationNumber == consult.SiteID) && (consult.Type == "CONSULTATION")) { itemVM.ConsultationID = consult.ConsultationID; if (consult.Status == "PENDING") { itemVM.IsPending = true; // if request pending for current site if ((siteInfo.SiteStationNumber == UserContext.LocalSite.PrimarySiteStationNUmber) && (consult.SiteID == UserContext.LocalSite.PrimarySiteStationNUmber)) { itemVM.CanRefuseConsultation = true; } } else if (consult.Status == "REFUSED") { itemVM.IsRefused = true; } else if (consult.Status == "COMPLETED") { itemVM.IsCompleted = true; } } } if (!itemVM.IsPending && !itemVM.IsCompleted && !siteInfo.Active) { // not active and not pending. ignore this site continue; } this.Sites.Add(itemVM); } // process consultation requests for current site foreach (CaseConsultation consult in item.ConsultationList.ConsultationList) { if ((consult.SiteID == UserContext.LocalSite.PrimarySiteStationNUmber) && (consult.Type == "CONSULTATION") && (consult.Status == "PENDING")) { SiteConsultationStatusViewModel itemVM = new SiteConsultationStatusViewModel(); itemVM.Item = item; itemVM.SiteInfo = new ReadingSiteInfo { SiteStationNumber = UserContext.LocalSite.PrimarySiteStationNUmber, SiteAbr = UserContext.LocalSite.SiteAbbreviation, SiteName = UserContext.LocalSite.SiteName, Active = true }; itemVM.IsCurrentSite = true; itemVM.ConsultationID = consult.ConsultationID; itemVM.IsPending = true; this.Sites.Add(itemVM); } } }