예제 #1
0
        public bool UpdateEmrNote(int series, NoteStatus noteStatus, ref NoteStatus noteStatusEnd, bool CommitFlag)
        {
            noteStatusEnd = noteStatus;
            /* Confirm the note exists. */
            XmlNode emrNote = GetEmrNoteBySeries(series);

            if (emrNote == null)
            {
                return(Return.Failed);
            }


            /* word window to word document */
            string tmpfile = Path.Combine(Globals.currentDirectory, ResourceName.Mytmp);

            //udt.jj.SaveWordDoc(ThisAddIn.Application.ActiveDocument, tmpfile, false);

            #region Update the emrDocument in dadabase
            /* Package the word document into a xml elelement. */
            XmlNode noteDoc = emrDoc.CreateElement(ElementNames.EmrNote);
            noteDoc.InnerText = udt.jj.WordDocumentToString(tmpfile);
            string registryID = emrDoc.DocumentElement.GetAttribute(AttributeNames.RegistryID);
            /* Update the dadabase. */
            if (!Globals.offline)
            {
                using (gjtEmrService.emrServiceXml es = new gjtEmrService.emrServiceXml())
                {
                    try
                    {
                        string strResult = es.IsEnabledCommit(registryID, series);

                        if (strResult == "0")
                        {
                            noteStatusEnd = NoteStatus.Draft;
                            if (CommitFlag == true)
                            {
                                MessageBox.Show("已经超时提交过的文档不能再次提交,请与质管部门联系!", ErrorMessage.Warning, MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
                            }
                        }
                        else
                        {
                            emrNote.Attributes["NoteStatus"].Value = (Convert.ToInt32(noteStatusEnd)).ToString();

                            if ((Convert.ToInt32(noteStatusEnd)).ToString() == "1" && ThisAddIn.CanOption(ElementNames.CommitTime))
                            {
                                if (emrNote.Attributes["fanxiu"] == null || emrNote.Attributes["fanxiu"].Value == "No")
                                {
                                    emrNote.Attributes[AttributeNames.WrittenDate].Value = ThisAddIn.Today().ToString();
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Globals.logAdapter.Record("EX741852968", ex.Message + ">>" + ex.ToString(), true);
                    }
                }
                if (ThisAddIn.UpdateOneEmrNote(registryID, emrNote, noteDoc) ==
                    Return.Failed)
                {
                    return(Return.Failed);
                }
            }
            else
            {
                OpDone opDone = new OpDone("离线,寄存失败!");
                opDone.Show();
                return(Return.Failed);
            }
            #endregion

            #region Update the local storage

            string noteID    = emrNote.Attributes[AttributeNames.NoteID].Value;
            string wdDocName = udt.MakeWdDocumentFileName(registryID, noteID, series, Globals.workFolder);
            File.Copy(tmpfile, wdDocName, true);
            if (Globals.localDocumentEncode)
            {
                udt.jj.EncodeEmrDocument(wdDocName);
            }

            string LastWriteTime = ThisAddIn.Today().ToFileTime().ToString();
            emrNote.Attributes[AttributeNames.NoteStatus].Value    = noteStatus.ToString("d");
            emrNote.Attributes[AttributeNames.LastWriteTime].Value = LastWriteTime;
            emrDoc.DocumentElement.SetAttribute(AttributeNames.LastWriteTime, LastWriteTime);
            emrDoc.Save(emrDocFile);
            udt.jj.EncodeEmrDocument(emrDocFile);
            #endregion

            return(Return.Successful);
        }
예제 #2
0
        public int AddEmrNote(XmlNode notePattern, XmlElement emrNote, NoteStatus status, bool sexOption, XmlNode wordXml)
        {
            int    series     = -1;
            string registryID = emrDoc.DocumentElement.GetAttribute(AttributeNames.RegistryID);
            string noteID     = notePattern.Attributes[AttributeNames.NoteID].Value;

            #region Set attributes for emr note
            string sequence = null;
            #region Treat attribute StartTime
            switch (notePattern.Attributes[AttributeNames.StartTime].Value)
            {
            case StartTime.Routine:
                if (Globals.offline)
                {
                    emrNote.SetAttribute(AttributeNames.Start, ThisAddIn.Today().ToString());
                }
                else
                {
                    emrNote.SetAttribute(AttributeNames.Start,
                                         ThisAddIn.LastDegreeOrderTime(registryID).ToString());
                }
                break;

            case StartTime.Operation:
                sequence = OperationSequence(registryID, noteID);
                if (sequence == null)
                {
                    return(series);
                }
                emrNote.SetAttribute(AttributeNames.Sequence, sequence);
                break;

            case StartTime.Rescued:
                sequence = RescueSequence(registryID, noteID);
                if (sequence == null)
                {
                    return(series);
                }
                emrNote.SetAttribute(AttributeNames.RescueSequence, sequence);
                break;

            case StartTime.TransferIn:
                sequence = TransferInSequence(registryID, noteID);
                if (sequence == null)
                {
                    return(series);
                }
                emrNote.SetAttribute(AttributeNames.TransferInSequence, sequence);
                break;

            case StartTime.TransferOut:
                sequence = TransferOutSequence(registryID, noteID);
                if (sequence == null)
                {
                    return(series);
                }
                emrNote.SetAttribute(AttributeNames.TransferOutSequence, sequence);
                break;

            case StartTime.TakeOver:
                sequence = TakeoverSequence(registryID, noteID);
                if (sequence == null)
                {
                    return(series);
                }
                emrNote.SetAttribute(AttributeNames.TakeOverSequence, sequence);
                break;

            case StartTime.Consult:
                sequence = ConsultSequence(registryID, noteID);
                if (sequence == null)
                {
                    //  MessageBox.Show("此次会诊记录已经书写完成!");
                    return(series);
                }
                emrNote.SetAttribute(AttributeNames.Sequence, sequence);
                break;
            }
            #endregion

            int sign = 0;
            //try
            //{
            //    foreach (Microsoft.Office.Interop.Word.XMLNode xn in ActiveDocumentManager.getDefaultAD().XMLNodes)
            //    {

            //        if (xn.BaseName == "电子病历")
            //        {
            //            for (int i = 1; i <= xn.ChildNodes.Count; i++)
            //            {

            //                if (xn.ChildNodes[i].Text == null) continue;
            //                if (xn.ChildNodes[i].BaseName == "医护签名")
            //                {
            //                    sign = xn.ChildNodes[i].ChildNodes.Count;
            //                    break;
            //                }
            //            }
            //        }
            //        else break;
            //    }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show(ex.Message, "EmrDocument 的317行");
            //}

            emrNote.SetAttribute(AttributeNames.NoteID, noteID);
            emrNote.SetAttribute(AttributeNames.NoteName, notePattern.Attributes[AttributeNames.NoteName].Value);
            emrNote.SetAttribute(AttributeNames.Header, notePattern.Attributes[AttributeNames.Header].Value);
            emrNote.SetAttribute(AttributeNames.Unique, notePattern.Attributes[AttributeNames.Unique].Value);
            emrNote.SetAttribute(AttributeNames.NoteStatus, status.ToString("d"));
            emrNote.SetAttribute(AttributeNames.WriterID, Globals.DoctorID);
            emrNote.SetAttribute(AttributeNames.Writer, Globals.DoctorName);


            DateTime now = ThisAddIn.Today();
            /* because allow the operator to choose commit time */
            emrNote.SetAttribute(AttributeNames.CheckerID, "");
            emrNote.SetAttribute(AttributeNames.Checker, "");
            emrNote.SetAttribute(AttributeNames.CheckedDate, "");
            emrNote.SetAttribute(AttributeNames.FinalCheckerID, "");
            emrNote.SetAttribute(AttributeNames.FinalChecker, "");
            emrNote.SetAttribute(AttributeNames.FinalCheckedDate, "");
            emrNote.SetAttribute("sign", sign.ToString());
            /* 2007-07-11 add sign lables */
            if (notePattern.Attributes[AttributeNames.Sign1] != null)
            {
                emrNote.SetAttribute(AttributeNames.Sign1, notePattern.Attributes[AttributeNames.Sign1].Value);
            }
            if (notePattern.Attributes[AttributeNames.Sign2] != null)
            {
                emrNote.SetAttribute(AttributeNames.Sign2, notePattern.Attributes[AttributeNames.Sign2].Value);
            }
            if (notePattern.Attributes[AttributeNames.Sign3] != null)
            {
                emrNote.SetAttribute(AttributeNames.Sign3, notePattern.Attributes[AttributeNames.Sign3].Value);
            }

            emrNote.SetAttribute(AttributeNames.LastWriteTime, now.ToFileTime().ToString());
            /*  add merge property */
            emrNote.SetAttribute(AttributeNames.Merge, notePattern.Attributes[AttributeNames.Merge].Value);
            emrNote.SetAttribute(AttributeNames.StartTime, notePattern.Attributes[AttributeNames.StartTime].Value);
            /* add sex feature for it to be as a template */
            if (sexOption)
            {
                emrNote.SetAttribute(AttributeNames.Sex, StringGeneral.Yes);
            }
            else
            {
                emrNote.SetAttribute(AttributeNames.Sex, StringGeneral.No);
            }

            if (emrNote.Attributes[AttributeNames.SingleContinue] == null)
            {
                XmlAttribute newAttribute = emrNote.OwnerDocument.CreateAttribute(AttributeNames.SingleContinue);
                emrNote.Attributes.Append(newAttribute);
            }
            if (notePattern.Attributes[AttributeNames.SingleContinue] != null)
            {
                emrNote.SetAttribute(AttributeNames.SingleContinue, notePattern.Attributes[AttributeNames.SingleContinue].Value);
            }
            else
            {
                emrNote.SetAttribute(AttributeNames.SingleContinue, "no");
            }
            /*----------------------------------------------------------------------------*/

            /* Make a new series as unique id for the EmrNote. */
            #endregion

            /* word window to word document */
            //string tmpfile = Path.GetFullPath("病程记录.dotx");
            string tmpfile = Path.Combine(Globals.currentDirectory, ResourceName.Mytmp);
            //udt.jj.SaveWordDoc(ThisAddIn.Application.ActiveDocument, tmpfile, false);

            #region Save document into database
            if (!Globals.offline)
            {
                XmlElement noteDoc = emrDoc.CreateElement(ElementNames.EmrNote);
                noteDoc.InnerText = udt.jj.WordDocumentToString(tmpfile);
                emrNote.SetAttribute(AttributeNames.Series, "0");
                series = ThisAddIn.NewOneEmrNote(registryID, archiveNum, emrNote, noteDoc, wordXml);
                if (series < 0)
                {
                    return(series);
                }
            }
            else
            {
                series = Convert.ToInt32(emrDoc.DocumentElement.GetAttribute(AttributeNames.Series)) + 1;
                return(-100);
            }

            #endregion

            #region Save document into local storage
            string wdDocName = udt.MakeWdDocumentFileName(registryID, noteID, series, Globals.workFolder);
            File.Copy(tmpfile, wdDocName, true);
            if (Globals.localDocumentEncode)
            {
                udt.jj.EncodeEmrDocument(wdDocName);
            }

            emrNote.SetAttribute(AttributeNames.Series, series.ToString("d"));
            emrDoc.DocumentElement.AppendChild(emrNote);
            emrDoc.DocumentElement.SetAttribute(AttributeNames.LastWriteTime, now.ToFileTime().ToString());
            emrDoc.DocumentElement.SetAttribute(AttributeNames.Series, series.ToString("d"));
            emrDoc.Save(emrDocFile);
            udt.jj.EncodeEmrDocument(emrDocFile);
            #endregion

            return(series);
        }