예제 #1
0
 public SurgicalTestOrder()
 {
     this.m_SurgicalSpecimenCollection = new SurgicalSpecimenCollection();
     this.m_SurgicalAuditCollection    = new SurgicalAuditCollection();
     this.m_TypingStainCollection      = new SpecialStain.StainResultItemCollection();
     this.m_SpecimenOrderCollection    = new YellowstonePathology.Business.Specimen.Model.SpecimenOrderCollection();
 }
예제 #2
0
 public SurgicalTestOrder()
 {
     this.m_SurgicalSpecimenCollection = new SurgicalSpecimenCollection();
     this.m_SurgicalAuditCollection = new SurgicalAuditCollection();
     this.m_TypingStainCollection = new SpecialStain.StainResultItemCollection();
     this.m_SpecimenOrderCollection = new YellowstonePathology.Business.Specimen.Model.SpecimenOrderCollection();
 }
예제 #3
0
 public SurgicalStainSpecimen(YellowstonePathology.Business.Specimen.Model.SpecimenOrder specimenOrder,
                              YellowstonePathology.Business.Test.Model.TestOrderCollection testOrderCollection,
                              YellowstonePathology.Business.SpecialStain.StainResultItemCollection stainResultCollection)
     : base(specimenOrder, testOrderCollection)
 {
     this.m_StainResultCollection = stainResultCollection;
     this.UpdateNoChargeStatus();
 }
예제 #4
0
 public SurgicalSpecimen(string reportNo, string surgicalSpecimenId)
 {
     this.m_ReportNo                  = reportNo;
     this.m_SurgicalSpecimenId        = surgicalSpecimenId;
     this.m_StainResultItemCollection = new YellowstonePathology.Business.SpecialStain.StainResultItemCollection();
     this.m_IntraoperativeConsultationResultCollection = new IntraoperativeConsultationResultCollection();
     this.m_ICD9BillingCodeCollection = new YellowstonePathology.Business.Billing.Model.ICD9BillingCodeCollection();
 }
예제 #5
0
 public SurgicalStainSpecimen(YellowstonePathology.Business.Specimen.Model.SpecimenOrder specimenOrder, 
     YellowstonePathology.Business.Test.Model.TestOrderCollection testOrderCollection,
     YellowstonePathology.Business.SpecialStain.StainResultItemCollection stainResultCollection)
     : base(specimenOrder, testOrderCollection)
 {
     this.m_StainResultCollection = stainResultCollection;
     this.UpdateNoChargeStatus();
 }
예제 #6
0
 public SurgicalSpecimen(string reportNo, string objectId, string surgicalSpecimenId)
 {
     this.m_ReportNo = reportNo;
     this.m_ObjectId = objectId;
     this.m_SurgicalSpecimenId = surgicalSpecimenId;
     this.m_StainResultItemCollection = new YellowstonePathology.Business.SpecialStain.StainResultItemCollection();
     this.m_IntraoperativeConsultationResultCollection = new IntraoperativeConsultationResultCollection();
     this.m_ICD9BillingCodeCollection = new YellowstonePathology.Business.Billing.ICD9BillingCodeCollection();
 }
예제 #7
0
        private XmlNode SetStains(XmlNode tableNodeSS,
                                  XmlNode rowStainHeaderNode,
                                  XmlNode rowTestHeaderNode,
                                  XmlNode insertAfterRowSS,
                                  XmlNode rowSpecialStainNode,
                                  SurgicalSpecimen surgicalSpecimen,
                                  YellowstonePathology.Business.SpecialStain.StainResultItemCollection stainResultCollection)
        {
            XmlNode rowStainHeaderNodeClone = rowStainHeaderNode.Clone();

            tableNodeSS.InsertAfter(rowStainHeaderNodeClone, insertAfterRowSS);
            insertAfterRowSS = rowStainHeaderNodeClone;

            XmlNode rowTestHeaderNodeClone = rowTestHeaderNode.Clone();

            tableNodeSS.InsertAfter(rowTestHeaderNodeClone, insertAfterRowSS);
            insertAfterRowSS = rowTestHeaderNodeClone;

            foreach (YellowstonePathology.Business.SpecialStain.StainResultItem stainResultItem in stainResultCollection)
            {
                XmlNode rowSpecialStainClone = rowSpecialStainNode.Clone();
                string  stainDescription     = stainResultItem.ProcedureName;
                string  stainResult          = stainResultItem.Result;

                if (string.IsNullOrEmpty(stainResult) == true)
                {
                    stainResult = "Pending";
                }
                else if (stainResult.ToUpper() == "SEE COMMENT")
                {
                    stainResult = stainResultItem.ReportComment;
                }
                else
                {
                    string specialStainReportComment = stainResultItem.ReportComment;

                    if (!string.IsNullOrEmpty(specialStainReportComment))
                    {
                        stainResult += " - " + specialStainReportComment;
                    }
                }

                rowSpecialStainClone.SelectSingleNode("descendant::w:r[w:t='stain_description']/w:t", this.m_NameSpaceManager).InnerText = stainDescription;
                rowSpecialStainClone.SelectSingleNode("descendant::w:r[w:t='stain_result']/w:t", this.m_NameSpaceManager).InnerText      = stainResult;

                string block = surgicalSpecimen.GetBlockFromTestOrderId(stainResultItem.TestOrderId);
                rowSpecialStainClone.SelectSingleNode("descendant::w:r[w:t='block_description']/w:t", this.m_NameSpaceManager).InnerText = block;

                tableNodeSS.InsertAfter(rowSpecialStainClone, insertAfterRowSS);
                insertAfterRowSS = rowSpecialStainClone;
            }

            return(insertAfterRowSS);
        }
