Esempio n. 1
0
        public bool CanBuild(Business.Test.AccessionOrder accessionOrder, string testOrderId, string slideOrderId)
        {
            bool result = false;

            Business.Test.PanelOrder panelOrder = accessionOrder.PanelSetOrderCollection.GetPanelOrderByTestOrderId(testOrderId);
            Business.User.SystemUser orderedBy  = Business.User.SystemUserCollectionInstance.Instance.SystemUserCollection.GetSystemUserById(panelOrder.OrderedById);

            Business.Test.AliquotOrder    aliquotOrder = accessionOrder.SpecimenOrderCollection.GetAliquotOrderByTestOrderId(testOrderId);
            Business.Test.Model.TestOrder testOrder    = panelOrder.TestOrderCollection.Get(testOrderId);

            Business.Slide.Model.SlideOrder       slideOrder    = aliquotOrder.SlideOrderCollection.GetSlideOrderByTestOrderId(testOrderId);
            Business.Specimen.Model.SpecimenOrder specimenOrder = accessionOrder.SpecimenOrderCollection.GetSpecimenOrderByAliquotOrderId(aliquotOrder.AliquotOrderId);

            Business.Stain.Model.Stain stain = Business.Stain.Model.StainCollection.Instance.GetStainByTestId(testOrder.TestId);
            if (stain != null)
            {
                result = true;
                if (slideOrder.UseWetProtocol == true)
                {
                    result = false;
                    if (stain.HasWetProtocol == true || stain.UseWetProtocol == true)
                    {
                        result = true;
                    }
                }
            }
            return(result);
        }
Esempio n. 2
0
        public override void Visit(Test.AccessionOrder accessionOrder)
        {
            YellowstonePathology.Business.Test.PanelSetOrder panelSetOrder = accessionOrder.PanelSetOrderCollection.GetPanelSetOrderByTestOrderId(this.m_TestOrder.TestOrderId);

            YellowstonePathology.Business.Facility.Model.Facility accessioningFacility = Business.Facility.Model.FacilityCollection.Instance.GetByFacilityId(accessionOrder.AccessioningFacilityId);

            Slide.Model.Slide slide = Slide.Model.SlideFactory.Get(this.m_TestOrder.TestId);

            int    nextSlideNumber = this.m_AliquotOrder.SlideOrderCollection.Count() + 1;
            string objectId        = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
            string slideOrderId    = YellowstonePathology.Business.OrderIdParser.GetNextSlideOrderId(this.m_AliquotOrder.SlideOrderCollection, this.m_AliquotOrder.AliquotOrderId);

            YellowstonePathology.Business.Slide.Model.SlideOrder slideOrder = new Business.Slide.Model.SlideOrder(objectId, slideOrderId, this.m_AliquotOrder, this.m_TestOrder, this.m_SystemIdentity, nextSlideNumber);
            slideOrder.TestOrder            = this.m_TestOrder;
            slideOrder.ReportNo             = panelSetOrder.ReportNo;
            slideOrder.TestOrderId          = this.m_TestOrder.TestOrderId;
            slideOrder.TestId               = this.m_TestOrder.TestId;
            slideOrder.TestName             = this.m_TestOrder.TestName;
            slideOrder.TestAbbreviation     = this.m_TestOrder.TestAbbreviation;
            slideOrder.PatientLastName      = accessionOrder.PLastName;
            slideOrder.PatientFirstName     = accessionOrder.PFirstName;
            slideOrder.OrderedBy            = string.IsNullOrEmpty(this.m_TestOrder.OrderedBy) ? "NONE" : this.m_TestOrder.OrderedBy;
            slideOrder.AccessioningFacility = accessioningFacility.LocationAbbreviation;
            slideOrder.LabelType            = slide.LabelType.ToString();
            slideOrder.UseWetProtocol       = this.m_TestOrder.UseWetProtocol;
            slideOrder.PerformedByHand      = this.m_TestOrder.PerformedByHand;

            this.m_NewSlideOrder = slideOrder;
            this.m_TestOrder.SlideOrderCollection.Add(slideOrder);
            this.m_AliquotOrder.SlideOrderCollection.Add(slideOrder);
        }
        private void MenuItemSendVentanaOrder_Click(object sender, RoutedEventArgs e)
        {
            MenuItem menuItem = (MenuItem)sender;
            XElement xElement = XElement.Parse(menuItem.Tag.ToString());

            string slideOrderId = xElement.Element("SlideOrderId").Value;

            Business.OrderIdParser orderIdParser = new Business.OrderIdParser(slideOrderId);

            Business.Test.AccessionOrder       ao         = Business.Persistence.DocumentGateway.Instance.GetAccessionOrderByMasterAccessionNo(orderIdParser.MasterAccessionNo);
            Business.Slide.Model.SlideOrder    slideOrder = ao.SpecimenOrderCollection.GetSlideOrder(slideOrderId);
            Business.HL7View.VentanaStainOrder vo         = new Business.HL7View.VentanaStainOrder();
            vo.HandleOrder(ao, slideOrder);

            MessageBox.Show("The order has been sent.");
        }
