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); }
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); }