예제 #8
0
 public YellowstonePathology.Business.SpecialStain.StainResultItemCollection GetAllStains()
 {
     YellowstonePathology.Business.SpecialStain.StainResultItemCollection result = new YellowstonePathology.Business.SpecialStain.StainResultItemCollection();
     foreach (SurgicalSpecimen surgicalSpecimen in this.m_SurgicalSpecimenCollection)
     {
         foreach (YellowstonePathology.Business.SpecialStain.StainResultItem stainResultItem in surgicalSpecimen.StainResultItemCollection)
         {
             result.Add(stainResultItem);
         }
     }
     return(result);
 }
예제 #9
0
        public SurgicalTestOrder(string masterAccessionNo, string reportNo, string objectId,
			YellowstonePathology.Business.PanelSet.Model.PanelSet panelSet,
			bool distribute)
            : base(masterAccessionNo, reportNo, objectId, panelSet, distribute)
        {
            this.m_SurgicalSpecimenCollection = new SurgicalSpecimenCollection();
            this.m_SurgicalAuditCollection = new SurgicalAuditCollection();
            this.m_TypingStainCollection = new SpecialStain.StainResultItemCollection();
            this.m_SpecimenOrderCollection = new YellowstonePathology.Business.Specimen.Model.SpecimenOrderCollection();
            this.m_GrossX = "???";
            this.m_ImmediateX = "Not performed";
            this.m_MicroscopicX = "???";
            this.m_PQRIRequired = false;
            this.m_PQRSIsIndicated = false;
        }
예제 #10
0
 public SurgicalTestOrder(string masterAccessionNo, string reportNo, string objectId,
                          YellowstonePathology.Business.PanelSet.Model.PanelSet panelSet,
                          bool distribute)
     : base(masterAccessionNo, reportNo, objectId, panelSet, distribute)
 {
     this.m_SurgicalSpecimenCollection = new SurgicalSpecimenCollection();
     this.m_SurgicalAuditCollection    = new SurgicalAuditCollection();
     this.m_TypingStainCollection      = new SpecialStain.StainResultItemCollection();
     this.m_SpecimenOrderCollection    = new YellowstonePathology.Business.Specimen.Model.SpecimenOrderCollection();
     this.m_GrossX          = "???";
     this.m_ImmediateX      = "Not performed";
     this.m_MicroscopicX    = "???";
     this.m_PQRIRequired    = false;
     this.m_PQRSIsIndicated = false;
 }
예제 #11
0
        private void GradedStainsAreHandled()
        {
            YellowstonePathology.Business.Test.Model.TestOrderCollection         testOrderCollection = this.m_PanelSetOrderSurgical.GetTestOrders();
            YellowstonePathology.Business.SpecialStain.StainResultItemCollection allStaints          = this.m_PanelSetOrderSurgical.GetAllStains();
            YellowstonePathology.Business.SpecialStain.StainResultItemCollection gradedStains        = allStaints.GetGradedStains(testOrderCollection);

            foreach (YellowstonePathology.Business.SpecialStain.StainResultItem stainResult in gradedStains)
            {
                if (stainResult.IsResultPositive() == true)
                {
                    if (stainResult.ReportCommentContainsNumber() == false)
                    {
                        this.m_ExecutionStatus.AddMessage("Graded stain " + stainResult.ProcedureName + " is not graded.", true);
                        break;
                    }
                }
            }
        }
        public override void Run()
        {
            this.m_Status = AuditStatusEnum.OK;
            this.m_Message.Clear();

            YellowstonePathology.Business.Test.Model.TestOrderCollection         testOrderCollection = this.m_SurgicalTestOrder.GetTestOrders();
            YellowstonePathology.Business.SpecialStain.StainResultItemCollection allStaints          = this.m_SurgicalTestOrder.GetAllStains();
            YellowstonePathology.Business.SpecialStain.StainResultItemCollection gradedStains        = allStaints.GetGradedStains(testOrderCollection);

            foreach (YellowstonePathology.Business.SpecialStain.StainResultItem stainResult in gradedStains)
            {
                if (stainResult.IsResultPositive() == true)
                {
                    if (stainResult.ReportCommentContainsNumber() == false)
                    {
                        this.m_Status = AuditStatusEnum.Failure;
                        this.m_Message.AppendLine("Graded stain " + stainResult.ProcedureName + " is not graded.");
                    }
                }
            }
        }