Esempio n. 4
0
        public override void Visit(Test.AccessionOrder accessionOrder)
        {
            YellowstonePathology.Business.Test.PanelSetOrder panelSetOrder = accessionOrder.PanelSetOrderCollection.GetPanelSetOrderByTestOrderId(this.m_TestOrder.TestOrderId);

            YellowstonePathology.Business.Facility.Model.FacilityCollection allFacilities = YellowstonePathology.Business.Facility.Model.FacilityCollection.GetAllFacilities();
            YellowstonePathology.Business.Facility.Model.Facility accessioningFacility = allFacilities.GetByFacilityId(accessionOrder.AccessioningFacilityId);

            Slide.Model.Slide slide = Slide.Model.SlideFactory.Get(this.m_TestOrder.TestId);

            int nextSlideNumber = this.m_AliquotOrder.SlideOrderCollection.Count() + 1;
            string objectId = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
            string slideOrderId = YellowstonePathology.Business.OrderIdParser.GetNextSlideOrderId(this.m_AliquotOrder.SlideOrderCollection, this.m_AliquotOrder.AliquotOrderId);

            YellowstonePathology.Business.Slide.Model.SlideOrder slideOrder = new Business.Slide.Model.SlideOrder();
            slideOrder.ObjectId = objectId;
            slideOrder.SlideOrderId = slideOrderId;
            slideOrder.AliquotOrderId = this.m_AliquotOrder.AliquotOrderId;
            slideOrder.Label = YellowstonePathology.Business.Slide.Model.SlideOrder.GetSlideLabel(nextSlideNumber, this.m_AliquotOrder.Label, this.m_AliquotOrder.AliquotType);
            slideOrder.TestOrder = this.m_TestOrder;
            slideOrder.ReportNo = panelSetOrder.ReportNo;
            slideOrder.TestOrderId = this.m_TestOrder.TestOrderId;
            slideOrder.TestId = this.m_TestOrder.TestId;
            slideOrder.TestName = this.m_TestOrder.TestName;
            slideOrder.TestAbbreviation = this.m_TestOrder.TestAbbreviation;
            slideOrder.PatientLastName = accessionOrder.PLastName;
            slideOrder.Description = "Histology Slide";
            slideOrder.AliquotType = "Slide";
            slideOrder.OrderedById = this.m_SystemIdentity.User.UserId;
            slideOrder.OrderDate = DateTime.Now;
            slideOrder.OrderedBy = this.m_SystemIdentity.User.UserName;
            slideOrder.OrderedFrom = System.Environment.MachineName;
            slideOrder.Status = Business.Slide.Model.SlideStatusEnum.Created.ToString();
            slideOrder.Location = accessioningFacility.LocationAbbreviation;
            slideOrder.LabelType = slide.LabelType.ToString();

            this.m_TestOrder.SlideOrderCollection.Add(slideOrder);
            this.m_AliquotOrder.SlideOrderCollection.Add(slideOrder);
        }
