Пример #1
0
        public void Print()
        {
            Console.WriteLine("StudyData.Date: " + Date.ToStringNull());
            Console.WriteLine("StudyData.InstanceUID: " + InstanceUID.ToStringNull());
            Console.WriteLine("StudyData.Id: " + Id.ToStringNull());
            Console.WriteLine("StudyData.accessionNumber: " + AccessionNumber.ToStringNull());
            Console.WriteLine("StudyData.referringPhysiciansName: " + ReferringPhysiciansName.ToStringNull());
            Console.WriteLine("StudyData.ModalitiesInStudy: " + ModalitiesInStudy);
            if (ModalitiesInStudy != null)
            {
                foreach (string m in ModalitiesInStudy)
                {
                    Console.WriteLine("\t" + m);
                }
            }

            Console.WriteLine("StudyData.NumberOfRelatedSeries: " + NumberOfRelatedSeries);
            Console.WriteLine("StudyData.NumberOfRelatedInstances: " + NumberOfRelatedInstances);
            Console.WriteLine("StudyData.Description: " + Description.ToStringNull());
            Console.WriteLine("StudyData.NameOfDoctorsReading: " + NameOfDoctorsReading);
            Console.WriteLine("StudyData.AdmittingDiagnosesDescription: " + AdmittingDiagnosesDescription.ToStringNull());
            Console.WriteLine("StudyData.Age: " + Age.ToStringNull());
            Console.WriteLine("StudyData.Size: " + Size.ToStringNull());
            Console.WriteLine("StudyData.Weight: " + Weight.ToStringNull());
            Console.WriteLine("StudyData.AdditionalPatientHistory: " + AdditionalPatientHistory.ToStringNull());
            Console.WriteLine();
            Patient.Print();
        }
Пример #2
0
        /// <summary>
        /// Validate the Content for this Order Details
        /// </summary>
        /// <param name="path">The path to this object as a string</param>
        /// <param name="messages">the validation messages, these may be added to within this method</param>
        public void Validate(string path, List <ValidationMessage> messages)
        {
            var vb = new ValidationBuilder(path, messages);

            if (vb.ArgumentRequiredCheck("Requester", Requester))
            {
                Requester.Validate("Requester", messages);
            }

            if (RequesterOrderIdentifier != null)
            {
                RequesterOrderIdentifier.Validate(path, messages);
            }

            if (RequestedTestName != null)
            {
                RequestedTestName.Validate(path, messages);
            }

            if (AccessionNumber != null)
            {
                AccessionNumber.Validate(path, messages);
            }
        }
        private void GetESignatureStatus()
        {
            if (this.CurrentSiteType == ReadingSiteType.consultation)
            {
                AccessionNumber acNum = new AccessionNumber(this.AccessionNumber);
                string localESigKey = UserContext.LocalSite.PrimarySiteStationNUmber + "^" + acNum.Type;
                if (UserContext.UserCredentials.UserHasESignatureStatus(localESigKey))
                    this.LocalEsigStatus = UserContext.UserCredentials.GetESignatureStatusAtSite(localESigKey);
                else
                {
                    // retrieve the Esignature status from database
                    this.LocalEsigStatus = DataSource.GetESignatureStatus(UserContext.LocalSite.PrimarySiteStationNUmber, this.AccessionNumber);

                    // update to the list
                    UserContext.UserCredentials.ESignatureStatuses.Add(localESigKey, this.LocalEsigStatus);
                }
            }
        }
        private void GetESignatureStatus()
        {
            if (this.CurrentSiteType == ReadingSiteType.consultation)
            {
                this.EsigStatus = new PathologyElectronicSignatureNeedType() { Status = ESigNeedType.not_authorized, Message = "Consulting site cannot verify main report." };
                return;
            }

            // first check to see if the user has already got the status for this type of report yet
            AccessionNumber acNum = new AccessionNumber(this.AccessionNumber);
            string eSigKey = this.SiteCode + "^" + acNum.Type;

            if (UserContext.UserCredentials.UserHasESignatureStatus(eSigKey))
                this.EsigStatus = UserContext.UserCredentials.GetESignatureStatusAtSite(eSigKey);
            else
            {
                // retrieve the Esignature status from database
                this.EsigStatus = DataSource.GetESignatureStatus(this.SiteCode, this.AccessionNumber);

                // update to the list
                UserContext.UserCredentials.ESignatureStatuses.Add(eSigKey, this.EsigStatus);
            }

            // if the interpretation site is remote then it also need local esignature status
            if (UserContext.LocalSite.PrimarySiteStationNUmber != this.SiteCode)
            {
                string localESigKey = UserContext.LocalSite.PrimarySiteStationNUmber + "^" + acNum.Type;
                if (UserContext.UserCredentials.UserHasESignatureStatus(localESigKey))
                    this.LocalEsigStatus = UserContext.UserCredentials.GetESignatureStatusAtSite(localESigKey);
                else
                {
                    // retrieve the Esignature status from database
                    this.LocalEsigStatus = DataSource.GetESignatureStatus(UserContext.LocalSite.PrimarySiteStationNUmber, this.AccessionNumber);

                    // update to the list
                    UserContext.UserCredentials.ESignatureStatuses.Add(localESigKey, this.LocalEsigStatus);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Retrieve report data for a case
        /// </summary>
        /// <param name="item">Case item</param>
        /// <returns>Report data for the case in question</returns>
        public Report GetReport(CaseListItem item)
        {
            Log.Debug("Retrieving report data...");

            // Always return a valid object for binding
            Report rep = new Report();

            if (item == null)
            {
                Log.Error("Missing parameter: caselistitem.");
                return rep;
            }

            // first we need to get the report template based on the type indicate in the accession number
            AccessionNumber accNum = new AccessionNumber(item.AccessionNumber);
            VixReportTemplateObject templateObj = GetReportTemplate(item.SiteCode, accNum.Type);

            // in case there is an error in the tranmission
            if (templateObj.TemplateXML == string.Empty)
            {
                Log.Error("Failed to get template.");
                return rep;
            }

            // retrieve a list of fields to grab data from the template
            rep.ReportTemplate = templateObj.GetReportTemplate();
            //List<string> fields = rep.GetFieldList();
            List<string> fields = rep.GetAllFieldList();

            string URI = String.Format("pathology/case/template/{0}", item.CaseURN);
            IRestResponse response;
            try
            {
                PathologyCaseTemplateInputFieldsType fieldList = new PathologyCaseTemplateInputFieldsType(fields);
                string xml = ResponseParser.SerializeToXml<PathologyCaseTemplateInputFieldsType>(fieldList);
                response = ExecutePost(URI, VixServiceTypes.Pathology, xml);
                ValidateRestResponse(response);
                PathologyCaseTemplateType rawRep = ResponseParser.ParseGetReport(response.Content);
                rep.LoadReportData(rawRep);
            }
            catch (MagResponseParsingFailureException rpf)
            {
                Log.Error("Failed to parse report fields.", rpf);
            }
            catch (MagVixFailureException vfe)
            {
                Log.Error("Unexpected response.", vfe);
            }
            catch (Exception ex)
            {
                Log.Error("Could not complete request to retrieve report data.", ex);
            }

            return rep;
        }