예제 #13
0
        public override void Render()
        {
            SurgicalTestOrder panelSetOrderSurgical = (SurgicalTestOrder)this.m_PanelSetOrder;

            this.m_TemplateName = @"\\Cfileserver\Documents\ReportTemplates\XmlTemplates\Surgical.3.xml";

            base.OpenTemplate();

            YellowstonePathology.Business.Amendment.Model.AmendmentCollection amendmentCollection = this.m_AccessionOrder.AmendmentCollection.GetAmendmentsForReport(this.m_PanelSetOrder.ReportNo);

            panelSetOrderSurgical.GrossX          = YellowstonePathology.Business.Common.SpellChecker.FixString(panelSetOrderSurgical.GrossX);
            panelSetOrderSurgical.MicroscopicX    = YellowstonePathology.Business.Common.SpellChecker.FixString(panelSetOrderSurgical.MicroscopicX);
            panelSetOrderSurgical.CancerSummary   = YellowstonePathology.Business.Common.SpellChecker.FixString(panelSetOrderSurgical.CancerSummary);
            this.m_AccessionOrder.ClinicalHistory = YellowstonePathology.Business.Common.SpellChecker.FixString(this.m_AccessionOrder.ClinicalHistory);
            panelSetOrderSurgical.Comment         = YellowstonePathology.Business.Common.SpellChecker.FixString(panelSetOrderSurgical.Comment);

            foreach (YellowstonePathology.Business.Test.Surgical.SurgicalSpecimen surgicalSpecimen in panelSetOrderSurgical.SurgicalSpecimenCollection)
            {
                surgicalSpecimen.Diagnosis = YellowstonePathology.Business.Common.SpellChecker.FixString(surgicalSpecimen.Diagnosis);
            }

            foreach (YellowstonePathology.Business.Amendment.Model.Amendment amendment in amendmentCollection)
            {
                amendment.Text = YellowstonePathology.Business.Common.SpellChecker.FixString(amendment.Text);
            }

            this.SetDemographicsV2();

            this.SetReportDistribution();
            this.SetCaseHistory();

            string amendmentTitle = string.Empty;

            if (amendmentCollection.Count > 0)
            {
                for (int i = amendmentCollection.Count - 1; i >= 0; i--)
                {
                    if (amendmentCollection[i].Final == true)
                    {
                        amendmentTitle = amendmentCollection[i].AmendmentType;
                        if (amendmentTitle == "Correction")
                        {
                            amendmentTitle = "Corrected";
                        }
                        if (amendmentCollection[i].RevisedDiagnosis == true)
                        {
                            this.SetXmlNodeData("Amendment", "Revised");
                        }
                        else
                        {
                            this.SetXmlNodeData("Amendment", amendmentTitle);
                        }
                        break;
                    }
                }
            }
            this.SetXmlNodeData("Amendment", amendmentTitle);

            XmlNode mainTableNode       = this.m_ReportXml.SelectSingleNode("descendant::w:tbl[w:tr/w:tc/w:p/w:r/w:t='microscopic_description']", this.m_NameSpaceManager);
            XmlNode diagnosisTableNode  = this.m_ReportXml.SelectSingleNode("descendant::w:tbl[w:tr/w:tc/w:p/w:r/w:t='s_id']", this.m_NameSpaceManager);
            XmlNode rowSpecimenNode     = diagnosisTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='s_id']", this.m_NameSpaceManager);
            XmlNode rowDiagnosisNode    = diagnosisTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='diagnosis']", this.m_NameSpaceManager);
            XmlNode rowSpecimenBlankRow = diagnosisTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='specimen_blank_row']", this.m_NameSpaceManager);
            XmlNode insertAfterRow      = rowSpecimenNode;

            foreach (SurgicalSpecimen surgicalSpecimen in panelSetOrderSurgical.SurgicalSpecimenCollection)
            {
                XmlNode rowSpecimenNodeClone = rowSpecimenNode.Clone();
                string  diagnosisID          = surgicalSpecimen.DiagnosisId + ".";
                string  specimenType         = surgicalSpecimen.SpecimenOrder.Description + ":";
                rowSpecimenNodeClone.SelectSingleNode("descendant::w:r[w:t='s_id']/w:t", this.m_NameSpaceManager).InnerText          = diagnosisID;
                rowSpecimenNodeClone.SelectSingleNode("descendant::w:r[w:t='specimen_type']/w:t", this.m_NameSpaceManager).InnerText = specimenType;
                diagnosisTableNode.InsertAfter(rowSpecimenNodeClone, insertAfterRow);

                XmlNode rowDiagnosisNodeClone = rowDiagnosisNode.Clone();
                string  diagnosis             = surgicalSpecimen.Diagnosis;

                this.SetXMLNodeParagraphDataNode(rowDiagnosisNodeClone, "diagnosis", diagnosis);
                diagnosisTableNode.InsertAfter(rowDiagnosisNodeClone, rowSpecimenNodeClone);

                insertAfterRow = rowDiagnosisNodeClone;
            }

            if (string.IsNullOrEmpty(panelSetOrderSurgical.Comment) == true | panelSetOrderSurgical.Comment.ToUpper() == "NONE")
            {
                XmlNode rowComment = diagnosisTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='report_comment']", this.m_NameSpaceManager);
                diagnosisTableNode.RemoveChild(rowComment);
            }
            else
            {
                this.SetXMLNodeParagraphData("report_comment", panelSetOrderSurgical.Comment);
            }

            YellowstonePathology.Business.Document.AmendmentSection amendmentSection = new YellowstonePathology.Business.Document.AmendmentSection();
            amendmentSection.SetAmendment(amendmentCollection, this.m_ReportXml, this.m_NameSpaceManager, true);

            diagnosisTableNode.RemoveChild(rowSpecimenNode);
            diagnosisTableNode.RemoveChild(rowDiagnosisNode);
            diagnosisTableNode.RemoveChild(rowSpecimenBlankRow);

            XmlNode tableNodeP            = this.m_ReportXml.SelectSingleNode("descendant::w:tbl[w:tr/w:tc/w:p/w:r/w:t='sidp']", this.m_NameSpaceManager);
            XmlNode rowPreviousDiagnosis  = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='previous_diagnosis_header']", this.m_NameSpaceManager);
            XmlNode rowSpecimenNodeP      = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='sidp']", this.m_NameSpaceManager);
            XmlNode rowDiagnosisNodeP     = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='diagnosis_previous']", this.m_NameSpaceManager);
            XmlNode rowCommentP           = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='report_comment_previous']", this.m_NameSpaceManager);
            XmlNode rowPreviousSignatureP = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='previous_signature']", this.m_NameSpaceManager);
            XmlNode rowBlankLine1P        = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='previous_diagnosis_blank_line1']", this.m_NameSpaceManager);
            XmlNode rowBlankLine2P        = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='previous_diagnosis_blank_line2']", this.m_NameSpaceManager);

            if (amendmentCollection.Count != 0)
            {
                if (amendmentCollection.HasFinalRevisedDiagnosis() == true)
                {
                    YellowstonePathology.Business.Amendment.Model.Amendment revisedDiagnosisAmendment = amendmentCollection.GetMostRecentFinalRevisedDiagnosis();
                    XmlNode rowRevisedDiagnosisHeader = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Diagnosis:']", this.m_NameSpaceManager);
                    string  finalDateHead             = YellowstonePathology.Business.BaseData.GetShortDateString(revisedDiagnosisAmendment.FinalDate);
                    finalDateHead += " " + YellowstonePathology.Business.BaseData.GetMillitaryTimeString(revisedDiagnosisAmendment.FinalTime);
                    rowRevisedDiagnosisHeader.SelectSingleNode("descendant::w:r[w:t='Diagnosis:']/w:t", this.m_NameSpaceManager).InnerText = "Revised Diagnosis: " + finalDateHead;
                }

                XmlNode insertAfterRowP = rowPreviousDiagnosis;

                for (int counter = 0; counter < amendmentCollection.Count; counter++)
                {
                    YellowstonePathology.Business.Amendment.Model.Amendment amendment = amendmentCollection[counter];
                    if (amendment.RevisedDiagnosis == true || amendment.ShowPreviousDiagnosis == true)
                    {
                        string amendmentId = amendment.AmendmentId;
                        foreach (YellowstonePathology.Business.Test.Surgical.SurgicalAudit surgicalAudit in panelSetOrderSurgical.SurgicalAuditCollection)
                        {
                            if (surgicalAudit.AmendmentId == amendmentId)
                            {
                                string finalDateP = string.Empty;

                                finalDateP  = YellowstonePathology.Business.BaseData.GetShortDateString(this.m_PanelSetOrder.FinalDate);
                                finalDateP += " " + YellowstonePathology.Business.BaseData.GetMillitaryTimeString(panelSetOrderSurgical.FinalTime);

                                XmlNode rowSpecimenBlankRowP            = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='specimen_blank_row_previous']", this.m_NameSpaceManager);
                                XmlNode rowPreviousDiagnosisHeaderClone = rowPreviousDiagnosis.Clone();
                                string  previousDiagnosisHeader         = "Previous diagnosis on " + finalDateP;
                                rowPreviousDiagnosisHeaderClone.SelectSingleNode("descendant::w:r[w:t='previous_diagnosis_header']/w:t", this.m_NameSpaceManager).InnerText = previousDiagnosisHeader;
                                tableNodeP.InsertAfter(rowPreviousDiagnosisHeaderClone, insertAfterRowP);
                                insertAfterRowP = rowPreviousDiagnosisHeaderClone;

                                foreach (YellowstonePathology.Business.Test.Surgical.SurgicalSpecimenAudit specimenAudit in surgicalAudit.SurgicalSpecimenAuditCollection)
                                {
                                    if (specimenAudit.AmendmentId == amendmentId)
                                    {
                                        XmlNode rowSpecimenNodeCloneP = rowSpecimenNodeP.Clone();
                                        string  diagnosisIDP          = specimenAudit.DiagnosisId + ".";
                                        string  specimenTypeP         = specimenAudit.SpecimenOrder.Description + ":";

                                        rowSpecimenNodeCloneP.SelectSingleNode("descendant::w:r[w:t='sidp']/w:t", this.m_NameSpaceManager).InnerText = diagnosisIDP;
                                        rowSpecimenNodeCloneP.SelectSingleNode("descendant::w:r[w:t='specimen_type_previous']/w:t", this.m_NameSpaceManager).InnerText = specimenTypeP;
                                        tableNodeP.InsertAfter(rowSpecimenNodeCloneP, insertAfterRowP);

                                        XmlNode rowDiagnosisNodeCloneP = rowDiagnosisNodeP.Clone();
                                        string  diagnosisP             = specimenAudit.Diagnosis;
                                        this.SetXMLNodeParagraphDataNode(rowDiagnosisNodeCloneP, "diagnosis_previous", diagnosisP);
                                        mainTableNode.InsertAfter(rowDiagnosisNodeCloneP, rowSpecimenNodeCloneP);
                                        insertAfterRowP = rowDiagnosisNodeCloneP;
                                    }
                                }

                                XmlNode rowCommentPClone = rowCommentP.Clone();
                                string  reportCommentP   = surgicalAudit.Comment;
                                rowCommentPClone.SelectSingleNode("descendant::w:r[w:t='report_comment_previous']/w:t", this.m_NameSpaceManager).InnerText = reportCommentP;
                                tableNodeP.InsertAfter(rowCommentPClone, insertAfterRowP);

                                insertAfterRowP = rowCommentPClone;
                                XmlNode rowPreviousSignaturePClone = rowPreviousSignatureP.Clone();
                                YellowstonePathology.Business.User.SystemUser pathologistUser = YellowstonePathology.Business.User.SystemUserCollectionInstance.Instance.SystemUserCollection.GetSystemUserById(surgicalAudit.PathologistId);

                                string previousSignautreP = pathologistUser.Signature;
                                rowPreviousSignaturePClone.SelectSingleNode("descendant::w:r[w:t='previous_signature']/w:t", this.m_NameSpaceManager).InnerText = previousSignautreP;
                                tableNodeP.InsertAfter(rowPreviousSignaturePClone, insertAfterRowP);
                                insertAfterRowP = rowPreviousSignaturePClone;
                            }
                        }
                    }
                }
            }

            tableNodeP.RemoveChild(rowSpecimenNodeP);
            tableNodeP.RemoveChild(rowDiagnosisNodeP);
            tableNodeP.RemoveChild(rowPreviousDiagnosis);
            tableNodeP.RemoveChild(rowCommentP);
            tableNodeP.RemoveChild(rowPreviousSignatureP);
            tableNodeP.RemoveChild(rowBlankLine1P);
            tableNodeP.RemoveChild(rowBlankLine2P);


            if (this.m_PanelSetOrder.Final == true)
            {
                this.SetXmlNodeData("pathologist_signature", this.m_PanelSetOrder.Signature);
            }
            else
            {
                this.SetXmlNodeData("pathologist_signature", "THIS CASE IS NOT FINAL");
            }

            XmlNode rowCancerSummaryHeader = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Cancer Case Summary']", this.m_NameSpaceManager);
            XmlNode rowCancerSummary       = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='cancer_summary']", this.m_NameSpaceManager);
            XmlNode rowAJCCStage           = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='ajcc_stage']", this.m_NameSpaceManager);

            if (panelSetOrderSurgical.CancerSummary == string.Empty)
            {
                mainTableNode.RemoveChild(rowCancerSummaryHeader);
                mainTableNode.RemoveChild(rowCancerSummary);
            }
            else
            {
                this.SetXMLNodeParagraphData("cancer_summary", panelSetOrderSurgical.CancerSummary);
                if (panelSetOrderSurgical.AJCCStage != string.Empty)
                {
                    this.SetXmlNodeData("ajcc_stage", "Pathologic TNM Stage: " + panelSetOrderSurgical.AJCCStage);
                }
                else
                {
                    this.SetXmlNodeData("ajcc_stage", string.Empty);
                }
            }

            this.SetXmlNodeData("client_case", this.m_AccessionOrder.PCAN);
            this.SetXMLNodeParagraphData("microscopic_description", panelSetOrderSurgical.MicroscopicX);

            //Stains
            XmlNode rowAncillaryCommentNode = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='ancillary_studies_comment']", this.m_NameSpaceManager);
            XmlNode tableNodeSS             = this.m_ReportXml.SelectSingleNode("descendant::w:tbl[w:tr/w:tc/w:p/w:r/w:t='specimen_type']", this.m_NameSpaceManager);
            XmlNode rowSpecimenTypeNode     = tableNodeSS.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='specimen_type']", this.m_NameSpaceManager);
            XmlNode rowSinglePlexNode       = tableNodeSS.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Immunohistochemistry(single)']", this.m_NameSpaceManager);
            XmlNode rowMultiPlexNode        = tableNodeSS.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Immunohistochemistry(dual)']", this.m_NameSpaceManager);
            XmlNode rowCytochemicalNode     = tableNodeSS.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Cytochemical']", this.m_NameSpaceManager);
            XmlNode rowTestHeaderNode       = tableNodeSS.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Result']", this.m_NameSpaceManager);
            XmlNode rowSpecialStainNode     = tableNodeSS.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='stain_description']", this.m_NameSpaceManager);

            bool   commentSet       = false;
            string ancillaryComment = panelSetOrderSurgical.GetAncillaryStudyComment();

            if (this.m_PanelSetOrder.FinalDate.HasValue == false || this.m_PanelSetOrder.FinalDate >= DateTime.Parse("11/7/07"))
            {
                XmlNode insertAfterRowSS = rowAncillaryCommentNode;
                YellowstonePathology.Business.Test.Model.TestOrderCollection allTests = this.m_PanelSetOrder.GetTestOrders();
                foreach (SurgicalSpecimen surgicalSpecimen in panelSetOrderSurgical.SurgicalSpecimenCollection)
                {
                    YellowstonePathology.Business.Test.Model.TestOrderCollection         specimenTestCollection            = surgicalSpecimen.SpecimenOrder.GetTestOrders(allTests);
                    YellowstonePathology.Business.SpecialStain.StainResultItemCollection singleplexStainResultCollection   = surgicalSpecimen.StainResultItemCollection.GetSingleplexStains(specimenTestCollection);
                    YellowstonePathology.Business.SpecialStain.StainResultItemCollection multiplexStainResultCollection    = surgicalSpecimen.StainResultItemCollection.GetMultiplexStains(specimenTestCollection);
                    YellowstonePathology.Business.SpecialStain.StainResultItemCollection cytochemicalStainResultCollection = surgicalSpecimen.StainResultItemCollection.GetCytochemicalStains(specimenTestCollection);

                    if ((singleplexStainResultCollection.Count > 0 || multiplexStainResultCollection.Count > 0 || cytochemicalStainResultCollection.Count > 0))
                    {
                        if (commentSet == false)
                        {
                            this.SetXMLNodeParagraphData("ancillary_studies_comment", ancillaryComment);
                            commentSet = true;
                        }

                        XmlNode rowSpecimenTypeClone = rowSpecimenTypeNode.Clone();
                        string  specimenType         = surgicalSpecimen.DiagnosisId + ". " + surgicalSpecimen.SpecimenOrder.Description;
                        rowSpecimenTypeClone.SelectSingleNode("descendant::w:r[w:t='specimen_type']/w:t", this.m_NameSpaceManager).InnerText = specimenType;
                        tableNodeSS.InsertAfter(rowSpecimenTypeClone, insertAfterRowSS);
                        insertAfterRowSS = rowSpecimenTypeClone;

                        if (singleplexStainResultCollection.Count > 0)
                        {
                            insertAfterRowSS = this.SetStains(tableNodeSS, rowSinglePlexNode, rowTestHeaderNode, insertAfterRowSS, rowSpecialStainNode, surgicalSpecimen, singleplexStainResultCollection);
                        }

                        if (multiplexStainResultCollection.Count > 0)
                        {
                            insertAfterRowSS = this.SetStains(tableNodeSS, rowMultiPlexNode, rowTestHeaderNode, insertAfterRowSS, rowSpecialStainNode, surgicalSpecimen, multiplexStainResultCollection);
                        }

                        if (cytochemicalStainResultCollection.Count > 0)
                        {
                            insertAfterRowSS = this.SetStains(tableNodeSS, rowCytochemicalNode, rowTestHeaderNode, insertAfterRowSS, rowSpecialStainNode, surgicalSpecimen, cytochemicalStainResultCollection);
                        }
                    }
                }
            }

            tableNodeSS.RemoveChild(rowSpecimenTypeNode);
            tableNodeSS.RemoveChild(rowTestHeaderNode);
            tableNodeSS.RemoveChild(rowSpecialStainNode);
            tableNodeSS.RemoveChild(rowSinglePlexNode);
            tableNodeSS.RemoveChild(rowMultiPlexNode);
            tableNodeSS.RemoveChild(rowCytochemicalNode);

            if (commentSet == false)
            {
                XmlNode rowAncillaryStudiesNode = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='Ancillary Studies']", this.m_NameSpaceManager);
                mainTableNode.RemoveChild(rowAncillaryStudiesNode);
                mainTableNode.RemoveChild(rowAncillaryCommentNode);
            }

            this.SetXMLNodeParagraphData("clinical_information", this.m_AccessionOrder.ClinicalHistory);

            XmlNode rowICHeaderNode   = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='intraoperative_consultation_header']", this.m_NameSpaceManager);
            XmlNode rowICSpecimenNode = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='intraoperative_consultation_specimen']", this.m_NameSpaceManager);
            XmlNode rowICTextNode     = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='intraoperative_consultation_text']", this.m_NameSpaceManager);

            XmlNode insertAfterRowIC = rowICHeaderNode;
            int     icCount          = 0;

            this.SetXMLNodeParagraphDataNode(rowICHeaderNode, "intraoperative_consultation_header", "Intraoperative Consultation");
            foreach (SurgicalSpecimen surgicalSpecimen in panelSetOrderSurgical.SurgicalSpecimenCollection)
            {
                foreach (IntraoperativeConsultationResult icItem in surgicalSpecimen.IntraoperativeConsultationResultCollection)
                {
                    XmlNode rowICSpecimenNodeClone = rowICSpecimenNode.Clone();
                    string  specimenString         = surgicalSpecimen.DiagnosisId + ". " + surgicalSpecimen.SpecimenOrder.Description + ":";
                    this.SetXMLNodeParagraphDataNode(rowICSpecimenNodeClone, "intraoperative_consultation_specimen", specimenString);
                    mainTableNode.InsertAfter(rowICSpecimenNodeClone, insertAfterRowIC);
                    insertAfterRowIC = rowICSpecimenNodeClone;

                    XmlNode rowICTextNodeClone = rowICTextNode.Clone();
                    this.SetXMLNodeParagraphDataNode(rowICTextNodeClone, "intraoperative_consultation_text", icItem.Result);
                    mainTableNode.InsertAfter(rowICTextNodeClone, insertAfterRowIC);
                    insertAfterRowIC = rowICTextNodeClone;
                    icCount         += 1;
                }
            }

            if (icCount == 0)
            {
                mainTableNode.RemoveChild(rowICHeaderNode);
            }
            mainTableNode.RemoveChild(rowICSpecimenNode);
            mainTableNode.RemoveChild(rowICTextNode);

            XmlNode rowSpecimenDescriptionNode            = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='specimen_description']", this.m_NameSpaceManager);
            XmlNode rowFixationTypeNode                   = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='specimen_fixation_type']", this.m_NameSpaceManager);
            XmlNode rowTimeToFixationNode                 = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='time_to_fixation']", this.m_NameSpaceManager);
            XmlNode rowFixationDurationNode               = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='duration_of_fixation']", this.m_NameSpaceManager);
            XmlNode rowFixationCommentNode                = mainTableNode.SelectSingleNode("descendant::w:tr[w:tc/w:p/w:r/w:t='fixation_comment']", this.m_NameSpaceManager);
            XmlNode rowInsertSpecimenDescriptionAfterNode = rowSpecimenDescriptionNode;

            foreach (YellowstonePathology.Business.Specimen.Model.SpecimenOrder specimenOrder in this.m_AccessionOrder.SpecimenOrderCollection)
            {
                XmlNode rowSpecimenDescriptionClone = rowSpecimenDescriptionNode.Clone();
                rowSpecimenDescriptionClone.SelectSingleNode("descendant::w:r[w:t='specimen_description']/w:t", this.m_NameSpaceManager).InnerText = specimenOrder.GetSpecimenDescriptionString();

                YellowstonePathology.Business.Helper.DateTimeJoiner collectionDateTimeJoiner = new YellowstonePathology.Business.Helper.DateTimeJoiner(specimenOrder.CollectionDate.Value, specimenOrder.CollectionTime);
                rowSpecimenDescriptionClone.SelectSingleNode("descendant::w:r[w:t='date_time_collected']/w:t", this.m_NameSpaceManager).InnerText = collectionDateTimeJoiner.DisplayString;
                mainTableNode.InsertAfter(rowSpecimenDescriptionClone, rowInsertSpecimenDescriptionAfterNode);
                rowInsertSpecimenDescriptionAfterNode = rowSpecimenDescriptionClone;

                bool specimenHasERPR = this.SpecimenHasERPR(specimenOrder);
                if (specimenHasERPR == true)
                {
                    XmlNode rowFixationTypeNodeClone = rowFixationTypeNode.Clone();
                    rowFixationTypeNodeClone.SelectSingleNode("descendant::w:r[w:t='specimen_fixation_type']/w:t", this.m_NameSpaceManager).InnerText = specimenOrder.LabFixation;
                    mainTableNode.InsertAfter(rowFixationTypeNodeClone, rowInsertSpecimenDescriptionAfterNode);
                    rowInsertSpecimenDescriptionAfterNode = rowFixationTypeNodeClone;

                    XmlNode rowTimeToFixationNodeClone = rowTimeToFixationNode.Clone();
                    rowTimeToFixationNodeClone.SelectSingleNode("descendant::w:r[w:t='time_to_fixation']/w:t", this.m_NameSpaceManager).InnerText = specimenOrder.TimeToFixationHourString;
                    mainTableNode.InsertAfter(rowTimeToFixationNodeClone, rowInsertSpecimenDescriptionAfterNode);
                    rowInsertSpecimenDescriptionAfterNode = rowTimeToFixationNodeClone;

                    XmlNode rowFixationDurationNodeClone = rowFixationDurationNode.Clone();
                    rowFixationDurationNodeClone.SelectSingleNode("descendant::w:r[w:t='duration_of_fixation']/w:t", this.m_NameSpaceManager).InnerText = specimenOrder.FixationDurationString;
                    mainTableNode.InsertAfter(rowFixationDurationNodeClone, rowInsertSpecimenDescriptionAfterNode);
                    rowInsertSpecimenDescriptionAfterNode = rowFixationDurationNodeClone;

                    XmlNode rowFixationCommentNodeClone = rowFixationCommentNode.Clone();
                    rowFixationCommentNodeClone.SelectSingleNode("descendant::w:r[w:t='fixation_comment']/w:t", this.m_NameSpaceManager).InnerText = specimenOrder.FixationComment;
                    mainTableNode.InsertAfter(rowFixationCommentNodeClone, rowInsertSpecimenDescriptionAfterNode);
                    rowInsertSpecimenDescriptionAfterNode = rowFixationCommentNodeClone;
                }
            }
            mainTableNode.RemoveChild(rowSpecimenDescriptionNode);
            mainTableNode.RemoveChild(rowFixationTypeNode);
            mainTableNode.RemoveChild(rowTimeToFixationNode);
            mainTableNode.RemoveChild(rowFixationDurationNode);
            mainTableNode.RemoveChild(rowFixationCommentNode);

            this.SetXMLNodeParagraphData("gross_description", panelSetOrderSurgical.GrossX);
            this.SetXMLNodeParagraphData("client_name", this.m_AccessionOrder.ClientName);

            string finalDate = YellowstonePathology.Business.BaseData.GetShortDateString(this.m_PanelSetOrder.FinalDate) + " - " + YellowstonePathology.Business.BaseData.GetMillitaryTimeString(this.m_PanelSetOrder.FinalTime);

            this.SetXmlNodeData("final_date", finalDate);

            string immunoComment = panelSetOrderSurgical.GetImmunoComment();

            if (immunoComment.Length > 0)
            {
                this.SetXmlNodeData("immuno_comment", immunoComment);
            }
            else
            {
                this.DeleteRow("immuno_comment");
            }

            this.SetXMLNodeParagraphData("additional_testing", this.m_AccessionOrder.PanelSetOrderCollection.GetAdditionalTestingString(this.m_PanelSetOrder.ReportNo));

            this.HandleERPRStatements();

            this.SaveReport();
        }