Esempio n. 5
0
        public override void Visit(Test.AccessionOrder accessionOrder)
        {
            YellowstonePathology.Business.Test.PanelSetOrder panelSetOrder = accessionOrder.PanelSetOrderCollection.GetPanelSetOrderByTestOrderId(this.m_TestOrder.TestOrderId);

            YellowstonePathology.Business.Facility.Model.FacilityCollection allFacilities        = YellowstonePathology.Business.Facility.Model.FacilityCollection.GetAllFacilities();
            YellowstonePathology.Business.Facility.Model.Facility           accessioningFacility = allFacilities.GetByFacilityId(accessionOrder.AccessioningFacilityId);

            Slide.Model.Slide slide = Slide.Model.SlideFactory.Get(this.m_TestOrder.TestId);

            int    nextSlideNumber = this.m_AliquotOrder.SlideOrderCollection.Count() + 1; //this.m_AliquotOrder.SlideOrderCollection.GetNextSlideNumber(this.m_AliquotOrder.Label);
            string objectId        = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
            string slideOrderId    = YellowstonePathology.Business.OrderIdParser.GetNextSlideOrderId(this.m_AliquotOrder.SlideOrderCollection, this.m_AliquotOrder.AliquotOrderId);

            YellowstonePathology.Business.Slide.Model.SlideOrder slideOrder = new Business.Slide.Model.SlideOrder();
            slideOrder.ObjectId         = objectId;
            slideOrder.SlideOrderId     = slideOrderId;
            slideOrder.AliquotOrderId   = this.m_AliquotOrder.AliquotOrderId;
            slideOrder.Label            = YellowstonePathology.Business.Slide.Model.SlideOrder.GetSlideLabel(nextSlideNumber, this.m_AliquotOrder.Label, this.m_AliquotOrder.AliquotType);
            slideOrder.TestOrder        = this.m_TestOrder;
            slideOrder.ReportNo         = panelSetOrder.ReportNo;
            slideOrder.TestOrderId      = this.m_TestOrder.TestOrderId;
            slideOrder.TestId           = this.m_TestOrder.TestId;
            slideOrder.TestName         = this.m_TestOrder.TestName;
            slideOrder.TestAbbreviation = this.m_TestOrder.TestAbbreviation;
            slideOrder.PatientLastName  = accessionOrder.PLastName;
            slideOrder.Description      = "Histology Slide";
            slideOrder.AliquotType      = "Slide";
            slideOrder.OrderedById      = this.m_SystemIdentity.User.UserId;
            slideOrder.OrderDate        = DateTime.Now;
            slideOrder.OrderedBy        = this.m_SystemIdentity.User.UserName;
            slideOrder.OrderedFrom      = System.Environment.MachineName;
            slideOrder.Status           = Business.Slide.Model.SlideStatusEnum.Created.ToString();
            slideOrder.Location         = accessioningFacility.LocationAbbreviation;
            slideOrder.LabelType        = slide.LabelType.ToString();

            this.m_TestOrder.SlideOrderCollection.Add(slideOrder);
            this.m_AliquotOrder.SlideOrderCollection.Add(slideOrder);
        }
Esempio n. 6
0
        public string Build(Business.Test.AccessionOrder accessionOrder, string testOrderId, string slideOrderId)
        {
            //protoc -I d:/protogen --csharp_out d:/protogen/result d:/protogen/ventana.proto --grpc_out d:/protogen/result --plugin=protoc-gen-grpc=grpc_csharp_plugin.exe

            Channel channel = new Channel("10.1.2.70:30051", ChannelCredentials.Insecure);

            //Channel channel = new Channel("10.1.1.54:50051", ChannelCredentials.Insecure);

            Ventana.VentanaService.VentanaServiceClient ventanaServiceClient = new Ventana.VentanaService.VentanaServiceClient(channel);
            Ventana.OrderRequest orderRequest = new Ventana.OrderRequest();

            Business.Test.PanelOrder panelOrder = accessionOrder.PanelSetOrderCollection.GetPanelOrderByTestOrderId(testOrderId);
            Business.User.SystemUser orderedBy  = Business.User.SystemUserCollectionInstance.Instance.SystemUserCollection.GetSystemUserById(panelOrder.OrderedById);

            Business.Test.AliquotOrder    aliquotOrder = accessionOrder.SpecimenOrderCollection.GetAliquotOrderByTestOrderId(testOrderId);
            Business.Test.Model.TestOrder testOrder    = panelOrder.TestOrderCollection.Get(testOrderId);

            Business.Slide.Model.SlideOrder       slideOrder    = aliquotOrder.SlideOrderCollection.Get(slideOrderId);
            Business.Specimen.Model.SpecimenOrder specimenOrder = accessionOrder.SpecimenOrderCollection.GetSpecimenOrderByAliquotOrderId(aliquotOrder.AliquotOrderId);

            Business.Stain.Model.Stain stain = Business.Stain.Model.StainCollection.Instance.GetStainByTestId(testOrder.TestId);
            string ventanaBarcode            = stain.VentanaBenchMarkId.ToString();
            string ventanaProtocolName       = stain.VentanaBenchMarkProtocolName;

            if (slideOrder.UseWetProtocol == true)
            {
                if (stain.HasWetProtocol == true)
                {
                    ventanaBarcode      = stain.VentanaBenchMarkWetId.ToString();
                    ventanaProtocolName = stain.VentanaBenchMarkWetProtocolName;
                }
            }

            orderRequest.Msh = new Ventana.msh();
            orderRequest.Msh.SendingApplication   = "YPILIS";
            orderRequest.Msh.SendingFacility      = "YPI";
            orderRequest.Msh.ReceivingApplication = "Ventana";
            orderRequest.Msh.ReceivingFacility    = "YPI";
            orderRequest.Msh.DateTimeOfMessage    = DateTime.Now.ToString("yyyyMMddHHmmss");
            orderRequest.Msh.MessageType          = "OML^O21";
            orderRequest.Msh.MessageControlId     = MongoDB.Bson.ObjectId.GenerateNewId().ToString();

            orderRequest.Pid           = new Ventana.pid();
            orderRequest.Pid.FirstName = accessionOrder.PFirstName;
            orderRequest.Pid.LastName  = accessionOrder.PLastName;

            orderRequest.Pid.MiddleInitial = string.IsNullOrEmpty(accessionOrder.PMiddleInitial) ? string.Empty : accessionOrder.PMiddleInitial;
            orderRequest.Pid.Birthdate     = accessionOrder.PBirthdate.Value.ToString("yyyyMMdd");
            orderRequest.Pid.Sex           = accessionOrder.PSex;

            orderRequest.Pv1 = new Ventana.pv1();
            orderRequest.Pv1.RequestingPhysicianFirstname = orderedBy.FirstName;
            orderRequest.Pv1.RequestingPhysicianLastname  = orderedBy.LastName;
            orderRequest.Pv1.RequestingPhysicianNpi       = string.IsNullOrEmpty(orderedBy.NationalProviderId) ? "NOTAPPLICABLE" : orderedBy.NationalProviderId;

            orderRequest.Sac = new Ventana.sac();
            orderRequest.Sac.RegistrationDateTime = accessionOrder.AccessionTime.Value.ToString("yyyyMMddHHmm");

            Ventana.stain_order stainOrder = new Ventana.stain_order();
            Ventana.orc         orc        = new Ventana.orc();
            orc.OrderControl      = "NW";
            orc.PlacerOrderNumber = accessionOrder.MasterAccessionNo;
            orc.SiteName          = "YPI";
            orc.SiteDescription   = "Yellowstone Pathology";
            orc.FacilityCode      = "YPI";
            orc.FacilityName      = "Yellowstone Pathology";
            stainOrder.Orc        = orc;

            Ventana.obr obr = new Ventana.obr();
            obr.OrderSequenceId     = "1";
            obr.PlacerOrderNumber   = accessionOrder.MasterAccessionNo;
            obr.ProtocolNumber      = ventanaBarcode;
            obr.ProtocolName        = ventanaProtocolName;
            obr.OrderType           = "STAIN";
            obr.ObservationDateTime = DateTime.Now.ToString("yyyyMMddHHmm");

            if (string.IsNullOrEmpty(specimenOrder.SpecimenId) == false)
            {
                obr.SpecimenName = specimenOrder.SpecimenId;
            }
            else
            {
                obr.SpecimenName = "NONE";
            }

            obr.SpecimenDescription   = specimenOrder.Description;
            obr.SurgicalProcedureName = "Surgical Pathology";
            obr.PathologistNpi        = string.IsNullOrEmpty(orderedBy.NationalProviderId) ? "NOTAPPLICABLE" : orderedBy.NationalProviderId;
            obr.PathologistLastname   = orderedBy.LastName;
            obr.PathologistFirstname  = orderedBy.FirstName;
            obr.SlideId          = "HSLD" + slideOrder.SlideOrderId;
            obr.SlideSequence    = Business.Specimen.Model.Slide.GetSlideNumber(slideOrder.Label);
            obr.Blockid          = aliquotOrder.AliquotOrderId;
            obr.BlockSequence    = Business.Specimen.Model.Block.GetBlockLetter(aliquotOrder.Label);
            obr.SpecimenId       = specimenOrder.SpecimenOrderId;
            obr.SpecimenSequence = specimenOrder.SpecimenNumber.ToString();
            stainOrder.Obr       = obr;
            orderRequest.StainOrders.Add(stainOrder);

            Ventana.OrderReply orderReply = ventanaServiceClient.buildOrder(orderRequest);
            return(orderReply.Message);
        }