예제 #14
0
 public virtual void Visit(YellowstonePathology.Business.SpecialStain.StainResultItemCollection stainResultCollection)
 {
 }
예제 #15
0
 public SurgicalSpecimen()
 {
     this.m_StainResultItemCollection = new YellowstonePathology.Business.SpecialStain.StainResultItemCollection();
     this.m_IntraoperativeConsultationResultCollection = new IntraoperativeConsultationResultCollection();
     this.m_ICD9BillingCodeCollection = new YellowstonePathology.Business.Billing.ICD9BillingCodeCollection();
 }
예제 #16
0
 public YellowstonePathology.Business.SpecialStain.StainResultItemCollection GetAllStains()
 {
     YellowstonePathology.Business.SpecialStain.StainResultItemCollection result = new YellowstonePathology.Business.SpecialStain.StainResultItemCollection();
     foreach (SurgicalSpecimen surgicalSpecimen in this.m_SurgicalSpecimenCollection)
     {
         foreach (YellowstonePathology.Business.SpecialStain.StainResultItem stainResultItem in surgicalSpecimen.StainResultItemCollection)
         {
             result.Add(stainResultItem);
         }
     }
     return result;
 }
예제 #17
0
        public static StainSpecimenCollection GetCollection(YellowstonePathology.Business.Test.AccessionOrder accessionOrder, string reportNo)
        {
            StainSpecimenCollection result = new StainSpecimenCollection();

            YellowstonePathology.Business.Test.PanelSetOrder panelSetOrder = accessionOrder.PanelSetOrderCollection.GetPanelSetOrder(reportNo);
            foreach (YellowstonePathology.Business.Specimen.Model.SpecimenOrder specimenOrder in accessionOrder.SpecimenOrderCollection)
            {
                YellowstonePathology.Business.Test.Model.TestOrderCollection testOrderCollection = panelSetOrder.GetTestOrderCollection(specimenOrder.AliquotOrderCollection);

                if (panelSetOrder.PanelSetId == 13)
                {
                    YellowstonePathology.Business.Test.Surgical.SurgicalTestOrder panelSetOrderSurgical = (YellowstonePathology.Business.Test.Surgical.SurgicalTestOrder)panelSetOrder;
                    YellowstonePathology.Business.Test.Surgical.SurgicalSpecimen  surgicalSpecimen      = panelSetOrderSurgical.SurgicalSpecimenCollection.GetBySpecimenOrderId(specimenOrder.SpecimenOrderId);
                    if (surgicalSpecimen != null)
                    {
                        YellowstonePathology.Business.SpecialStain.StainResultItemCollection stainResultCollection = surgicalSpecimen.StainResultItemCollection;
                        SurgicalStainSpecimen surgicalStainSpecimen = new SurgicalStainSpecimen(specimenOrder, testOrderCollection, stainResultCollection);
                        result.Add(surgicalStainSpecimen);
                    }
                }
                else
                {
                    if (panelSetOrder is YellowstonePathology.Business.Test.LynchSyndrome.PanelSetOrderLynchSyndromeEvaluation)
                    {
                        if (result.HasLSEIHCSpecimen() == false)
                        {
                            LSEIHCStainSpecimen lseIHCStainSpecimen = new LSEIHCStainSpecimen();
                            result.Add(lseIHCStainSpecimen);
                        }
                    }
                    else
                    {
                        StainSpecimen stainSpecimen = new StainSpecimen(specimenOrder, testOrderCollection);
                        result.Add(stainSpecimen);
                    }
                }
            }
            return(result);
        }
예제 #18
0
 public SurgicalSpecimen()
 {
     this.m_StainResultItemCollection = new YellowstonePathology.Business.SpecialStain.StainResultItemCollection();
     this.m_IntraoperativeConsultationResultCollection = new IntraoperativeConsultationResultCollection();
     this.m_ICD9BillingCodeCollection = new YellowstonePathology.Business.Billing.ICD9BillingCodeCollection();
 }