Merge branch 'release-2.1.0'
							
								
								
									
										12
									
								
								HISTORY.md
									
									
									
									
									
								
							
							
						
						@@ -1,3 +1,15 @@
 | 
				
			|||||||
 | 
					Version 2.1.0 (2015-09-06)
 | 
				
			||||||
 | 
					========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- NEU: Optionale Kommentare zu Laborwerten.
 | 
				
			||||||
 | 
					- NEU: Sekretariatsmodus (siehe 'Einstellungen'), um die Nachfrage nach Zusatz-Kommentaren zu unterdrücken.
 | 
				
			||||||
 | 
					- NEU: Wenn kein Text markiert ist, wird ein Versuch unternommen, die Labordaten im Arztbrief automatisch zu erkennen; dabei wird der erste erkannte Lauris-Laborblock formatiert.
 | 
				
			||||||
 | 
					- VERBESSERT: Bug in der Markierung von speziellen Parametern, um immer Referenzbereiche auszugeben.
 | 
				
			||||||
 | 
					- VERBESSERT: Kein Absturz mehr, wenn Labordaten NT-proBNP enthalten.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Version 2.0.1 (2015-09-02)
 | 
					Version 2.0.1 (2015-09-02)
 | 
				
			||||||
========================================================================
 | 
					========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						@@ -23,6 +23,28 @@ typischerweise so aussieht:
 | 
				
			|||||||
Und so weiter, es gibt noch mehr Variationen.
 | 
					Und so weiter, es gibt noch mehr Variationen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Quellcode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zaaReloaded2 ist in C# mit VSTO geschrieben, unter Zuhilfenahme von
 | 
				
			||||||
 | 
					Visual Studio Professional 2013. Der Quellcode liegt in einem öffentlich
 | 
				
			||||||
 | 
					zugänglichen Git-Repository:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<http://git.bovender.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Clonen:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    git clone http://git.bovender.de/zaaReloaded2.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Schreibzugriff auf git.bovender.de gibt es nur per SSH...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Die Visual-Studio-Lösung läßt sich direkt nach dem Clonen nicht bauen,
 | 
				
			||||||
 | 
					weil die Strong-Key-Datei `./zaaReloaded2/zaaReloaded2.pfx` nur ein
 | 
				
			||||||
 | 
					symbolischer Link ist auf eine Datei außerhalb des Repositoriums, damit
 | 
				
			||||||
 | 
					der Schüssel nicht öffentlich preisgegeben wird. Also einfach selber
 | 
				
			||||||
 | 
					eine PFX-Datei generieren, oder in den Projekteinstellungen das
 | 
				
			||||||
 | 
					Signieren ausschalten.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Programmteile
 | 
					## Programmteile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Im Sinne einer _separation of concerns_ ist die Programmlogik in
 | 
					Im Sinne einer _separation of concerns_ ist die Programmlogik in
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										60
									
								
								Tests/Controller/Comments/CommentPoolTest.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					/* CommentPoolTest.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using NUnit.Framework;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests.Controller.Comments
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [TestFixture]
 | 
				
			||||||
 | 
					    class CommentPoolTest
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void CreateCommentIfDoesNotExist()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int n = CommentPool.Default.Count;
 | 
				
			||||||
 | 
					            ItemComment i = CommentPool.Default.GetCommentFor("item \"<>\"");
 | 
				
			||||||
 | 
					            Assert.AreEqual(n + 1, CommentPool.Default.Count);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void ReturnExistingComment()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment i = CommentPool.Default.GetCommentFor("item \"<>\"");
 | 
				
			||||||
 | 
					            int n = CommentPool.Default.Count;
 | 
				
			||||||
 | 
					            i = CommentPool.Default.GetCommentFor("item \"<>\"");
 | 
				
			||||||
 | 
					            Assert.AreEqual(n, CommentPool.Default.Count);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void BuildingCommentRaisesEvent()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment i = CommentPool.Default.GetCommentFor("item \"<>\"");
 | 
				
			||||||
 | 
					            int eventRaised = 0;
 | 
				
			||||||
 | 
					            CommentPool.Default.FillInComment += (sender, args) =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                eventRaised += 1;
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            string comment = i.BuildComment();
 | 
				
			||||||
 | 
					            Assert.AreEqual(1, eventRaised);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										58
									
								
								Tests/Controller/Comments/ItemCommentTest.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/* ItemCommentTest.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using NUnit.Framework;
 | 
				
			||||||
 | 
					using zaaReloaded2.Formatter;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests.Controller.Comments
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [TestFixture]
 | 
				
			||||||
 | 
					    class ItemCommentTest
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void FactoryWithGoodDefinition()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment i = ItemComment.FromDefinitionString("TAC \"(Zielbereich: <4-7> µg/l)\"");
 | 
				
			||||||
 | 
					            Assert.IsNotNull(i);
 | 
				
			||||||
 | 
					            Assert.AreEqual("(Zielbereich: ", i.Prefix);
 | 
				
			||||||
 | 
					            Assert.AreEqual("4-7", i.Value);
 | 
				
			||||||
 | 
					            Assert.AreEqual(" µg/l)", i.Suffix);
 | 
				
			||||||
 | 
					            Assert.AreEqual("TAC", i.Item);
 | 
				
			||||||
 | 
					            Assert.AreEqual("(Zielbereich: 4-7 µg/l)", i.BuildComment());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void FactoryWithBadDefinition()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment i = ItemComment.FromDefinitionString("some bogus definition");
 | 
				
			||||||
 | 
					            Assert.IsNull(i);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void EmptyValueProducesEmptyComment()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment i = ItemComment.FromDefinitionString("TAC \"(Zielbereich: <default> µg/l)\"");
 | 
				
			||||||
 | 
					            i.Value = String.Empty;
 | 
				
			||||||
 | 
					            Assert.AreEqual(String.Empty, i.BuildComment());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -16,14 +16,12 @@
 | 
				
			|||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Text;
 | 
					 | 
				
			||||||
using NUnit.Framework;
 | 
					using NUnit.Framework;
 | 
				
			||||||
using Microsoft.Office.Interop.Word;
 | 
					using Microsoft.Office.Interop.Word;
 | 
				
			||||||
using zaaReloaded2.LabModel;
 | 
					using zaaReloaded2.LabModel;
 | 
				
			||||||
using zaaReloaded2.Formatter;
 | 
					using zaaReloaded2.Formatter;
 | 
				
			||||||
using zaa = zaaReloaded2.Controller.Elements;
 | 
					using zaa = zaaReloaded2.Controller.Elements;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
using System.Text.RegularExpressions;
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Tests.Controller.Elements
 | 
					namespace Tests.Controller.Elements
 | 
				
			||||||
@@ -152,7 +150,7 @@ namespace Tests.Controller.Elements
 | 
				
			|||||||
                StripMarkup(
 | 
					                StripMarkup(
 | 
				
			||||||
                    TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
 | 
					                    TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
 | 
				
			||||||
                )+
 | 
					                )+
 | 
				
			||||||
                "Klinische Chemie: Na 133, SU-Protein 2,8\r\r").Replace(Environment.NewLine, "\r");
 | 
					                "Klinische Chemie: Na 133, SU-Protein 3\r\r").Replace(Environment.NewLine, "\r");
 | 
				
			||||||
            Assert.AreEqual(expected, _document.Range().Text);
 | 
					            Assert.AreEqual(expected, _document.Range().Text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -176,11 +174,63 @@ namespace Tests.Controller.Elements
 | 
				
			|||||||
                StripMarkup(
 | 
					                StripMarkup(
 | 
				
			||||||
                    TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
 | 
					                    TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00))
 | 
				
			||||||
                ) +
 | 
					                ) +
 | 
				
			||||||
                "Klinische Chemie: Na 133, SU-Protein 2,8, Cl 110, U-Na 99\r\r")
 | 
					                "Klinische Chemie: Na 133, SU-Protein 3, Cl 110, U-Na 99\r\r")
 | 
				
			||||||
                .Replace(Environment.NewLine, "\r");
 | 
					                .Replace(Environment.NewLine, "\r");
 | 
				
			||||||
            Assert.AreEqual(expected, _document.Range().Text);
 | 
					            Assert.AreEqual(expected, _document.Range().Text);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void ItemCommentWithoutHandler()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            CommentPool.Default.Reset();
 | 
				
			||||||
 | 
					            Laboratory lab = new Laboratory();
 | 
				
			||||||
 | 
					            TimePoint tp = new TimePoint();
 | 
				
			||||||
 | 
					            tp.TimeStamp = new DateTime(2015, 7, 13, 13, 31, 00);
 | 
				
			||||||
 | 
					            tp.AddItem(new LabItem("Na", "133", "133"));
 | 
				
			||||||
 | 
					            tp.AddItem(new LabItem("K", "6", "5"));
 | 
				
			||||||
 | 
					            lab.AddTimePoint(tp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            _formatter.Laboratory = lab;
 | 
				
			||||||
 | 
					            _formatter.Settings.Elements.Add(
 | 
				
			||||||
 | 
					                new zaa.Items("Na \"(Zielbereich: <> mmol/l)\""));
 | 
				
			||||||
 | 
					            _formatter.Run();
 | 
				
			||||||
 | 
					            string expected = (
 | 
				
			||||||
 | 
					                StripMarkup(
 | 
				
			||||||
 | 
					                    TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
 | 
				
			||||||
 | 
					                    "Na 133\r\r").Replace(Environment.NewLine, "\r")
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            Assert.AreEqual(expected, _document.Range().Text);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void ItemCommentWithHandler()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Laboratory lab = new Laboratory();
 | 
				
			||||||
 | 
					            TimePoint tp = new TimePoint();
 | 
				
			||||||
 | 
					            tp.TimeStamp = new DateTime(2015, 7, 13, 13, 31, 00);
 | 
				
			||||||
 | 
					            tp.AddItem(new LabItem("Na", "133", "133"));
 | 
				
			||||||
 | 
					            tp.AddItem(new LabItem("K", "6", "5"));
 | 
				
			||||||
 | 
					            lab.AddTimePoint(tp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            _formatter.Laboratory = lab;
 | 
				
			||||||
 | 
					            _formatter.Settings.Elements.Add(
 | 
				
			||||||
 | 
					                new zaa.Items("Na \"(Zielbereich: <default> µg/l)\""));
 | 
				
			||||||
 | 
					            bool messageSent = false;
 | 
				
			||||||
 | 
					            CommentPool.Default.FillInComment += (sender, args) =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                messageSent = true;
 | 
				
			||||||
 | 
					                args.Comment.Value = "4-7";
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            _formatter.Run();
 | 
				
			||||||
 | 
					            Assert.IsTrue(messageSent, "FillInComment message was not sent");
 | 
				
			||||||
 | 
					            string expected = (
 | 
				
			||||||
 | 
					                StripMarkup(
 | 
				
			||||||
 | 
					                    TimePointFormatter.DateAndTimeHeader(new DateTime(2015, 07, 13, 13, 31, 00)) +
 | 
				
			||||||
 | 
					                    "Na 133 (Zielbereich: 4-7 µg/l)\r\r").Replace(Environment.NewLine, "\r")
 | 
				
			||||||
 | 
					                );
 | 
				
			||||||
 | 
					            Assert.AreEqual(expected, _document.Range().Text);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        static string StripMarkup(string s)
 | 
					        static string StripMarkup(string s)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return _markupStripper.Replace(s, string.Empty);
 | 
					            return _markupStripper.Replace(s, string.Empty);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
 | 
					Laborwerte vom 04.07.2015 12:31:00:
 | 
				
			||||||
Laborwerte vom 04.07.2015 12:31:00:
 | 
					 | 
				
			||||||
Klinische Chemie: Na 144 mM, K 4,3 mM
 | 
					Klinische Chemie: Na 144 mM, K 4,3 mM
 | 
				
			||||||
 | 
					 | 
				
			||||||
Laborwerte vom 06.07.2015 10:28:00:
 | 
					Laborwerte vom 06.07.2015 10:28:00:
 | 
				
			||||||
Klinische Chemie: Na 138 mM, K 4,6 mM
 | 
					Klinische Chemie: Na 138 mM, K 4,6 mM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
 | 
					Laborwerte vom 04.07.2015:
 | 
				
			||||||
Laborwerte vom 04.07.2015:
 | 
					 | 
				
			||||||
Klinische Chemie: Na 144 mM, K 4,3 mM
 | 
					Klinische Chemie: Na 144 mM, K 4,3 mM
 | 
				
			||||||
 | 
					 | 
				
			||||||
Laborwerte vom 06.07.2015:
 | 
					Laborwerte vom 06.07.2015:
 | 
				
			||||||
Klinische Chemie: Na 138 mM, K 4,6 mM
 | 
					Klinische Chemie: Na 138 mM, K 4,6 mM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					Laborwerte vom 04.07.2015:
 | 
				
			||||||
Laborwerte vom 04.07.2015:
 | 
					 | 
				
			||||||
Klinische Chemie: Na 144 mM, K 4,3 mM
 | 
					Klinische Chemie: Na 144 mM, K 4,3 mM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					Laborwerte vom 06.07.2015:
 | 
				
			||||||
Laborwerte vom 06.07.2015:
 | 
					 | 
				
			||||||
Klinische Chemie: Na 138 mM, K 4,6 mM
 | 
					Klinische Chemie: Na 138 mM, K 4,6 mM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,6 +86,7 @@ namespace Tests.Importer.ZaaImporter
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        [TestCase("Niedermol. Heparin (Anti-Xa): 0.99 U/ml;", "Niedermol. Heparin (Anti-Xa)", 0.99, "U/ml")]
 | 
					        [TestCase("Niedermol. Heparin (Anti-Xa): 0.99 U/ml;", "Niedermol. Heparin (Anti-Xa)", 0.99, "U/ml")]
 | 
				
			||||||
        [TestCase("glomerul. Filtrationsr. CKD-EP: 42 ml/min /1,73qm;", "glomerul. Filtrationsr. CKD-EP", 42, "ml/min /1,73qm")]
 | 
					        [TestCase("glomerul. Filtrationsr. CKD-EP: 42 ml/min /1,73qm;", "glomerul. Filtrationsr. CKD-EP", 42, "ml/min /1,73qm")]
 | 
				
			||||||
 | 
					        [TestCase("NT-proBNP: 598 [s. Bem.] pg/ml;", "NT-proBNP", 598, "pg/ml")]
 | 
				
			||||||
        public void ParseLaurisWithoutLimits(
 | 
					        public void ParseLaurisWithoutLimits(
 | 
				
			||||||
            string laurisString, string name, double value,
 | 
					            string laurisString, string name, double value,
 | 
				
			||||||
            string unit)
 | 
					            string unit)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,10 +80,13 @@
 | 
				
			|||||||
    </Otherwise>
 | 
					    </Otherwise>
 | 
				
			||||||
  </Choose>
 | 
					  </Choose>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="Controller\Comments\CommentPoolTest.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Controller\Comments\ItemCommentTest.cs" />
 | 
				
			||||||
    <Compile Include="SerializationTest.cs" />
 | 
					    <Compile Include="SerializationTest.cs" />
 | 
				
			||||||
    <Compile Include="Controller\SettingsRepositoryTest.cs" />
 | 
					    <Compile Include="Controller\SettingsRepositoryTest.cs" />
 | 
				
			||||||
    <Compile Include="Controller\SettingsTest.cs" />
 | 
					    <Compile Include="Controller\SettingsTest.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\DocumentWriterTest.cs" />
 | 
					    <Compile Include="Formatter\DocumentWriterTest.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Thesaurus\ParametersTest.cs" />
 | 
				
			||||||
    <Compile Include="Thesaurus\ThesaurusTest.cs" />
 | 
					    <Compile Include="Thesaurus\ThesaurusTest.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\ItemsTest.cs" />
 | 
					    <Compile Include="Controller\Elements\ItemsTest.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\FormatterTest.cs" />
 | 
					    <Compile Include="Formatter\FormatterTest.cs" />
 | 
				
			||||||
@@ -96,6 +99,7 @@
 | 
				
			|||||||
    <Compile Include="Importer\ZaaImporter\TimePointTest.cs" />
 | 
					    <Compile Include="Importer\ZaaImporter\TimePointTest.cs" />
 | 
				
			||||||
    <Compile Include="TestHelpers.cs" />
 | 
					    <Compile Include="TestHelpers.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\ElementPickerViewModelTest.cs" />
 | 
					    <Compile Include="ViewModels\ElementPickerViewModelTest.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="ViewModels\ItemCommentViewModelTest.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\SettingsRepositoryViewModelTest.cs" />
 | 
					    <Compile Include="ViewModels\SettingsRepositoryViewModelTest.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\SettingsViewModelTest.cs" />
 | 
					    <Compile Include="ViewModels\SettingsViewModelTest.cs" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										56
									
								
								Tests/Thesaurus/ParametersTest.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					/* ParametersTest.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using NUnit.Framework;
 | 
				
			||||||
 | 
					using zaaReloaded2.Thesaurus;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests.Thesaurus
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [TestFixture]
 | 
				
			||||||
 | 
					    class ParametersTest
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void GetCanonicalName()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Assert.AreEqual("CRP",
 | 
				
			||||||
 | 
					                Parameters.Default.GetCanonicalName("C-reaktives Protein"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void GetPrecision()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Assert.AreEqual(1,
 | 
				
			||||||
 | 
					                Parameters.Default.GetPrecision("Creatinin"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void GetForceReferenceDisplay()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Assert.IsTrue(Parameters.Default.GetForceReferenceDisplay("Magnesium"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void GetIsBlacklisted()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Assert.IsTrue(Parameters.Default.GetIsBlacklisted("glomerul. Filtrationsr. (MDRD)"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										42
									
								
								Tests/ViewModels/ItemCommentViewModelTest.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					/* ItemCommentViewModelTest.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using NUnit.Framework;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					using zaaReloaded2.ViewModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Tests.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [TestFixture]
 | 
				
			||||||
 | 
					    class ItemCommentViewModelTest
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        [Test]
 | 
				
			||||||
 | 
					        public void Properties()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment comment = new ItemComment("item", "pre", "val", "suf");
 | 
				
			||||||
 | 
					            ItemCommentViewModel vm = new ItemCommentViewModel(comment);
 | 
				
			||||||
 | 
					            Assert.AreEqual(comment.Item, vm.Item);
 | 
				
			||||||
 | 
					            Assert.AreEqual(comment.Prefix, vm.Prefix);
 | 
				
			||||||
 | 
					            Assert.AreEqual(comment.Suffix, vm.Suffix);
 | 
				
			||||||
 | 
					            Assert.AreEqual(comment.Value, vm.Value);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								www/img/firstrun.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 21 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								www/img/itemcomment.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 10 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								www/img/itemcommentresult.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 23 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								www/img/itemcommentview.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								www/img/preferences.png
									
									
									
									
									
										Executable file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								www/img/ribbon.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 6.6 KiB  | 
							
								
								
									
										391
									
								
								www/index.html
									
									
									
									
									
								
							
							
						
						@@ -10,6 +10,10 @@
 | 
				
			|||||||
  <link href="css/bootstrap.min.css" rel="stylesheet">
 | 
					  <link href="css/bootstrap.min.css" rel="stylesheet">
 | 
				
			||||||
  <link href="css/jumbotron-narrow.css" rel="stylesheet">
 | 
					  <link href="css/jumbotron-narrow.css" rel="stylesheet">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <style>
 | 
				
			||||||
 | 
					    h5 { font-weight:bold; }
 | 
				
			||||||
 | 
					  </style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
 | 
					  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
 | 
				
			||||||
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
 | 
					  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
 | 
				
			||||||
  <!--[if lt IE 9]>
 | 
					  <!--[if lt IE 9]>
 | 
				
			||||||
@@ -22,15 +26,30 @@
 | 
				
			|||||||
    das die Zentrale Arztbriefablage um Funktionen für das Formatieren von
 | 
					    das die Zentrale Arztbriefablage um Funktionen für das Formatieren von
 | 
				
			||||||
    Laborwerten erweitert.">
 | 
					    Laborwerten erweitert.">
 | 
				
			||||||
  <link rel="icon" type="image/png" href="img/icon.png">
 | 
					  <link rel="icon" type="image/png" href="img/icon.png">
 | 
				
			||||||
 | 
					  <style>
 | 
				
			||||||
 | 
					    floatbox {
 | 
				
			||||||
 | 
					      padding: 0;
 | 
				
			||||||
 | 
					      margin: 0 0.5em;   
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  </style>
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
<body>
 | 
					<body>
 | 
				
			||||||
  <div class="container">
 | 
					  <div class="container">
 | 
				
			||||||
    <div class="header clearfix">
 | 
					    <div class="header clearfix">
 | 
				
			||||||
      <nav>
 | 
					      <nav>
 | 
				
			||||||
        <ul class="nav nav-pills pull-right">
 | 
					        <ul class="nav nav-pills pull-right">
 | 
				
			||||||
 | 
					          <li>
 | 
				
			||||||
 | 
					            <a href="#anleitung">Anleitung</a>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li>
 | 
				
			||||||
 | 
					            <a href="#anpassen">Anpassen</a>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
          <li>
 | 
					          <li>
 | 
				
			||||||
            <a href="downloads/">Download</a>
 | 
					            <a href="downloads/">Download</a>
 | 
				
			||||||
          </li>
 | 
					          </li>
 | 
				
			||||||
 | 
					          <li>
 | 
				
			||||||
 | 
					            <a href="http://git.bovender.de">Code</a>
 | 
				
			||||||
 | 
					          </li>
 | 
				
			||||||
          <li>
 | 
					          <li>
 | 
				
			||||||
            <a href="doc/">Code Docs</a>
 | 
					            <a href="doc/">Code Docs</a>
 | 
				
			||||||
          </li>
 | 
					          </li>
 | 
				
			||||||
@@ -55,61 +74,134 @@
 | 
				
			|||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="row">
 | 
					 | 
				
			||||||
      <div class="col-md-6">
 | 
					 | 
				
			||||||
        <div class="panel panel-default">
 | 
					 | 
				
			||||||
          <div class="panel-heading">
 | 
					 | 
				
			||||||
            <h2 class="panel-title">Vorher</h2>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <div class="panel-body">
 | 
					 | 
				
			||||||
            <img class="img-responsive center-block" src="img/vorher.png" alt="Vorher">
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
      <div class="col-md-6">
 | 
					 | 
				
			||||||
        <div class="panel panel-default">
 | 
					 | 
				
			||||||
          <div class="panel-heading">
 | 
					 | 
				
			||||||
            <h2 class="panel-title">Nachher</h2>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <div class="panel-body">
 | 
					 | 
				
			||||||
            <img class="img-responsive center-block" src="img/nachher.png" alt="Nachher">
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <div class="panel-footer">
 | 
					 | 
				
			||||||
            <p>Am Beispiel des Ambulanz-Stils</p>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <div class="row">
 | 
					    <div class="row">
 | 
				
			||||||
      <div class="col-md-12">
 | 
					      <div class="col-md-12">
 | 
				
			||||||
        <div class="clearfix">
 | 
					        <div class="clearfix">
 | 
				
			||||||
          <h2 class="page-header">
 | 
					          <h2 class="page-header" id="anleitung">
 | 
				
			||||||
            <img class="pull-right img-responsive" src="img/ribbon.png" alt="zaaReloaded2-Ribbon" />
 | 
					 | 
				
			||||||
            Anleitung
 | 
					            Anleitung
 | 
				
			||||||
          </h2>
 | 
					          </h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <ol>
 | 
					          <p>
 | 
				
			||||||
            <li>
 | 
					            <img class="center-block img-responsive" src="img/firstrun.png" alt="Begrüßungsfrage">
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            Beim allerersten Mal, wenn das Add-in zusammen mit Word
 | 
				
			||||||
 | 
					            gestartet wird, wird man gefragt, in welchem Modus das
 | 
				
			||||||
 | 
					            Add-in operieren soll. Im <em>Ärztemodus</em> wird man ggf.
 | 
				
			||||||
 | 
					            aufgefordert, Zusatzinformationen zu Laborparametern (z.B.
 | 
				
			||||||
 | 
					            Ziel-Spiegel von Medikamenten) anzugeben; im
 | 
				
			||||||
 | 
					            <em>Sekretariatsmodus</em> unterbleiben solche Nachfragen.
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div class="panel panel-primary">
 | 
				
			||||||
 | 
					            <div class="panel-heading">
 | 
				
			||||||
 | 
					              <h3 class="panel-title">
 | 
				
			||||||
 | 
					                1. Labor einfügen
 | 
				
			||||||
 | 
					              </h3>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-body">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                <img class="center-block img-responsive" src="img/vorher.png" alt="Vorher">
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-footer">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
                Laborwerte auf üblichem Wege in einen Arztbrief einfügen
 | 
					                Laborwerte auf üblichem Wege in einen Arztbrief einfügen
 | 
				
			||||||
              (alternativ kann der Befehl "Demo" ausgeführt werden, dann wird
 | 
					                (alternativ kann der Befehl "Demo" ausgeführt werden,
 | 
				
			||||||
              ein Beispieldokument mit Laborwerten geöffnet).
 | 
					                dann wird ein Beispieldokument mit Laborwerten
 | 
				
			||||||
            </li>
 | 
					                geöffnet).
 | 
				
			||||||
            <li>
 | 
					              </p>
 | 
				
			||||||
              <img class="pull-right img-responsive" src="img/stilauswahl.png" alt="Stil auswählen" />
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div class="panel panel-primary">
 | 
				
			||||||
 | 
					            <div class="panel-heading">
 | 
				
			||||||
 | 
					              <h3 class="panel-title">
 | 
				
			||||||
 | 
					                2. zaaReloaded-Funktion aufrufen
 | 
				
			||||||
 | 
					              </h3>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-body">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                <img class="center-block img-responsive" src="img/ribbon.png" alt="zaaReloaded2-Ribbon">
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-footer">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
                Im zaaReloaded-Tab (s.o.) den linken Knopf "Formatieren"
 | 
					                Im zaaReloaded-Tab (s.o.) den linken Knopf "Formatieren"
 | 
				
			||||||
                klicken.
 | 
					                klicken.
 | 
				
			||||||
            </li>
 | 
					              </p>
 | 
				
			||||||
            <li>
 | 
					            </div>
 | 
				
			||||||
              Beim ersten Mal erscheint eine Liste mit Stilen, aus der man den
 | 
					          </div>
 | 
				
			||||||
              gewünschten Stil auswählt (siehe Abbildung). Beim nächsten Mal,
 | 
					
 | 
				
			||||||
              wenn man auf diesen Knopf drückt, wird der zuletzt verwendete Stil
 | 
					          <div class="panel panel-primary">
 | 
				
			||||||
              genommen.
 | 
					            <div class="panel-heading">
 | 
				
			||||||
            </li>
 | 
					              <h3 class="panel-title">
 | 
				
			||||||
            <li>
 | 
					                3. Ggf. Stil auswählen
 | 
				
			||||||
 | 
					              </h3>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-body">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                <img class="center-block img-responsive" src="img/stilauswahl.png" alt="Stil auswählen">
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-footer">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                Beim ersten Mal erscheint eine Liste mit Stilen, aus der
 | 
				
			||||||
 | 
					                man den gewünschten Stil auswählt (siehe Abbildung).
 | 
				
			||||||
 | 
					                Beim nächsten Mal, wenn man auf diesen Knopf drückt,
 | 
				
			||||||
 | 
					                wird der zuletzt verwendete Stil genommen.
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div class="panel panel-primary">
 | 
				
			||||||
 | 
					            <div class="panel-heading">
 | 
				
			||||||
 | 
					              <h3 class="panel-title">
 | 
				
			||||||
 | 
					                4. Ggf. Kommentar ergänzen
 | 
				
			||||||
 | 
					              </h3>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-body">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                <img class="center-block img-responsive" src="img/itemcommentview.png" alt="Kommentar eingeben">
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-footer">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                Sofern der <em>Ärztemodus</em> eingestellt ist, können
 | 
				
			||||||
 | 
					                für bestimmte Laborparameter Zusatzkommentare eingegeben
 | 
				
			||||||
 | 
					                werden, z.B. um den Zielspiegelbereich eines
 | 
				
			||||||
 | 
					                Medikamentes anzugeben.
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                Wenn man diesen Dialog mit "Abbrechen" oder
 | 
				
			||||||
 | 
					                <kbd>ESC</kbd> beendet, erscheint ein gelb markierter
 | 
				
			||||||
 | 
					                Hinweis im formatieren Laborblock.
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                Wenn man hingegen keinen Kommentartext eingibt, wird
 | 
				
			||||||
 | 
					                kein Kommentar eingefügt, also auch das Präfix (hier
 | 
				
			||||||
 | 
					                "(Ziel-Talspiegel:") und das Suffix (hier "µg/l)")
 | 
				
			||||||
 | 
					                nicht.
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <div class="panel panel-primary">
 | 
				
			||||||
 | 
					            <div class="panel-heading">
 | 
				
			||||||
 | 
					              <h3 class="panel-title">
 | 
				
			||||||
 | 
					                5. Fertig!
 | 
				
			||||||
 | 
					              </h3>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-body">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
 | 
					                <img class="center-block img-responsive" src="img/nachher.png" alt="Nachher">
 | 
				
			||||||
 | 
					              </p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class="panel-footer">
 | 
				
			||||||
 | 
					              <p>
 | 
				
			||||||
                Einen Moment warten... Voilà.
 | 
					                Einen Moment warten... Voilà.
 | 
				
			||||||
            </li>
 | 
					              </p>
 | 
				
			||||||
          </ol>
 | 
					            </div>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <h2 class="page-header">
 | 
					          <h2 class="page-header">
 | 
				
			||||||
@@ -120,112 +212,161 @@
 | 
				
			|||||||
            diese bei Bedarf im Hintergrund.
 | 
					            diese bei Bedarf im Hintergrund.
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <h2 class="page-header">
 | 
					          <h2 class="page-header" id="anpassen">
 | 
				
			||||||
            Anpassen
 | 
					            Anpassen
 | 
				
			||||||
          </h2>
 | 
					          </h2>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          Das Addin enthält einen Stil-Editor, mit dem die eingebauten Stile
 | 
					            zaaReloaded liest die Laborwerte aus einem Arztbrief ein,
 | 
				
			||||||
          bearbeitet und neue Stile entworfen werden können:
 | 
					            analysiert sie, und gibt sie entsprechend einem vom Benutzer
 | 
				
			||||||
 | 
					            programmierbaren Stil wieder aus.
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
        <p class="text-center">
 | 
					          <div class="panel panel-default col-lg-7 col-md-5 pull-right floatbox">
 | 
				
			||||||
          <img src="img/stilbearbeiten.png" alt="Stil bearbeiten" />
 | 
					 | 
				
			||||||
        </p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <p class="clearfix">
 | 
					 | 
				
			||||||
          <img src="img/elementpicker.png" alt="Elemente" class="pull-right" />
 | 
					 | 
				
			||||||
          Jeder Stil setzt sich aus sog. <i>Elementen</i> zusammen. Es gibt
 | 
					 | 
				
			||||||
          <i>Steuerelemente</i>, die zum Beispiel für die Auswahl eines Tages
 | 
					 | 
				
			||||||
          (erster Tag/letzter Tag) zuständig sind, und es gibt
 | 
					 | 
				
			||||||
          <i>Ausgabeelemente</i>, die die eigentliche Formatierung und Ausgabe
 | 
					 | 
				
			||||||
          der Laborwerte übernehmen.
 | 
					 | 
				
			||||||
        </p>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    <div class="row">
 | 
					 | 
				
			||||||
      <div class="col-sm-6">
 | 
					 | 
				
			||||||
        <div class="panel panel-default">
 | 
					 | 
				
			||||||
          <div class="panel-heading">
 | 
					 | 
				
			||||||
            <h3 class="panel-title">
 | 
					 | 
				
			||||||
              Steuerelemente
 | 
					 | 
				
			||||||
            </h3>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
            <div class="panel-body">
 | 
					            <div class="panel-body">
 | 
				
			||||||
            <ul>
 | 
					              <img class="img-responsive center-block" src="img/stilbearbeiten.png" alt="Stil bearbeiten">
 | 
				
			||||||
              <li>Ersten Tag auswählen</li>
 | 
					              Screenshot des Stil-Editors
 | 
				
			||||||
              <li>Letzten Tag auswählen</li>
 | 
					 | 
				
			||||||
              <li>Jeden Tag nacheinander auswählen</li>
 | 
					 | 
				
			||||||
              <li>Zwei Spalten einfügen/zur nächsten Spalte wechseln</li>
 | 
					 | 
				
			||||||
            </ul>
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
      </div>
 | 
					          <p>
 | 
				
			||||||
      <div class="col-sm-6">
 | 
					            Das Addin enthält einen Stil-Editor, mit dem die eingebauten Stile
 | 
				
			||||||
        <div class="panel panel-default">
 | 
					            bearbeitet und neue Stile entworfen werden können. Stile
 | 
				
			||||||
          <div class="panel-heading">
 | 
					            können importiert und exportiert werden.
 | 
				
			||||||
            <h3 class="panel-title">
 | 
					          </p>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            Bei einem Stil kann definiert werden, ob pathologische
 | 
				
			||||||
 | 
					            Laborwerte auf bestimmte Weise hervorgehoben werden sollen
 | 
				
			||||||
 | 
					            (fett, kursiv, unterstrichen), und in welchen Situationen
 | 
				
			||||||
 | 
					            der Referenzbereich ausgegeben werden soll: Niemals, immer
 | 
				
			||||||
 | 
					            oder bei pathologischen Werten und/oder Parametern, die
 | 
				
			||||||
 | 
					            intern als "speziell" markiert sind (<a href="#parameter">s.u.</a>).
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            Die Stile bestehen aus sogenannten Elementen, die der Reihe
 | 
				
			||||||
 | 
					            nach abgearbeitet werden. Ein Element ist entweder ein
 | 
				
			||||||
 | 
					            <em>Steuerelement</em> oder ein <em>Ausgabeelement</em>.
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <h3>
 | 
				
			||||||
            Ausgabeelemente
 | 
					            Ausgabeelemente
 | 
				
			||||||
          </h3>
 | 
					          </h3>
 | 
				
			||||||
          </div>
 | 
					          <p>
 | 
				
			||||||
 | 
					            <em>Ausgabeelemente</em> sind für die Ausgabe von Laborwerten
 | 
				
			||||||
 | 
					            oder anderem Text zuständig. Ein Beliebiger-Text-Element gibt
 | 
				
			||||||
 | 
					            ganz einfach den Text aus, den es enthält. Auf diese Weise
 | 
				
			||||||
 | 
					            kann man z.B. zusätzliche Zeilen in die Laborausgabe einfügen
 | 
				
			||||||
 | 
					            für Werte, die nicht aus dem Lauris übernommen werden, etwa
 | 
				
			||||||
 | 
					            ein Nephrologisches Sediment, das dann noch händisch
 | 
				
			||||||
 | 
					            vervollständigt werden muß.
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <div class="panel panel-default col-lg-7 col-md-5 pull-right floatbox">
 | 
				
			||||||
            <div class="panel-body">
 | 
					            <div class="panel-body">
 | 
				
			||||||
            <ul>
 | 
					              <img class="img-responsive center-block"
 | 
				
			||||||
              <li>Laborparameter</li>
 | 
					              src="img/elementbearbeiten.png" alt="Laborparameter-Element bearbeiten"> 
 | 
				
			||||||
              <li>Beliebiger Text</li>
 | 
					              Laborparameter-Ausgabeelement
 | 
				
			||||||
            </ul>
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
          </div>
 | 
					          </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="row">
 | 
					          <h4>
 | 
				
			||||||
      <div class="col-md-12">
 | 
					            Laborparameter-Element
 | 
				
			||||||
 | 
					          </h4>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          "Beliebiger Text" kann, wie der Name schon sagt, beliebigen Text
 | 
					            Die eigentliche Power des Add-ins liegt in
 | 
				
			||||||
          enthalten, der nicht weiter bearbeitet wird. Auf diese Weise kann
 | 
					            Laborparameter-Elementen. Jedes Element gibt einen Absatz mit
 | 
				
			||||||
          man z.B. Platzhalter für Urinsedimente ausgeben lassen, die dann
 | 
					            Laborwerten aus, die frei definiert werden können (vgl.
 | 
				
			||||||
          noch händisch vervollständigt werden.
 | 
					            Abbbildung).
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          "Laborparameter" enthalten eine durch Kommata getrennte Auflistung
 | 
					            Man schreibt einfach die gewünschten Parameter durch Kommata
 | 
				
			||||||
          von Parametern, die ausgegeben werden sollen. Jedes Element
 | 
					            getrennt in das Eingabefeld. Optional kann man durch einen
 | 
				
			||||||
          "Laborparameter" kann optional einen Titel enthalten:
 | 
					            Doppelpunkt getrennt eine Beschriftung voranstellen. In der
 | 
				
			||||||
 | 
					            Abbildung ist das "Klinische Chemie".
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <h5 id="parameter">
 | 
				
			||||||
 | 
					            Parameter-Bezeichnungen
 | 
				
			||||||
 | 
					          </h5>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            zaaReloaded2 verwendet teilweise eigene Bezeichnungen für
 | 
				
			||||||
 | 
					            Parameter, bspw. "Na" für Natrium, während in der originalen
 | 
				
			||||||
 | 
					            Lauris-Ausgabe "Natrium" steht. Momentan gibt es noch keine
 | 
				
			||||||
 | 
					            Möglichkeit, die bekannten Parameter im Add-in selbst
 | 
				
			||||||
 | 
					            einzusehen; die Liste steht aber im Quellcode: <a
 | 
				
			||||||
 | 
					            href="http://git.bovender.de/?p=zaaReloaded2.git;a=blob;f=zaaReloaded2/Defaults/parameters.txt"
 | 
				
			||||||
 | 
					            target="_blank">git.bovender.de/.../paramteters.txt</a>. In
 | 
				
			||||||
 | 
					            der Datei ist für manche Parameter auch die gewünschte Zahl
 | 
				
			||||||
 | 
					            an Dezimalstellen hinterlegt sowie die Angabe, ob in der
 | 
				
			||||||
 | 
					            Referenzbereich auch bei normalem Wert mit ausgeben werden
 | 
				
			||||||
 | 
					            soll (abhängig von der Stil-Einstellung).
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <h5>
 | 
				
			||||||
 | 
					            Kommentare
 | 
				
			||||||
 | 
					          </h5>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            <img class="img-responsive center-block" src="img/itemcomment.png" alt="Parameter-Kommentar">
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          Beispiel:
 | 
					            Wenn hinter einem Parameter-Namen ein Text in
 | 
				
			||||||
        </p>
 | 
					            Anführungszeichen eingegeben wird, wird dieser Text als
 | 
				
			||||||
        <blockquote>
 | 
					            <em>Kommentar</em> ausgewertet (siehe Abbildung oben). Beim
 | 
				
			||||||
          <p>
 | 
					            Formatieren wird dieser Kommentar mit einer
 | 
				
			||||||
          <img src="img/elementbearbeiten.png" alt="Element bearbeiten" />
 | 
					            Eingabe-Aufforderung angezeigt, wobei der Text zwischen den
 | 
				
			||||||
 | 
					            spitzen Klammern (im Beispiel "<*** BITTE ANGEBEN
 | 
				
			||||||
 | 
					            ***>") als Vorgabe verwendet wird (die spitzen Klammern
 | 
				
			||||||
 | 
					            verschwinden natürlich):
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          Klinische Chemie: Na, K, Cl, (usw.)
 | 
					            <img class="img-responsive center-block" src="img/itemcommentview.png" alt="Eingabeaufforderung für Kommentar">
 | 
				
			||||||
          </p>
 | 
					 | 
				
			||||||
        </blockquote>
 | 
					 | 
				
			||||||
        <p>
 | 
					 | 
				
			||||||
          In diesem Fall ist "Klinische Chemie:" der optionale Titel.
 | 
					 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          Die Bezeichnungen der einzelnen Parameter sind fest einprogrammiert.
 | 
					            In den <em>Einstellungen</em> können die
 | 
				
			||||||
          Teils decken sie sich mit den Bezeichnungen, wie sie in der
 | 
					            Eingabe-Aufforderungen für Kommentare im Sinne eines
 | 
				
			||||||
          Zentralen Arztbriefablage erscheinen; teils sind sie aber auch
 | 
					            <em>Sekretariatsmodus</em> ausgeschaltet werden. Dann wird
 | 
				
			||||||
          Surrogate (z.B. "eGFR (CKD-EPI)" anstatt "glomerul. Filtrationsr.
 | 
					            der Kommentar in der Ausgabe <mark>gelb
 | 
				
			||||||
          CKD-EP").
 | 
					            hervorgehoben</mark>.
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
 | 
					          <h5>
 | 
				
			||||||
 | 
					            Platzhalter
 | 
				
			||||||
 | 
					          </h5>
 | 
				
			||||||
          <p>
 | 
					          <p>
 | 
				
			||||||
          Die Platzhalter "SU-*", "U-*" und "*" geben die noch nicht
 | 
					            Mittels <em>Platzhaltern</em> ("Jokern", "Wildcards") können
 | 
				
			||||||
          verwendeten Werte für Sammelurin, Spontanurin und alles weitere aus.
 | 
					            alle Laborwerte ausgegeben werden, die bis dahin noch nicht
 | 
				
			||||||
          "*" sollte daher als letztes verwendet werden.
 | 
					            explizit ausgewählt wurden. Wenn man "*" verwendet, werden
 | 
				
			||||||
 | 
					            alle noch nicht selektierten Werte ausgegeben. Mit "U-*"
 | 
				
			||||||
 | 
					            werden nur die noch nicht verwendeten Werte des Spot-Urins
 | 
				
			||||||
 | 
					            ausgegeben und mit "SU-*" die noch nicht verwendeten Werte
 | 
				
			||||||
 | 
					            des Sammelurins.
 | 
				
			||||||
          </p>
 | 
					          </p>
 | 
				
			||||||
        <p>
 | 
					 | 
				
			||||||
          Die Liste der möglichen Parameternamen ist momentan fest
 | 
					 | 
				
			||||||
          einprogrammiert und kann auch noch nicht angezeigt werden. Man kann
 | 
					 | 
				
			||||||
          beim Entwickeln eines Stils aber probehalber den Platzhalter "*"
 | 
					 | 
				
			||||||
          verwenden und sieht dann, welche Parameternamen noch verwendet
 | 
					 | 
				
			||||||
          werden könnten.
 | 
					 | 
				
			||||||
        </p>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <h4>
 | 
				
			||||||
 | 
					            Beliebiger Text
 | 
				
			||||||
 | 
					          </h4>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            Das Ausgabe-Element "Beliebiger Text" macht genau das:
 | 
				
			||||||
 | 
					            Beliebigen Text ausgeben, der nicht weiter bearbeitet wird.
 | 
				
			||||||
 | 
					            Auf diese Weise kann man z.B. Platzhalter für Urinsedimente
 | 
				
			||||||
 | 
					            ausgeben lassen, die dann noch händisch vervollständigt
 | 
				
			||||||
 | 
					            werden müssen.
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          <h3>
 | 
				
			||||||
 | 
					            Steuerelemente
 | 
				
			||||||
 | 
					          </h3>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            Mit <em>Steuerelementen</em> kann z.B. die Auswahl eines Datums
 | 
				
			||||||
 | 
					            für die Laborausgabe (erster/letzter Tag usw.) kontrolliert oder
 | 
				
			||||||
 | 
					            auch der Dokumentfluß gesteuert werden, wobei bislang nur die
 | 
				
			||||||
 | 
					            Ausgabe in zwei Spalten implementiert ist.
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					          <p>
 | 
				
			||||||
 | 
					            Steuerelemente zur Auswahl von bestimmten Daten
 | 
				
			||||||
 | 
					            (erster/letzter Tag usw.) enthalten <em>Kindelemente</em>. Nur
 | 
				
			||||||
 | 
					            Ausgabeelemente können Kindelemente sein. Ein Steuerelement
 | 
				
			||||||
 | 
					            wählt die Laborwerte für das entsprechende Datum aus und
 | 
				
			||||||
 | 
					            übergibt sie den Kindelementen, die die Laborwerte ausgeben.
 | 
				
			||||||
 | 
					            Mit dem Steuerelement <em>Jeder Tag</em> werden alle
 | 
				
			||||||
 | 
					            Laborwerte nach Kalendertagen sortiert, und die Kindelemente
 | 
				
			||||||
 | 
					            geben die Werte für jeden Kalendertag aus.
 | 
				
			||||||
 | 
					          </p>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <footer class="footer">
 | 
					    <footer class="footer">
 | 
				
			||||||
      <p>
 | 
					      <p>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
2.0.1
 | 
					2.1.0
 | 
				
			||||||
http://zaa.nephrowiki.de/downloads/zaaReloaded-2.0.1.exe
 | 
					http://zaa.nephrowiki.de/downloads/zaaReloaded-2.1.0.exe
 | 
				
			||||||
96efab4fd34411f9cdd03b5d31ddcf4f6fe8b904  publish/release/zaaReloaded-2.0.1.exe
 | 
					41976c8ac85092c12139884b175d1e8eadc7636b  publish/release/zaaReloaded-2.1.0.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										202
									
								
								zaaReloaded2/Commands.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,202 @@
 | 
				
			|||||||
 | 
					using Bovender.Mvvm.Actions;
 | 
				
			||||||
 | 
					/* Commands.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					using zaaReloaded2.Formatter;
 | 
				
			||||||
 | 
					using zaaReloaded2.Importer.ZaaImporter;
 | 
				
			||||||
 | 
					using zaaReloaded2.ViewModels;
 | 
				
			||||||
 | 
					using zaaReloaded2.Views;
 | 
				
			||||||
 | 
					using Word = Microsoft.Office.Interop.Word;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// 
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    static class Commands
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Command methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void Format()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (CanFormat())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SettingsRepository repository = SettingsRepository.Load();
 | 
				
			||||||
 | 
					                Guid lastSettingsUid = Properties.Settings.Default.LastSettings;
 | 
				
			||||||
 | 
					                Settings lastSettings = repository.FindByGuid(lastSettingsUid);
 | 
				
			||||||
 | 
					                if (lastSettings != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    DoFormat(lastSettings);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    ChooseSettings();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static bool CanFormat()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return Globals.ThisAddIn.Application.ActiveDocument != null;
 | 
				
			||||||
 | 
					            //Word.Selection s = Globals.ThisAddIn.Application.ActiveWindow.Selection;
 | 
				
			||||||
 | 
					            //return s.Paragraphs.Count > 1 || 
 | 
				
			||||||
 | 
					            //    (s.Text.Length > 1 && s.Text.EndsWith("\r"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void ChooseSettings()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SettingsRepository repository = SettingsRepository.Load();
 | 
				
			||||||
 | 
					            SettingsRepositoryViewModel vm = new SettingsRepositoryViewModel(repository);
 | 
				
			||||||
 | 
					            vm.UseSettingsMessage.Sent += (sender, args) =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                SettingsViewModel settingsVM = args.Content.ViewModel as SettingsViewModel;
 | 
				
			||||||
 | 
					                Settings settings = settingsVM.RevealModelObject() as Settings;
 | 
				
			||||||
 | 
					                DoFormat(settings);
 | 
				
			||||||
 | 
					                Properties.Settings.Default.LastSettings = settings.Uid;
 | 
				
			||||||
 | 
					                Properties.Settings.Default.Save();
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            vm.InjectInto<SettingsRepositoryView>().ShowDialog();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Loads the embedded demo document.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <remarks>
 | 
				
			||||||
 | 
					        /// If Word is running in an embedded environment (e.g. in the ZAA),
 | 
				
			||||||
 | 
					        /// adding a document causes a COMException. Unfortunately, it is
 | 
				
			||||||
 | 
					        /// not trivial to test if Word is running embedded, so we use a
 | 
				
			||||||
 | 
					        /// try...catch structure and catch all COMExceptions. The error
 | 
				
			||||||
 | 
					        /// message might be not quite right if the exception was caused by
 | 
				
			||||||
 | 
					        /// a different problem.
 | 
				
			||||||
 | 
					        /// See http://davecra.com/2013/04/10/how-to-determine-if-an-excel-workbook-is-embedded-and-more
 | 
				
			||||||
 | 
					        /// </remarks>
 | 
				
			||||||
 | 
					        public static void LoadDemo()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Demo.Demo.OpenDemoDocument();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (System.Runtime.InteropServices.COMException e)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // HRESULT comparison according to http://stackoverflow.com/a/1426198/270712
 | 
				
			||||||
 | 
					                // Fix for exception ID 65a5c34e
 | 
				
			||||||
 | 
					                if (e.ErrorCode == unchecked((int)0x800A11FD))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    NotificationAction a = new NotificationAction();
 | 
				
			||||||
 | 
					                    a.Caption = "Kann Demo-Dokument nicht laden";
 | 
				
			||||||
 | 
					                    a.Message = "Das Demo-Dokument kann nicht geladen werden, "
 | 
				
			||||||
 | 
					                        + "wenn Word in der Zentralen Arztbriefablage ausgeführt wird.\r"
 | 
				
			||||||
 | 
					                        + "Bitte Word als eigenständige Anwendung starten und dann "
 | 
				
			||||||
 | 
					                        + "noch einmal versuchen.";
 | 
				
			||||||
 | 
					                    a.OkButtonLabel = "Schließen";
 | 
				
			||||||
 | 
					                    a.Invoke();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    throw;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void ShowAbout()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ViewModels.AboutViewModel vm = new ViewModels.AboutViewModel();
 | 
				
			||||||
 | 
					            vm.InjectInto<Views.AboutView>().ShowDialog();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void ShowPreferences()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ViewModels.PreferencesViewModel.Default.InjectInto<Views.PreferencesView>()
 | 
				
			||||||
 | 
					                .ShowDialog();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void ApplyDanielsStyle()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Formatter.DanielsStyle.Apply(
 | 
				
			||||||
 | 
					                Globals.ThisAddIn.Application.ActiveDocument,
 | 
				
			||||||
 | 
					                Globals.ThisAddIn.Application.Selection);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private static void DoFormat(Settings settings)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // If no "real" selection exists, attempt to auto-detect the lab data.
 | 
				
			||||||
 | 
					            // (NB Technically, there is never _no_ selection in a document.)
 | 
				
			||||||
 | 
					            Word.Window activeWindow = Globals.ThisAddIn.Application.ActiveWindow;
 | 
				
			||||||
 | 
					            Word.Selection sel = activeWindow.Selection;
 | 
				
			||||||
 | 
					            if (!(sel.Paragraphs.Count > 1
 | 
				
			||||||
 | 
					                || (sel.Text.Length > 1 && sel.Text.EndsWith("\r"))))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (!AutoDetect.Detect(activeWindow.Document))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    NotificationAction a = new NotificationAction();
 | 
				
			||||||
 | 
					                    a.Caption = "Formatieren nicht möglich";
 | 
				
			||||||
 | 
					                    a.Message = "Das Dokument scheint keine Lauris-Labordaten zu enthalten.";
 | 
				
			||||||
 | 
					                    a.OkButtonLabel = "Schließen";
 | 
				
			||||||
 | 
					                    a.Invoke();
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ZaaImporter importer = new ZaaImporter();
 | 
				
			||||||
 | 
					            importer.Import(Globals.ThisAddIn.Application.ActiveWindow.Selection.Text);
 | 
				
			||||||
 | 
					            Formatter.Formatter formatter = new Formatter.Formatter(
 | 
				
			||||||
 | 
					                Globals.ThisAddIn.Application.ActiveDocument);
 | 
				
			||||||
 | 
					            formatter.Settings = settings;
 | 
				
			||||||
 | 
					            formatter.Laboratory = importer.Laboratory;
 | 
				
			||||||
 | 
					            CommentPool.Default.Reset();
 | 
				
			||||||
 | 
					            CommentPool.Default.FillInComment += CommentPool_FillInComment;
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                formatter.Run();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (NoLaboratoryDataException)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                NotificationAction a = new NotificationAction();
 | 
				
			||||||
 | 
					                a.Caption = "Formatieren nicht möglich";
 | 
				
			||||||
 | 
					                a.Message = "Die aktuelle Markierung scheint keine Labordaten zu enthalten.";
 | 
				
			||||||
 | 
					                a.OkButtonLabel = "Schließen";
 | 
				
			||||||
 | 
					                a.Invoke();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private static void CommentPool_FillInComment(object sender, ItemCommentEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (Preferences.Default.SuppressItemCommentInteraction)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                e.Comment.IsCancelled = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ItemCommentViewModel vm = new ItemCommentViewModel(e.Comment);
 | 
				
			||||||
 | 
					                vm.InjectInto<ItemCommentView>().ShowDialog();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										144
									
								
								zaaReloaded2/Controller/Comments/CommentPool.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					/* CommentPool.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Controller.Comments
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// A pool of comments.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    class CommentPool
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Singleton
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets the singleton instance of the CommentPool.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public static CommentPool Default
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return _instance;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private static readonly CommentPool _instance = new CommentPool();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets the number of ItemComments in the pool.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public int Count { get { return _itemComments.Count; } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public event EventHandler<ItemCommentEventArgs> FillInComment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Static constructor to support the singleton implementation.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <remarks>
 | 
				
			||||||
 | 
					        /// See http://csharpindepth.com/Articles/General/Singleton.aspx#cctor
 | 
				
			||||||
 | 
					        /// </remarks>
 | 
				
			||||||
 | 
					        static CommentPool() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private CommentPool()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _itemComments = new List<ItemComment>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Clear the pool of ItemComments and sets the event handler
 | 
				
			||||||
 | 
					        /// to null.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public void Reset()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _itemComments.Clear();
 | 
				
			||||||
 | 
					            FillInComment = null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Retrieves the ItemComment for a given definitionString;
 | 
				
			||||||
 | 
					        /// creates a new ItemComment object if necessary.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="definitionString"></param>
 | 
				
			||||||
 | 
					        /// <returns>ItemComment derived from the
 | 
				
			||||||
 | 
					        /// <paramref name="definitionString"/></returns>
 | 
				
			||||||
 | 
					        public ItemComment GetCommentFor(string definitionString)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ItemComment itemComment = _itemComments.FirstOrDefault(
 | 
				
			||||||
 | 
					                i => i.Definition == definitionString);
 | 
				
			||||||
 | 
					            if (itemComment == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                itemComment = ItemComment.FromDefinitionString(definitionString);
 | 
				
			||||||
 | 
					                if (itemComment != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _itemComments.Add(itemComment);
 | 
				
			||||||
 | 
					                    itemComment.FillInComment += itemComment_FillInComment;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return itemComment;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void itemComment_FillInComment(object sender, ItemCommentEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            OnFillInComment(e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Protected methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected virtual void OnFillInComment(ItemCommentEventArgs args)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            EventHandler<ItemCommentEventArgs> h = FillInComment;
 | 
				
			||||||
 | 
					            if (h != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                h(this, args);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Fields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<ItemComment> _itemComments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										216
									
								
								zaaReloaded2/Controller/Comments/ItemComment.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,216 @@
 | 
				
			|||||||
 | 
					/* ParameterComment.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Controller.Comments
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Represents an optional comment for a laboratory item.
 | 
				
			||||||
 | 
					    /// The zaaReloaded2.Controller.Elements.Items class can
 | 
				
			||||||
 | 
					    /// parse these optional comment strings which may be used
 | 
				
			||||||
 | 
					    /// to prompt users to enter target ranges etc.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    /// <example>
 | 
				
			||||||
 | 
					    /// TAC "(Zielspiegel: <8-10> µg/l)"
 | 
				
			||||||
 | 
					    /// </example>
 | 
				
			||||||
 | 
					    /// <remarks>
 | 
				
			||||||
 | 
					    /// In the example, the tacrolimus trough level TAC carries a comment about the
 | 
				
			||||||
 | 
					    /// recommended range. The comment must be enclosed in quotes in order for it
 | 
				
			||||||
 | 
					    /// to be recognized. The quotes will be stripped. The angle brackets denote
 | 
				
			||||||
 | 
					    /// a place holder that will be replaced by the comment that is set in the
 | 
				
			||||||
 | 
					    /// RequestParameterComment's event args. The text between the angle brackets
 | 
				
			||||||
 | 
					    /// ("8-10") is an optional default value. One could also just use 'empty'
 | 
				
			||||||
 | 
					    /// brackets ("<>").
 | 
				
			||||||
 | 
					    /// </remarks>
 | 
				
			||||||
 | 
					    public class ItemComment
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Factory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Creates a new ItemComment object from a definition string.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="definitionString">String that complies
 | 
				
			||||||
 | 
					        /// with the definition pattern (item "optional prefix <optional
 | 
				
			||||||
 | 
					        /// default value> optioal suffix").</param>
 | 
				
			||||||
 | 
					        public static ItemComment FromDefinitionString(string definitionString)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Match match = _definition.Match(definitionString);
 | 
				
			||||||
 | 
					            if (match.Success)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return new ItemComment(
 | 
				
			||||||
 | 
					                    definitionString,
 | 
				
			||||||
 | 
					                    match.Groups["item"].Value.Trim(),
 | 
				
			||||||
 | 
					                    match.Groups["prefix"].Value,
 | 
				
			||||||
 | 
					                    match.Groups["value"].Value,
 | 
				
			||||||
 | 
					                    match.Groups["suffix"].Value);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets the item name that this comment is for.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Item { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Prefix of this comment, e.g. "(target trough level: "
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Prefix { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Value of this comment; String.Empty represents a
 | 
				
			||||||
 | 
					        /// cancelled comment.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Value { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Suffix of this comment, e.g. " µg/l)"
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Suffix { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets the original definition string that this ItemComment
 | 
				
			||||||
 | 
					        /// was created from.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public string Definition { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets whether this comment has been cancelled.mo
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public bool IsCancelled { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Event
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Event that is raised when the comment value needs to be
 | 
				
			||||||
 | 
					        /// filled in by someone or something.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public event EventHandler<ItemCommentEventArgs> FillInComment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ItemComment()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Item = String.Empty;
 | 
				
			||||||
 | 
					            Prefix = String.Empty;
 | 
				
			||||||
 | 
					            Value = String.Empty;
 | 
				
			||||||
 | 
					            Suffix = String.Empty;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ItemComment(string item, string prefix, string value, string suffix)
 | 
				
			||||||
 | 
					            : this()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Item = item;
 | 
				
			||||||
 | 
					            Prefix = prefix;
 | 
				
			||||||
 | 
					            Value = value;
 | 
				
			||||||
 | 
					            Suffix = suffix;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ItemComment(string definition, string item, string prefix, string value, string suffix)
 | 
				
			||||||
 | 
					            : this(item, prefix, value, suffix)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Definition = definition;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Builds the comment string from the prefix, the value, and
 | 
				
			||||||
 | 
					        /// the suffix. Raises the FillInComment event to get the value
 | 
				
			||||||
 | 
					        /// first. If the value is an empty string, the entire comment
 | 
				
			||||||
 | 
					        /// string will be an empty string.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <returns>Comment string with filled-in value, or String.Empty
 | 
				
			||||||
 | 
					        /// if the value is an empty string.</returns>
 | 
				
			||||||
 | 
					        public string BuildComment()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            OnFillInComment();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            string value = Value;
 | 
				
			||||||
 | 
					            if (String.IsNullOrEmpty(value))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // If the comment was not cancelled and an empty
 | 
				
			||||||
 | 
					                // value was deliberately entered, return an
 | 
				
			||||||
 | 
					                // empty string.
 | 
				
			||||||
 | 
					                if (!IsCancelled)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return String.Empty;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                // If the comment was cancelled and the default
 | 
				
			||||||
 | 
					                // value is an empty string, insert a prompt
 | 
				
			||||||
 | 
					                // to manually enter the comment.
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    value = Properties.Settings.Default.ManualCommentPrompt;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (!IsCancelled)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return Prefix + value + Suffix;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return Prefix + "<highlight>" + value + "</highlight>" + Suffix;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Raises the FillInComment event.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        protected virtual void OnFillInComment()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            EventHandler<ItemCommentEventArgs> h = FillInComment;
 | 
				
			||||||
 | 
					            if (h != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                h(this, new ItemCommentEventArgs(this));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Fields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static readonly Regex _definition =
 | 
				
			||||||
 | 
					            new Regex(@"(?<item>[^""]+)""(?<prefix>[^<]+)?<(?<value>[^>]*)>(?<suffix>[^""]+)?""");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										49
									
								
								zaaReloaded2/Controller/Comments/ItemCommentEventArgs.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					/* ParameterCommentEventArgs.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Controller.Comments
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Event arguments used in item commenting.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class ItemCommentEventArgs : EventArgs
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets the comment object for this parameter.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public ItemComment Comment { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ItemCommentEventArgs(
 | 
				
			||||||
 | 
					            ItemComment comment)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Comment = comment;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -24,6 +24,7 @@ using Microsoft.Office.Interop.Word;
 | 
				
			|||||||
using zaaReloaded2.LabModel;
 | 
					using zaaReloaded2.LabModel;
 | 
				
			||||||
using zaaReloaded2.Formatter;
 | 
					using zaaReloaded2.Formatter;
 | 
				
			||||||
using System.Runtime.Serialization;
 | 
					using System.Runtime.Serialization;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2.Controller.Elements
 | 
					namespace zaaReloaded2.Controller.Elements
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -123,7 +124,7 @@ namespace zaaReloaded2.Controller.Elements
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            _items = null;
 | 
					            _items = null;
 | 
				
			||||||
            _caption = null;
 | 
					            _caption = null;
 | 
				
			||||||
            Regex r = new Regex(@"((?<caption>[^:]+):\s*)?((?<items>[^,]+),\s*)*(?<items>[^,]+)");
 | 
					            Regex r = new Regex(@"((?<caption>[^:""]+):\s*)?((?<items>[^,]+),\s*)*(?<items>[^,]+)");
 | 
				
			||||||
            Match m = r.Match(Content);
 | 
					            Match m = r.Match(Content);
 | 
				
			||||||
            if (m.Success)
 | 
					            if (m.Success)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -186,9 +187,20 @@ namespace zaaReloaded2.Controller.Elements
 | 
				
			|||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Collects items for output by name.
 | 
					        /// Collects items for output by name.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// <param name="name">Item name to look for.</param>
 | 
					        /// <param name="name">Item name to look for. If the item name contains
 | 
				
			||||||
 | 
					        /// a comment definition (see example in the description of the
 | 
				
			||||||
 | 
					        /// <see cref="RequestParameterComment"/> event), </param>
 | 
				
			||||||
        List<ItemFormatter> CollectByName(zaaReloaded2.Formatter.Formatter formatter, string name)
 | 
					        List<ItemFormatter> CollectByName(zaaReloaded2.Formatter.Formatter formatter, string name)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            // First, check if the item name contains an optional comment
 | 
				
			||||||
 | 
					            // definition
 | 
				
			||||||
 | 
					            ItemComment comment = CommentPool.Default.GetCommentFor(name);
 | 
				
			||||||
 | 
					            if (comment != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                name = comment.Item;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Then, see if we have such an item
 | 
				
			||||||
            List<ItemFormatter> items = new List<ItemFormatter>();
 | 
					            List<ItemFormatter> items = new List<ItemFormatter>();
 | 
				
			||||||
            TimePointFormatter tpf = formatter.WorkingTimePoints
 | 
					            TimePointFormatter tpf = formatter.WorkingTimePoints
 | 
				
			||||||
                .FirstOrDefault(tp => tp.Value.ContainsItem(name))
 | 
					                .FirstOrDefault(tp => tp.Value.ContainsItem(name))
 | 
				
			||||||
@@ -200,6 +212,7 @@ namespace zaaReloaded2.Controller.Elements
 | 
				
			|||||||
                ItemFormatter i = tpf.ItemFormatters[name];
 | 
					                ItemFormatter i = tpf.ItemFormatters[name];
 | 
				
			||||||
                i.HasBeenUsed = true;
 | 
					                i.HasBeenUsed = true;
 | 
				
			||||||
                i.IncludeMaterial = false;
 | 
					                i.IncludeMaterial = false;
 | 
				
			||||||
 | 
					                i.Comment = comment;
 | 
				
			||||||
                items.Add(i);
 | 
					                items.Add(i);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return items;
 | 
					            return items;
 | 
				
			||||||
@@ -211,7 +224,7 @@ namespace zaaReloaded2.Controller.Elements
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        string _caption;
 | 
					        string _caption;
 | 
				
			||||||
        List<string> _items;
 | 
					        List<string> _items;
 | 
				
			||||||
        static Regex _wildcard = new Regex(@"(?<material>[^-]+-)?\*");
 | 
					        static readonly Regex _wildcard = new Regex(@"^(?<material>[^-]+-)?\*$");
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,17 +3,17 @@
 | 
				
			|||||||
<a1:Settings id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a1:Settings id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>2</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
<_a>1173493659</_a>
 | 
					<_a>726346026</_a>
 | 
				
			||||||
<_b>4743</_b>
 | 
					<_b>-9272</_b>
 | 
				
			||||||
<_c>20075</_c>
 | 
					<_c>16670</_c>
 | 
				
			||||||
<_d>156</_d>
 | 
					<_d>156</_d>
 | 
				
			||||||
<_e>83</_e>
 | 
					<_e>154</_e>
 | 
				
			||||||
<_f>220</_f>
 | 
					<_f>68</_f>
 | 
				
			||||||
<_g>163</_g>
 | 
					<_g>185</_g>
 | 
				
			||||||
<_h>70</_h>
 | 
					<_h>192</_h>
 | 
				
			||||||
<_i>3</_i>
 | 
					<_i>11</_i>
 | 
				
			||||||
<_j>116</_j>
 | 
					<_j>64</_j>
 | 
				
			||||||
<_k>11</_k>
 | 
					<_k>27</_k>
 | 
				
			||||||
</Uid>
 | 
					</Uid>
 | 
				
			||||||
<Name id="ref-3">Kopie von Standard für NepA</Name>
 | 
					<Name id="ref-3">Kopie von Standard für NepA</Name>
 | 
				
			||||||
<ReferenceStyle xsi:type="a3:ReferenceStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">IfSpecialItem</ReferenceStyle>
 | 
					<ReferenceStyle xsi:type="a3:ReferenceStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">IfSpecialItem</ReferenceStyle>
 | 
				
			||||||
@@ -150,7 +150,7 @@
 | 
				
			|||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-26" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-26" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>2</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-50">Medikamente: TAC, CSA (C0), SIR, Vancomycin, Gentamicin, Tobramicin</Content>
 | 
					<Content id="ref-50">Medikamente: TAC "(Ziel-Talspiegel: <*** BITTE ANGEBEN***> µg/l)", CSA (C0) "(Ziel-Talspiegel: <*** BITTE ANGEBEN***> µg/l)", SIR "(Ziel-Talspiegel: <*** BITTE ANGEBEN***> µg/l)", Vancomycin, Gentamicin, Tobramicin</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a2:UnitySerializationHolder id="ref-27" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<a2:UnitySerializationHolder id="ref-27" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
<Data id="ref-51">zaaReloaded2.Controller.Elements.CustomText</Data>
 | 
					<Data id="ref-51">zaaReloaded2.Controller.Elements.CustomText</Data>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,19 +7,19 @@ Albumin                            Alb                  S
 | 
				
			|||||||
"Albumin (PU)"                     Alb                  U
 | 
					"Albumin (PU)"                     Alb                  U
 | 
				
			||||||
"Albumin (SU)"                     Alb                  SU
 | 
					"Albumin (SU)"                     Alb                  SU
 | 
				
			||||||
"Albumin (SU)/die"                 Alb                  SU
 | 
					"Albumin (SU)/die"                 Alb                  SU
 | 
				
			||||||
"Albumin - Fraktion"               Albumin-Fraktion     S                           X
 | 
					"Albumin - Fraktion"               Albumin-Fraktion     S          ---              X
 | 
				
			||||||
"Albumin/Creatinin (PU)"           ACR                  U          0
 | 
					"Albumin/Creatinin (PU)"           ACR                  U          0
 | 
				
			||||||
"Alk. Phosphatase"                 AP                   S          0
 | 
					"Alk. Phosphatase"                 AP                   S          0
 | 
				
			||||||
"Alpha1-Globulin - Fraktion"       a1-Globulin          S                           X
 | 
					"Alpha1-Globulin - Fraktion"       a1-Globulin          S          ---              X
 | 
				
			||||||
"Alpha2-Globulin - Fraktion"       a2-Globulin          S                           X
 | 
					"Alpha2-Globulin - Fraktion"       a2-Globulin          S          ---              X
 | 
				
			||||||
Amylase                            Amylase              S
 | 
					Amylase                            Amylase              S
 | 
				
			||||||
"anorg. Phosphat"                  P                    S
 | 
					"anorg. Phosphat"                  P                    S
 | 
				
			||||||
"Anti-DNAse B"                     "Anti-DNAse B"       S                           X
 | 
					"Anti-DNAse B"                     "Anti-DNAse B"       S          ---              X
 | 
				
			||||||
Anti-Streptolysin                  ASL                  S                           X
 | 
					Anti-Streptolysin                  ASL                  S          ---              X
 | 
				
			||||||
"Bakterien (U)"                    Bakt                 U
 | 
					"Bakterien (U)"                    Bakt                 U
 | 
				
			||||||
Basenabweichung                    BE                   BGA
 | 
					Basenabweichung                    BE                   BGA
 | 
				
			||||||
Basophile                          Baso                 E
 | 
					Basophile                          Baso                 E
 | 
				
			||||||
"Beta-Globulin - Fraktion"         b-Globulin           S                           X
 | 
					"Beta-Globulin - Fraktion"         b-Globulin           S          ---              X
 | 
				
			||||||
"Bilirubin (U)"                    Bilirubin            U
 | 
					"Bilirubin (U)"                    Bilirubin            U
 | 
				
			||||||
"C-reaktives Protein"              CRP                  S
 | 
					"C-reaktives Protein"              CRP                  S
 | 
				
			||||||
Calcium                            Ca                   S
 | 
					Calcium                            Ca                   S
 | 
				
			||||||
@@ -27,25 +27,25 @@ Calcium                            Ca                   S
 | 
				
			|||||||
"Calcium (SU)/die"                 Ca                   SU
 | 
					"Calcium (SU)/die"                 Ca                   SU
 | 
				
			||||||
Calcium-Phosphat-Produkt           CaxP                 S
 | 
					Calcium-Phosphat-Produkt           CaxP                 S
 | 
				
			||||||
Cholesterin                        Chol                 S
 | 
					Cholesterin                        Chol                 S
 | 
				
			||||||
CK gesamt"                         CK                   S                           X
 | 
					CK gesamt"                         CK                   S          ---              X
 | 
				
			||||||
"CK MB"                            CK-MB                S
 | 
					"CK MB"                            CK-MB                S
 | 
				
			||||||
Creatinin                          Krea                 S          1
 | 
					Creatinin                          Krea                 S          1
 | 
				
			||||||
"Creatinin (PU)"                   Krea                 U          0
 | 
					"Creatinin (PU)"                   Krea                 U          0
 | 
				
			||||||
"Creatinin (SU)"                   Krea                 SU         0
 | 
					"Creatinin (SU)"                   Krea                 SU         0
 | 
				
			||||||
"Creatinin-Clearance (SU)/min"     CrCl                 SU
 | 
					"Creatinin-Clearance (SU)/min"     CrCl                 SU
 | 
				
			||||||
"Cyclosporin-A vor Gabe"           "CsA (C0)"           S                           X
 | 
					"Cyclosporin-A vor Gabe"           "CsA (C0)"           S          ---              X
 | 
				
			||||||
"Cystatin C (Latex Gen. 2)"        "Cystatin C"         S                           X
 | 
					"Cystatin C (Latex Gen. 2)"        "Cystatin C"         S          ---              X
 | 
				
			||||||
"Cystatin C (N Latex)"             "Cystatin C"         S                           X
 | 
					"Cystatin C (N Latex)"             "Cystatin C"         S          ---              X
 | 
				
			||||||
Eisen                              Fe                   S
 | 
					Eisen                              Fe                   S
 | 
				
			||||||
Eosinophile                        Eos                  E
 | 
					Eosinophile                        Eos                  E
 | 
				
			||||||
Erythrozyten                       Ery                  E
 | 
					Erythrozyten                       Ery                  E
 | 
				
			||||||
"Erythrozyten (U)"                 Ery                  U
 | 
					"Erythrozyten (U)"                 Ery                  U
 | 
				
			||||||
Ferritin                           Ferr                 S
 | 
					Ferritin                           Ferr                 S
 | 
				
			||||||
Folsäure                           Folsäure             S                           X
 | 
					Folsäure                           Folsäure             S          ---              X
 | 
				
			||||||
FRAGMENTOZYTEN                     Fragmentozyten       E
 | 
					FRAGMENTOZYTEN                     Fragmentozyten       E
 | 
				
			||||||
"freies T3"                        fT3                  S                           X
 | 
					"freies T3"                        fT3                  S          ---              X
 | 
				
			||||||
"freies T4"                        fT4                  S                           X
 | 
					"freies T4"                        fT4                  S          ---              X
 | 
				
			||||||
"Gammaglobulin - Fraktion"         g-Globulin           S                           X
 | 
					"Gammaglobulin - Fraktion"         g-Globulin           S          ---              X
 | 
				
			||||||
Gesamt-Bilirubin                   Bilirubin            S
 | 
					Gesamt-Bilirubin                   Bilirubin            S
 | 
				
			||||||
Gesamt-Eiweiss                     Protein              S
 | 
					Gesamt-Eiweiss                     Protein              S
 | 
				
			||||||
"Gesamt-Eiweiss (PU)"              Protein              U
 | 
					"Gesamt-Eiweiss (PU)"              Protein              U
 | 
				
			||||||
@@ -53,15 +53,15 @@ Gesamt-Eiweiss                     Protein              S
 | 
				
			|||||||
"Gesamt-Eiweiss (SU)/die"          Proteinurie          SU
 | 
					"Gesamt-Eiweiss (SU)/die"          Proteinurie          SU
 | 
				
			||||||
"Gesamt-Eiweiss/Creatinin (PU)"    TPCR                 U          0
 | 
					"Gesamt-Eiweiss/Creatinin (PU)"    TPCR                 U          0
 | 
				
			||||||
GGT                                GGT                  S          0
 | 
					GGT                                GGT                  S          0
 | 
				
			||||||
"glomerul. Filtrationsr. (MDRD)"   "eGFR (MDRD)"        S                           ---                       X
 | 
					"glomerul. Filtrationsr. (MDRD)"   "eGFR (MDRD)"        S          ---              ---                       X
 | 
				
			||||||
"glomerul. Filtrationsr. CKD-EP"   "eGFR (CKD-EPI)"     S
 | 
					"glomerul. Filtrationsr. CKD-EP"   "eGFR (CKD-EPI)"     S
 | 
				
			||||||
"glomeruläre Filtrationsrate"      GFR                  SU
 | 
					"glomeruläre Filtrationsrate"      GFR                  SU
 | 
				
			||||||
Glucose                            Glukose              S
 | 
					Glucose                            Glukose              S
 | 
				
			||||||
"Glucose (U)"                      Glukose              U
 | 
					"Glucose (U)"                      Glukose              U
 | 
				
			||||||
"GOT (ASAT)"                       GOT                  S          0
 | 
					"GOT (ASAT)"                       GOT                  S          0
 | 
				
			||||||
"GPT (ALAT)"                       GPT                  S          0
 | 
					"GPT (ALAT)"                       GPT                  S          0
 | 
				
			||||||
Haptoglobin                        Haptoglobin          S                           X
 | 
					Haptoglobin                        Haptoglobin          S          ---              X
 | 
				
			||||||
HAPTOGLOBIN                        Haptoglobin          S                           X
 | 
					HAPTOGLOBIN                        Haptoglobin          S          ---              X
 | 
				
			||||||
"Harnstoff (SU)"                   Hst                  SU
 | 
					"Harnstoff (SU)"                   Hst                  SU
 | 
				
			||||||
"Harnstoff (SU)/die"               Hst/Tag              SU
 | 
					"Harnstoff (SU)/die"               Hst/Tag              SU
 | 
				
			||||||
Harnstoff"                         Hst                  S
 | 
					Harnstoff"                         Hst                  S
 | 
				
			||||||
@@ -78,14 +78,14 @@ Kalium                             K                    S
 | 
				
			|||||||
"Kalium (SU)"                      K                    U
 | 
					"Kalium (SU)"                      K                    U
 | 
				
			||||||
"Kalium (SU)/die"                  K                    SU
 | 
					"Kalium (SU)/die"                  K                    SU
 | 
				
			||||||
"Ketonkörper (U)"                  KK                   U
 | 
					"Ketonkörper (U)"                  KK                   U
 | 
				
			||||||
"Komplementfaktor C3c"             C3c                  S                           X
 | 
					"Komplementfaktor C3c"             C3c                  S          ---              X
 | 
				
			||||||
"Komplementfaktor C4"              C4                   S                           X
 | 
					"Komplementfaktor C4"              C4                   S          ---              X
 | 
				
			||||||
"Lactat Dehydrogenase"             LDH                  S
 | 
					"Lactat Dehydrogenase"             LDH                  S
 | 
				
			||||||
"LDL - Cholesterin"                LDL                  S
 | 
					"LDL - Cholesterin"                LDL                  S
 | 
				
			||||||
Leukozyten                         Leu                  E
 | 
					Leukozyten                         Leu                  E
 | 
				
			||||||
"Leukozyten (U)"                   Leu                  U
 | 
					"Leukozyten (U)"                   Leu                  U
 | 
				
			||||||
Lymphozyten                        Lym                  E
 | 
					Lymphozyten                        Lym                  E
 | 
				
			||||||
Magnesium                          Mg                   S                           X
 | 
					Magnesium                          Mg                   S          ---              X
 | 
				
			||||||
"MCH (HbE)"                        MCH                  E          0
 | 
					"MCH (HbE)"                        MCH                  E          0
 | 
				
			||||||
MCHC                               MCHC                 E          0
 | 
					MCHC                               MCHC                 E          0
 | 
				
			||||||
MCV                                MCV                  E          0
 | 
					MCV                                MCV                  E          0
 | 
				
			||||||
@@ -104,11 +104,11 @@ pH                                 pH                   BGA
 | 
				
			|||||||
"Plattenepithelien (U)"            Plattenep            U
 | 
					"Plattenepithelien (U)"            Plattenep            U
 | 
				
			||||||
"PO2 (art.)"                       pO2                  BGA
 | 
					"PO2 (art.)"                       pO2                  BGA
 | 
				
			||||||
"Protein (U)"                      Protein              U
 | 
					"Protein (U)"                      Protein              U
 | 
				
			||||||
"PSA ges. (ECL,Elecsys,Roche)"     PSA                  S                           X
 | 
					"PSA ges. (ECL,Elecsys,Roche)"     PSA                  S          ---              X
 | 
				
			||||||
"PTH intakt"                       iPTH                 S
 | 
					"PTH intakt"                       iPTH                 S
 | 
				
			||||||
PTT                                PTT                  Z
 | 
					PTT                                PTT                  Z
 | 
				
			||||||
"Ratio int. norm."                 INR                  Z
 | 
					"Ratio int. norm."                 INR                  Z
 | 
				
			||||||
Retikulozyten                      Retikulozyten        E                           X
 | 
					Retikulozyten                      Retikulozyten        E          ---              X
 | 
				
			||||||
"Sammelmenge (U)"                  Volumen              SU
 | 
					"Sammelmenge (U)"                  Volumen              SU
 | 
				
			||||||
"Sammelzeit (U)"                   Zeit                 SU
 | 
					"Sammelzeit (U)"                   Zeit                 SU
 | 
				
			||||||
"Sauerstoffsättigung (art.)"       SO2                  BGA
 | 
					"Sauerstoffsättigung (art.)"       SO2                  BGA
 | 
				
			||||||
@@ -124,7 +124,7 @@ Transferrin                        Transferrin          S
 | 
				
			|||||||
"Troponin T (high sensitive)"      hsTnT                S
 | 
					"Troponin T (high sensitive)"      hsTnT                S
 | 
				
			||||||
TSH                                TSH                  S
 | 
					TSH                                TSH                  S
 | 
				
			||||||
"Übergangsepithelien (U)"          Übergangsep.         U
 | 
					"Übergangsepithelien (U)"          Übergangsep.         U
 | 
				
			||||||
Unreife Granulozyten"              Gran                 E
 | 
					"Unreife Granulozyten"             Gran                 E
 | 
				
			||||||
"Urobilinogen (U)"                 Urobilinogen         U
 | 
					"Urobilinogen (U)"                 Urobilinogen         U
 | 
				
			||||||
Vitamin B12                        B12                  S                           X
 | 
					"Vitamin B12"                      B12                  S          ---              X
 | 
				
			||||||
# vim: tw=160 et nowrap fo-=t
 | 
					# vim: tw=160 et nowrap fo-=t
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,22 +1,23 @@
 | 
				
			|||||||
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 | 
					<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 | 
				
			||||||
<SOAP-ENV:Body>
 | 
					<SOAP-ENV:Body>
 | 
				
			||||||
<a1:Settings id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a1:Settings id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<Uid xsi:type="a2:Guid" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
<_a>1443045381</_a>
 | 
					<_a>726346026</_a>
 | 
				
			||||||
<_b>29162</_b>
 | 
					<_b>-9272</_b>
 | 
				
			||||||
<_c>17774</_c>
 | 
					<_c>16670</_c>
 | 
				
			||||||
<_d>182</_d>
 | 
					<_d>156</_d>
 | 
				
			||||||
<_e>243</_e>
 | 
					<_e>154</_e>
 | 
				
			||||||
<_f>111</_f>
 | 
					<_f>68</_f>
 | 
				
			||||||
<_g>227</_g>
 | 
					<_g>185</_g>
 | 
				
			||||||
<_h>16</_h>
 | 
					<_h>192</_h>
 | 
				
			||||||
<_i>47</_i>
 | 
					<_i>11</_i>
 | 
				
			||||||
<_j>142</_j>
 | 
					<_j>64</_j>
 | 
				
			||||||
<_k>57</_k>
 | 
					<_k>27</_k>
 | 
				
			||||||
</Uid>
 | 
					</Uid>
 | 
				
			||||||
<Name id="ref-3">Kopie von Standard für Station</Name>
 | 
					<Name id="ref-3">neu fuer Station</Name>
 | 
				
			||||||
<ReferenceStyle xsi:type="a3:ReferenceStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">IfSpecialOrAbnormal</ReferenceStyle>
 | 
					<ReferenceStyle xsi:type="a3:ReferenceStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">IfSpecialOrAbnormal</ReferenceStyle>
 | 
				
			||||||
 | 
					<AbnormalStyle xsi:type="a3:AbnormalStyle" xmlns:a3="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Formatter/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">Bold</AbnormalStyle>
 | 
				
			||||||
<ElementsCount>4</ElementsCount>
 | 
					<ElementsCount>4</ElementsCount>
 | 
				
			||||||
<Element0Type href="#ref-4"/>
 | 
					<Element0Type href="#ref-4"/>
 | 
				
			||||||
<Element0Object href="#ref-5"/>
 | 
					<Element0Object href="#ref-5"/>
 | 
				
			||||||
@@ -33,7 +34,7 @@
 | 
				
			|||||||
<AssemblyName id="ref-13">zaaReloaded2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ec8d075a1ab1383</AssemblyName>
 | 
					<AssemblyName id="ref-13">zaaReloaded2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ec8d075a1ab1383</AssemblyName>
 | 
				
			||||||
</a2:UnitySerializationHolder>
 | 
					</a2:UnitySerializationHolder>
 | 
				
			||||||
<a4:TwoColumns id="ref-5" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:TwoColumns id="ref-5" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<ChildrenCount>0</ChildrenCount>
 | 
					<ChildrenCount>0</ChildrenCount>
 | 
				
			||||||
</a4:TwoColumns>
 | 
					</a4:TwoColumns>
 | 
				
			||||||
<a2:UnitySerializationHolder id="ref-6" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<a2:UnitySerializationHolder id="ref-6" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
@@ -42,8 +43,8 @@
 | 
				
			|||||||
<AssemblyName href="#ref-13"/>
 | 
					<AssemblyName href="#ref-13"/>
 | 
				
			||||||
</a2:UnitySerializationHolder>
 | 
					</a2:UnitySerializationHolder>
 | 
				
			||||||
<a4:SelectFirstDay id="ref-7" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:SelectFirstDay id="ref-7" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<ChildrenCount>16</ChildrenCount>
 | 
					<ChildrenCount>22</ChildrenCount>
 | 
				
			||||||
<Child0Type href="#ref-15"/>
 | 
					<Child0Type href="#ref-15"/>
 | 
				
			||||||
<Child0Object href="#ref-16"/>
 | 
					<Child0Object href="#ref-16"/>
 | 
				
			||||||
<Child1Type href="#ref-15"/>
 | 
					<Child1Type href="#ref-15"/>
 | 
				
			||||||
@@ -76,24 +77,36 @@
 | 
				
			|||||||
<Child14Object href="#ref-30"/>
 | 
					<Child14Object href="#ref-30"/>
 | 
				
			||||||
<Child15Type href="#ref-15"/>
 | 
					<Child15Type href="#ref-15"/>
 | 
				
			||||||
<Child15Object href="#ref-31"/>
 | 
					<Child15Object href="#ref-31"/>
 | 
				
			||||||
 | 
					<Child16Type href="#ref-15"/>
 | 
				
			||||||
 | 
					<Child16Object href="#ref-32"/>
 | 
				
			||||||
 | 
					<Child17Type href="#ref-15"/>
 | 
				
			||||||
 | 
					<Child17Object href="#ref-33"/>
 | 
				
			||||||
 | 
					<Child18Type href="#ref-34"/>
 | 
				
			||||||
 | 
					<Child18Object href="#ref-35"/>
 | 
				
			||||||
 | 
					<Child19Type href="#ref-34"/>
 | 
				
			||||||
 | 
					<Child19Object href="#ref-36"/>
 | 
				
			||||||
 | 
					<Child20Type href="#ref-34"/>
 | 
				
			||||||
 | 
					<Child20Object href="#ref-37"/>
 | 
				
			||||||
 | 
					<Child21Type href="#ref-15"/>
 | 
				
			||||||
 | 
					<Child21Object href="#ref-38"/>
 | 
				
			||||||
</a4:SelectFirstDay>
 | 
					</a4:SelectFirstDay>
 | 
				
			||||||
<a2:UnitySerializationHolder id="ref-8" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<a2:UnitySerializationHolder id="ref-8" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
<Data id="ref-32">zaaReloaded2.Controller.Elements.NextColumn</Data>
 | 
					<Data id="ref-39">zaaReloaded2.Controller.Elements.NextColumn</Data>
 | 
				
			||||||
<UnityType>4</UnityType>
 | 
					<UnityType>4</UnityType>
 | 
				
			||||||
<AssemblyName href="#ref-13"/>
 | 
					<AssemblyName href="#ref-13"/>
 | 
				
			||||||
</a2:UnitySerializationHolder>
 | 
					</a2:UnitySerializationHolder>
 | 
				
			||||||
<a4:NextColumn id="ref-9" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:NextColumn id="ref-9" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<ChildrenCount>0</ChildrenCount>
 | 
					<ChildrenCount>0</ChildrenCount>
 | 
				
			||||||
</a4:NextColumn>
 | 
					</a4:NextColumn>
 | 
				
			||||||
<a2:UnitySerializationHolder id="ref-10" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<a2:UnitySerializationHolder id="ref-10" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
<Data id="ref-33">zaaReloaded2.Controller.Elements.SelectLastDay</Data>
 | 
					<Data id="ref-40">zaaReloaded2.Controller.Elements.SelectLastDay</Data>
 | 
				
			||||||
<UnityType>4</UnityType>
 | 
					<UnityType>4</UnityType>
 | 
				
			||||||
<AssemblyName href="#ref-13"/>
 | 
					<AssemblyName href="#ref-13"/>
 | 
				
			||||||
</a2:UnitySerializationHolder>
 | 
					</a2:UnitySerializationHolder>
 | 
				
			||||||
<a4:SelectLastDay id="ref-11" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:SelectLastDay id="ref-11" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<ChildrenCount>16</ChildrenCount>
 | 
					<ChildrenCount>22</ChildrenCount>
 | 
				
			||||||
<Child0Type href="#ref-15"/>
 | 
					<Child0Type href="#ref-15"/>
 | 
				
			||||||
<Child0Object href="#ref-16"/>
 | 
					<Child0Object href="#ref-16"/>
 | 
				
			||||||
<Child1Type href="#ref-15"/>
 | 
					<Child1Type href="#ref-15"/>
 | 
				
			||||||
@@ -126,75 +139,116 @@
 | 
				
			|||||||
<Child14Object href="#ref-30"/>
 | 
					<Child14Object href="#ref-30"/>
 | 
				
			||||||
<Child15Type href="#ref-15"/>
 | 
					<Child15Type href="#ref-15"/>
 | 
				
			||||||
<Child15Object href="#ref-31"/>
 | 
					<Child15Object href="#ref-31"/>
 | 
				
			||||||
 | 
					<Child16Type href="#ref-15"/>
 | 
				
			||||||
 | 
					<Child16Object href="#ref-32"/>
 | 
				
			||||||
 | 
					<Child17Type href="#ref-15"/>
 | 
				
			||||||
 | 
					<Child17Object href="#ref-33"/>
 | 
				
			||||||
 | 
					<Child18Type href="#ref-34"/>
 | 
				
			||||||
 | 
					<Child18Object href="#ref-35"/>
 | 
				
			||||||
 | 
					<Child19Type href="#ref-34"/>
 | 
				
			||||||
 | 
					<Child19Object href="#ref-36"/>
 | 
				
			||||||
 | 
					<Child20Type href="#ref-34"/>
 | 
				
			||||||
 | 
					<Child20Object href="#ref-37"/>
 | 
				
			||||||
 | 
					<Child21Type href="#ref-15"/>
 | 
				
			||||||
 | 
					<Child21Object href="#ref-38"/>
 | 
				
			||||||
</a4:SelectLastDay>
 | 
					</a4:SelectLastDay>
 | 
				
			||||||
<a2:UnitySerializationHolder id="ref-15" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
					<a2:UnitySerializationHolder id="ref-15" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
<Data id="ref-34">zaaReloaded2.Controller.Elements.Items</Data>
 | 
					<Data id="ref-41">zaaReloaded2.Controller.Elements.Items</Data>
 | 
				
			||||||
<UnityType>4</UnityType>
 | 
					<UnityType>4</UnityType>
 | 
				
			||||||
<AssemblyName href="#ref-13"/>
 | 
					<AssemblyName href="#ref-13"/>
 | 
				
			||||||
</a2:UnitySerializationHolder>
 | 
					</a2:UnitySerializationHolder>
 | 
				
			||||||
<a4:Items id="ref-16" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-16" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-35">Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure</Content>
 | 
					<Content id="ref-42">Klinische Chemie: Na, K, Cl, Mg, Ca, P, CaxP, Alb, Prot, Haptoglobin, LDH, Glukose, Harnsäure</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-17" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-17" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-36">Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL</Content>
 | 
					<Content id="ref-43">Entzündung/Immunsystem: CRP, Pct, C3c, C4, Anti-DNAse B, ASL</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-18" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-18" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-37">Kardiale Marker: CK, CKMB, Trop, NTproBNP</Content>
 | 
					<Content id="ref-44">Kardiale Marker: CK, CKMB, Trop, NTproBNP</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-19" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-19" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-38">Niere: Krea, Hst, eGFR (CKD-EPI)</Content>
 | 
					<Content id="ref-45">Niere: Krea, Hst, eGFR (CKD-EPI)</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-20" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-20" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-39">Sammelurin: SU-Proteinurie, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Natrium, SU-Zeit, SU-Volumen</Content>
 | 
					<Content id="ref-46">Sammelurin: SU-Proteinurie, SU-Alb, SU-CrCl, SU-HstCl, SU-GFR, SU-Natrium, SU-Zeit, SU-Volumen</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-21" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-21" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-40">Spot-Urin: U-*</Content>
 | 
					<Content id="ref-47">Spot-Urin: U-TPCR, U-ACR, U-Ery, U-Leu, U-Bakt</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-22" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-22" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-41">Leber: GOT, GGT, GPT, AP, Bilirubin, CHE</Content>
 | 
					<Content id="ref-48">Leber: GOT, GGT, GPT, AP, Bilirubin, CHE</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-23" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-23" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-42">Blutfette: TG, Chol, LDL, HDL, Lp(a)</Content>
 | 
					<Content id="ref-49">Blutfette: TG, Chol, LDL, HDL, Lp(a)</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-24" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-24" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-43">Hämatologie: Hb, Hkt, Reti, Leu, Thr, Ery, Neu, Lym, Mon, Baso, Eos, MCV, HbA1c, Retikulozyten, Fragmentozyten</Content>
 | 
					<Content id="ref-50">Hämatologie: Hb, Hkt, Reti, Leu, Thr, MCV, HbA1c, Retikulozyten, Fragmentozyten</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-25" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-25" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-44">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</Content>
 | 
					<Content id="ref-51">Diff.-BB: Neu, Lym, Mon, Baso, Eos</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-26" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-26" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-45">Hormone: iPTH, TSH</Content>
 | 
					<Content id="ref-52">Gerinnung: Quick, INR, PTT, Fibrinogen, ATIII, Anti-Xa</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-27" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-27" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-46">Medikamente: TAC, CSA, SIR, Vancomycin, Gentamicin, Tobramicin</Content>
 | 
					<Content id="ref-53">Serum-Elektrophorese: Albumin-Fraktion, a1-Globulin, a2-Globulin, b-Globulin, g-Globulin</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-28" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-28" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-47">Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.</Content>
 | 
					<Content id="ref-54">Hormone: iPTH, TSH, fT3, fT4</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-29" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-29" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-48">BGA: pH, Std.-Bic., BE</Content>
 | 
					<Content id="ref-55">Vitamine: B12, Folsäure</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-30" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-30" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-49">Hepatitis-Serologie: Anti-HBs, Anti-HBc</Content>
 | 
					<Content id="ref-56">Eisenhaushalt: Eisen, Ferritin, Transferrin, Tf.-Sätt.</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
<a4:Items id="ref-31" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
					<a4:Items id="ref-31" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
<Version>1</Version>
 | 
					<Version>2</Version>
 | 
				
			||||||
<Content id="ref-50">Weitere Werte: *</Content>
 | 
					<Content id="ref-57">BGA: pH, Std.-Bic., BE</Content>
 | 
				
			||||||
 | 
					</a4:Items>
 | 
				
			||||||
 | 
					<a4:Items id="ref-32" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
 | 
					<Version>2</Version>
 | 
				
			||||||
 | 
					<Content id="ref-58">Hepatitis-Serologie: Anti-HBs, Anti-HBc</Content>
 | 
				
			||||||
 | 
					</a4:Items>
 | 
				
			||||||
 | 
					<a4:Items id="ref-33" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
 | 
					<Version>2</Version>
 | 
				
			||||||
 | 
					<Content id="ref-59">Medikamente: TAC "(Ziel-Talspiegel: <*** BITTE ANGEBEN***> µg/l)", CSA (C0) "(Ziel-Talspiegel: <*** BITTE ANGEBEN***> µg/l)", SIR "(Ziel-Talspiegel: <*** BITTE ANGEBEN***> µg/l)", Vancomycin, Gentamicin, Tobramicin</Content>
 | 
				
			||||||
 | 
					</a4:Items>
 | 
				
			||||||
 | 
					<a2:UnitySerializationHolder id="ref-34" xmlns:a2="http://schemas.microsoft.com/clr/ns/System">
 | 
				
			||||||
 | 
					<Data id="ref-60">zaaReloaded2.Controller.Elements.CustomText</Data>
 | 
				
			||||||
 | 
					<UnityType>4</UnityType>
 | 
				
			||||||
 | 
					<AssemblyName href="#ref-13"/>
 | 
				
			||||||
 | 
					</a2:UnitySerializationHolder>
 | 
				
			||||||
 | 
					<a4:CustomText id="ref-35" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
 | 
					<Version>2</Version>
 | 
				
			||||||
 | 
					<Content id="ref-61">Virologie (EDTA-Blut): CMV-PCR, BKV-PCR</Content>
 | 
				
			||||||
 | 
					</a4:CustomText>
 | 
				
			||||||
 | 
					<a4:CustomText id="ref-36" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
 | 
					<Version>2</Version>
 | 
				
			||||||
 | 
					<Content id="ref-62">Nephrolog. Sediment: pH, Proteinurie, Ery /µl, Leu /µl, Plattenep. /µl, Bakt., Schleimfäden</Content>
 | 
				
			||||||
 | 
					</a4:CustomText>
 | 
				
			||||||
 | 
					<a4:CustomText id="ref-37" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
 | 
					<Version>2</Version>
 | 
				
			||||||
 | 
					<Content id="ref-63">Autoantikörper: ANCA (IF), MPO-ANCA (ELISA), PR3-ANCA (ELISA), ANA (IF), AnDNA (ELISA), AnDNA (RIA)</Content>
 | 
				
			||||||
 | 
					</a4:CustomText>
 | 
				
			||||||
 | 
					<a4:Items id="ref-38" xmlns:a4="http://schemas.microsoft.com/clr/nsassem/zaaReloaded2.Controller.Elements/zaaReloaded2%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3D6ec8d075a1ab1383">
 | 
				
			||||||
 | 
					<Version>2</Version>
 | 
				
			||||||
 | 
					<Content id="ref-64">Tumormarker: PSA</Content>
 | 
				
			||||||
</a4:Items>
 | 
					</a4:Items>
 | 
				
			||||||
</SOAP-ENV:Body>
 | 
					</SOAP-ENV:Body>
 | 
				
			||||||
</SOAP-ENV:Envelope>
 | 
					</SOAP-ENV:Envelope>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,7 @@
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Text;
 | 
					 | 
				
			||||||
using Microsoft.Office.Interop.Word;
 | 
					using Microsoft.Office.Interop.Word;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2.Demo
 | 
					namespace zaaReloaded2.Demo
 | 
				
			||||||
@@ -43,6 +39,7 @@ namespace zaaReloaded2.Demo
 | 
				
			|||||||
            Document demoDoc = Globals.ThisAddIn.Application.Documents
 | 
					            Document demoDoc = Globals.ThisAddIn.Application.Documents
 | 
				
			||||||
                .Add(Template: tempFile);
 | 
					                .Add(Template: tempFile);
 | 
				
			||||||
            File.Delete(tempFile);
 | 
					            File.Delete(tempFile);
 | 
				
			||||||
 | 
					            Globals.ThisAddIn.Ribbon.ActivateZaaTab();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -83,7 +83,7 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
        static void FixSalutation(Document document)
 | 
					        static void FixSalutation(Document document)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Regex sal = new Regex(@"^Mit.*?Grüßen\r");
 | 
					            Regex sal = new Regex(@"^Mit.*?Grüßen\r");
 | 
				
			||||||
            Regex med = new Regex(@"^((Häusl|Empf).*?Medikat)|Therapieempf");
 | 
					            Regex med = new Regex(@"^((Häusl|Empf).*?Medikat)|^Therapieempf");
 | 
				
			||||||
            foreach (Paragraph p in document.Paragraphs)
 | 
					            foreach (Paragraph p in document.Paragraphs)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (sal.IsMatch(p.Range.Text)) p.Range.Text = "Mit freundlichen, kollegialen Grüßen,\r";
 | 
					                if (sal.IsMatch(p.Range.Text)) p.Range.Text = "Mit freundlichen, kollegialen Grüßen,\r";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ using System.Linq;
 | 
				
			|||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using Microsoft.Office.Interop.Word;
 | 
					using Microsoft.Office.Interop.Word;
 | 
				
			||||||
using System.Text.RegularExpressions;
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
 | 
					using System.Collections.ObjectModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2.Formatter
 | 
					namespace zaaReloaded2.Formatter
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -192,6 +193,7 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            string[] substrings = _markupRegex.Split(text);
 | 
					            string[] substrings = _markupRegex.Split(text);
 | 
				
			||||||
            Selection sel = Document.ActiveWindow.Selection;
 | 
					            Selection sel = Document.ActiveWindow.Selection;
 | 
				
			||||||
 | 
					            Highlights hightlights = new Highlights();
 | 
				
			||||||
            foreach (string substring in substrings)
 | 
					            foreach (string substring in substrings)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                switch (substring)
 | 
					                switch (substring)
 | 
				
			||||||
@@ -214,6 +216,12 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
                    case "</u>":
 | 
					                    case "</u>":
 | 
				
			||||||
                        sel.Font.Underline = WdUnderline.wdUnderlineNone;
 | 
					                        sel.Font.Underline = WdUnderline.wdUnderlineNone;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case "<highlight>":
 | 
				
			||||||
 | 
					                        hightlights.Start(sel.Range);
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case "</highlight>":
 | 
				
			||||||
 | 
					                        hightlights.Stop(sel.Range);
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
                    case "</style>":
 | 
					                    case "</style>":
 | 
				
			||||||
                        sel.ClearCharacterStyle();
 | 
					                        sel.ClearCharacterStyle();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
@@ -230,6 +238,7 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            hightlights.ApplyHighlights();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
@@ -241,7 +250,52 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
        // The splitting pattern must not contain subgroups!
 | 
					        // The splitting pattern must not contain subgroups!
 | 
				
			||||||
        static readonly Regex _markupRegex = new Regex(@"(<[^ >]+>)");
 | 
					        static readonly Regex _markupRegex = new Regex(@"(<[^ >]+>)");
 | 
				
			||||||
        static readonly Regex _styleRegex = new Regex(@"<style:(?<style>[^>]+)>");
 | 
					        static readonly Regex _styleRegex = new Regex(@"<style:(?<style>[^>]+)>");
 | 
				
			||||||
 | 
					        static Range _highlightStart;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Helper class for highlighting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Embedded helper class to manage highlights.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        class Highlights
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public void Start(Range start)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_currentHighlight == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _currentHighlight = start;
 | 
				
			||||||
 | 
					                    _highlights.Add(_currentHighlight);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public void Stop(Range stop)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_currentHighlight != null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _currentHighlight.End = stop.End;
 | 
				
			||||||
 | 
					                    _currentHighlight = null;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public void ApplyHighlights()
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                foreach (Range r in _highlights)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    r.HighlightColorIndex = WdColorIndex.wdYellow;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            public Highlights()
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _highlights = new Collection<Range>();
 | 
				
			||||||
 | 
					                _currentHighlight = null;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Collection<Range> _highlights;
 | 
				
			||||||
 | 
					            Range _currentHighlight;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,9 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        #region Properties
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets the Settings that this Formatter works with.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
        public Settings Settings { get; set; }
 | 
					        public Settings Settings { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@@ -66,9 +69,17 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Is true if this Formatter object carries a Laboratory with
 | 
					        /// Is true if this Formatter object carries a Laboratory with
 | 
				
			||||||
        /// at least one time point.
 | 
					        /// at least one time point, and if there are Settings to work with.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public bool CanRun { get { return Laboratory.TimePoints.Count > 0; } }
 | 
					        public bool CanRun
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return (Settings != null)
 | 
				
			||||||
 | 
					                    && (Laboratory != null)
 | 
				
			||||||
 | 
					                    && (Laboratory.TimePoints.Count > 0);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -119,14 +130,25 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
        /// current position of the cursor).</param>
 | 
					        /// current position of the cursor).</param>
 | 
				
			||||||
        public void Run()
 | 
					        public void Run()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!CanRun) throw new NoLaboratoryDataException("No laboratory data to format.");
 | 
					            if (!CanRun)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (Settings == null)
 | 
				
			||||||
 | 
					                    throw new InvalidOperationException("No settings data to work with.");
 | 
				
			||||||
 | 
					                if ((Laboratory == null) || Laboratory.TimePoints.Count == 0)
 | 
				
			||||||
 | 
					                    throw new NoLaboratoryDataException("No laboratory data to format.");
 | 
				
			||||||
 | 
					                throw new InvalidOperationException("Cannot run formatter.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Create undo record and styles prior to iterating over the elements
 | 
					            // Create undo record and styles prior to iterating over the elements
 | 
				
			||||||
            // because a column switching element might trigger output to the
 | 
					            // because a column switching element might trigger output to the
 | 
				
			||||||
            // document.
 | 
					            // document.
 | 
				
			||||||
 | 
					            bool hasAddin = Globals.ThisAddIn != null;
 | 
				
			||||||
 | 
					            if (hasAddin)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
                Globals.ThisAddIn.Application.UndoRecord.StartCustomRecord(
 | 
					                Globals.ThisAddIn.Application.UndoRecord.StartCustomRecord(
 | 
				
			||||||
                    String.Format("Laborformatierung ({0})", Properties.Settings.Default.AddinName)
 | 
					                    String.Format("Laborformatierung ({0})", Properties.Settings.Default.AddinName)
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            CreateStyles();
 | 
					            CreateStyles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            int current = 0;
 | 
					            int current = 0;
 | 
				
			||||||
@@ -155,8 +177,11 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            _secondaryBuffer.Flush();
 | 
					            _secondaryBuffer.Flush();
 | 
				
			||||||
 | 
					            if (hasAddin)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
                Globals.ThisAddIn.Application.UndoRecord.EndCustomRecord();
 | 
					                Globals.ThisAddIn.Application.UndoRecord.EndCustomRecord();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
        /// Selects one time point per day in the laboratory.
 | 
					        /// Selects one time point per day in the laboratory.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ using System.Linq;
 | 
				
			|||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using Microsoft.Office.Interop.Word;
 | 
					using Microsoft.Office.Interop.Word;
 | 
				
			||||||
using zaaReloaded2.LabModel;
 | 
					using zaaReloaded2.LabModel;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2.Formatter
 | 
					namespace zaaReloaded2.Formatter
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -70,6 +71,11 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public bool IsBlacklisted { get { return LabItem.IsBlacklisted;  } }
 | 
					        public bool IsBlacklisted { get { return LabItem.IsBlacklisted;  } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets the item's comment.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public ItemComment Comment { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #region Constructor
 | 
					        #region Constructor
 | 
				
			||||||
@@ -169,21 +175,31 @@ namespace zaaReloaded2.Formatter
 | 
				
			|||||||
                value = LabItem.Value;
 | 
					                value = LabItem.Value;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            string comment = String.Empty;
 | 
				
			||||||
 | 
					            if (Comment != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                comment = Comment.BuildComment();
 | 
				
			||||||
 | 
					                if (comment != String.Empty) comment = " " + comment;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            string name = IncludeMaterial ? LabItem.QualifiedName : LabItem.Name;
 | 
					            string name = IncludeMaterial ? LabItem.QualifiedName : LabItem.Name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            string output =
 | 
					            string output =
 | 
				
			||||||
                String.Format(
 | 
					                String.Format(
 | 
				
			||||||
                    "{0} {1}{2}{3}",
 | 
					                    "{0} {1}{2}{3}{4}",
 | 
				
			||||||
                    name,
 | 
					                    name,
 | 
				
			||||||
                    value,
 | 
					                    value,
 | 
				
			||||||
                    unit,
 | 
					                    unit,
 | 
				
			||||||
                    reference
 | 
					                    reference,
 | 
				
			||||||
 | 
					                    comment
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
            if (!LabItem.IsNormal)
 | 
					            if (!LabItem.IsNormal)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                output = AbnormalStyle.ToMarkup(false) + output + AbnormalStyle.ToMarkup(true);
 | 
					                output = AbnormalStyle.ToMarkup(false) + output + AbnormalStyle.ToMarkup(true);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            formatter.Write(output);
 | 
					            formatter.Write(output);
 | 
				
			||||||
            HasBeenUsed = true;
 | 
					            HasBeenUsed = true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										118
									
								
								zaaReloaded2/Importer/ZaaImporter/AutoDetect.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,118 @@
 | 
				
			|||||||
 | 
					using Microsoft.Office.Interop.Word;
 | 
				
			||||||
 | 
					/* AutoDetect.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Importer.ZaaImporter
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    static class AutoDetect
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Attempts to automatically detect laboratory data in the Word
 | 
				
			||||||
 | 
					        /// document.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="document">Document which to parse for laboratory
 | 
				
			||||||
 | 
					        /// data.</param>
 | 
				
			||||||
 | 
					        /// <returns>True if laboratory data was detected, false if not.</returns>
 | 
				
			||||||
 | 
					        /// <exception cref="ArgumentNullException">if <paramref name="document"/>
 | 
				
			||||||
 | 
					        /// is null.</exception>
 | 
				
			||||||
 | 
					        public static bool Detect(Document document)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (document == null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                throw new ArgumentNullException(
 | 
				
			||||||
 | 
					                    "Automatic laboratory detection requires a document.");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // TODO: Try to make this algorithm more elegant.
 | 
				
			||||||
 | 
					            Paragraph start = null;
 | 
				
			||||||
 | 
					            Paragraph end = null;
 | 
				
			||||||
 | 
					            int i = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (document.Bookmarks.Exists("Labor"))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                i = GetParagraphIndex(
 | 
				
			||||||
 | 
					                    document,
 | 
				
			||||||
 | 
					                    document.Bookmarks["Labor"].Range.Paragraphs[1]);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            while (i <= document.Paragraphs.Count)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Expect the first paragraph of a Lauris block to be
 | 
				
			||||||
 | 
					                // a time stamp. This prevents erroneous detection of
 | 
				
			||||||
 | 
					                // lines such as "Tel. (09 31) 201-39432; -39126", which
 | 
				
			||||||
 | 
					                // happen to structurally resemble a paragraph with
 | 
				
			||||||
 | 
					                // laboratory items.
 | 
				
			||||||
 | 
					                if (LaurisTimePoint.IsTimeStampLine(
 | 
				
			||||||
 | 
					                    document.Paragraphs[i].Range.Text))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    start = document.Paragraphs[i];
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                i++;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (start != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                end = start;
 | 
				
			||||||
 | 
					                while (i <= document.Paragraphs.Count - 1)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (!IsLabParagraph(document.Paragraphs[i+1]))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        end = document.Paragraphs[i];
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    i++;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                document.Range(start.Range.Start, end.Range.End).Select();
 | 
				
			||||||
 | 
					                return true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Returns true if a paragraph is either a time stamp line
 | 
				
			||||||
 | 
					        /// or a paragraph with laboratory items.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <param name="paragraph"></param>
 | 
				
			||||||
 | 
					        /// <returns></returns>
 | 
				
			||||||
 | 
					        private static bool IsLabParagraph(Paragraph paragraph)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            string text = paragraph.Range.Text;
 | 
				
			||||||
 | 
					            return (LaurisParagraph.ResemblesLaurisParagraph(text)
 | 
				
			||||||
 | 
					                || LaurisTimePoint.IsTimeStampLine(text));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Returns the index of a paragraph.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <remarks>
 | 
				
			||||||
 | 
					        /// http://word.mvps.org/faqs/macrosvba/GetIndexNoOfPara.htm
 | 
				
			||||||
 | 
					        /// </remarks>
 | 
				
			||||||
 | 
					        /// <param name="paragraph">Paragraph whose index to return.</param>
 | 
				
			||||||
 | 
					        /// <returns>Index of the paragraph.</returns>
 | 
				
			||||||
 | 
					        private static int GetParagraphIndex(Document document, Paragraph paragraph)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return document.Range(0, paragraph.Range.Start).Paragraphs.Count;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -154,6 +154,10 @@ namespace zaaReloaded2.Importer.ZaaImporter
 | 
				
			|||||||
                            LowerLimit = Double.Parse(limitMatch.Groups["limit2"].Value.Replace(',', '.'),
 | 
					                            LowerLimit = Double.Parse(limitMatch.Groups["limit2"].Value.Replace(',', '.'),
 | 
				
			||||||
                                CultureInfo.InvariantCulture);
 | 
					                                CultureInfo.InvariantCulture);
 | 
				
			||||||
                            break;
 | 
					                            break;
 | 
				
			||||||
 | 
					                        case "":
 | 
				
			||||||
 | 
					                            // NOOP for special cases such as "[s. Bem.]" which occurs in NT-proBNP
 | 
				
			||||||
 | 
					                            // Fixes exception ID 65ca8575.
 | 
				
			||||||
 | 
					                            break;
 | 
				
			||||||
                        default:
 | 
					                        default:
 | 
				
			||||||
                            throw new InvalidOperationException(
 | 
					                            throw new InvalidOperationException(
 | 
				
			||||||
                                String.Format("Unknown operator in {0}",
 | 
					                                String.Format("Unknown operator in {0}",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -236,7 +236,7 @@ namespace zaaReloaded2.Importer.ZaaImporter
 | 
				
			|||||||
        /// paragraph of a LaurisText.
 | 
					        /// paragraph of a LaurisText.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        static readonly Regex _timeStampRegex = new Regex(
 | 
					        static readonly Regex _timeStampRegex = new Regex(
 | 
				
			||||||
            @"^(Labor:)?\s*\(?\s*(?<datetime>\d\d\.\d\d\.\d\d\d\d\s+\d\d:\d\d)");
 | 
					            @"^(Labor:?)?\s*\(?\s*(?<datetime>\d\d\.\d\d\.\d\d\d\d\s+\d\d:\d\d)");
 | 
				
			||||||
        IList<String> _paragraphs;
 | 
					        IList<String> _paragraphs;
 | 
				
			||||||
        Parameters _parameterDictionary;
 | 
					        Parameters _parameterDictionary;
 | 
				
			||||||
        Units _unitDictionary;
 | 
					        Units _unitDictionary;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										73
									
								
								zaaReloaded2/Preferences.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,73 @@
 | 
				
			|||||||
 | 
					/* Preferences.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Holds user preferences.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class Preferences
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Singleton
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static Preferences Default
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return _instance;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static readonly Preferences _instance = new Preferences();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static Preferences() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Gets or sets whether the add-in should not ask for
 | 
				
			||||||
 | 
					        /// item comments (i.e. typist mode).
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public bool SuppressItemCommentInteraction
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return Properties.Settings.Default.SuppressItemCommentInteraction;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Properties.Settings.Default.SuppressItemCommentInteraction = value;
 | 
				
			||||||
 | 
					                Properties.Settings.Default.Save();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        protected Preferences()  { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										42
									
								
								zaaReloaded2/Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						@@ -222,5 +222,47 @@ namespace zaaReloaded2.Properties {
 | 
				
			|||||||
                return ((global::zaaReloaded2.Formatter.AbnormalStyle)(this["AbnormalStyle"]));
 | 
					                return ((global::zaaReloaded2.Formatter.AbnormalStyle)(this["AbnormalStyle"]));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        [global::System.Configuration.UserScopedSettingAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Configuration.DefaultSettingValueAttribute("False")]
 | 
				
			||||||
 | 
					        public bool SuppressItemCommentInteraction {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ((bool)(this["SuppressItemCommentInteraction"]));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            set {
 | 
				
			||||||
 | 
					                this["SuppressItemCommentInteraction"] = value;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        [global::System.Configuration.UserScopedSettingAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Configuration.DefaultSettingValueAttribute("False")]
 | 
				
			||||||
 | 
					        public bool FirstRunWizardShown {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ((bool)(this["FirstRunWizardShown"]));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            set {
 | 
				
			||||||
 | 
					                this["FirstRunWizardShown"] = value;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        [global::System.Configuration.ApplicationScopedSettingAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Configuration.DefaultSettingValueAttribute("BITTE_ERGÄNZEN")]
 | 
				
			||||||
 | 
					        public string ManualCommentPrompt {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ((string)(this["ManualCommentPrompt"]));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        [global::System.Configuration.ApplicationScopedSettingAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
 | 
				
			||||||
 | 
					        [global::System.Configuration.DefaultSettingValueAttribute("http://git.bovender.de")]
 | 
				
			||||||
 | 
					        public string Repository {
 | 
				
			||||||
 | 
					            get {
 | 
				
			||||||
 | 
					                return ((string)(this["Repository"]));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -65,5 +65,17 @@
 | 
				
			|||||||
    <Setting Name="AbnormalStyle" Type="zaaReloaded2.Formatter.AbnormalStyle" Scope="Application">
 | 
					    <Setting Name="AbnormalStyle" Type="zaaReloaded2.Formatter.AbnormalStyle" Scope="Application">
 | 
				
			||||||
      <Value Profile="(Default)">None</Value>
 | 
					      <Value Profile="(Default)">None</Value>
 | 
				
			||||||
    </Setting>
 | 
					    </Setting>
 | 
				
			||||||
 | 
					    <Setting Name="SuppressItemCommentInteraction" Type="System.Boolean" Scope="User">
 | 
				
			||||||
 | 
					      <Value Profile="(Default)">False</Value>
 | 
				
			||||||
 | 
					    </Setting>
 | 
				
			||||||
 | 
					    <Setting Name="FirstRunWizardShown" Type="System.Boolean" Scope="User">
 | 
				
			||||||
 | 
					      <Value Profile="(Default)">False</Value>
 | 
				
			||||||
 | 
					    </Setting>
 | 
				
			||||||
 | 
					    <Setting Name="ManualCommentPrompt" Type="System.String" Scope="Application">
 | 
				
			||||||
 | 
					      <Value Profile="(Default)">BITTE_ERGÄNZEN</Value>
 | 
				
			||||||
 | 
					    </Setting>
 | 
				
			||||||
 | 
					    <Setting Name="Repository" Type="System.String" Scope="Application">
 | 
				
			||||||
 | 
					      <Value Profile="(Default)">http://git.bovender.de</Value>
 | 
				
			||||||
 | 
					    </Setting>
 | 
				
			||||||
  </Settings>
 | 
					  </Settings>
 | 
				
			||||||
</SettingsFile>
 | 
					</SettingsFile>
 | 
				
			||||||
@@ -23,13 +23,6 @@ using System.Windows;
 | 
				
			|||||||
using System.Drawing;
 | 
					using System.Drawing;
 | 
				
			||||||
using System.Windows.Resources;
 | 
					using System.Windows.Resources;
 | 
				
			||||||
using Office = Microsoft.Office.Core;
 | 
					using Office = Microsoft.Office.Core;
 | 
				
			||||||
using zaaReloaded2.Views;
 | 
					 | 
				
			||||||
using zaaReloaded2.ViewModels;
 | 
					 | 
				
			||||||
using zaaReloaded2.Importer.ZaaImporter;
 | 
					 | 
				
			||||||
using zaaReloaded2.Formatter;
 | 
					 | 
				
			||||||
using zaaReloaded2.Controller;
 | 
					 | 
				
			||||||
using Word = Microsoft.Office.Interop.Word;
 | 
					 | 
				
			||||||
using Bovender.Mvvm.Actions;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO:  Follow these steps to enable the Ribbon (XML) item:
 | 
					// TODO:  Follow these steps to enable the Ribbon (XML) item:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,22 +88,22 @@ namespace zaaReloaded2
 | 
				
			|||||||
                switch (control.Id)
 | 
					                switch (control.Id)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    case "zrlFormat":
 | 
					                    case "zrlFormat":
 | 
				
			||||||
                        DoFormat();
 | 
					                        Commands.Format();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "zrlSettings":
 | 
					                    case "zrlSettings":
 | 
				
			||||||
                        DoChooseSettings();
 | 
					                        Commands.ChooseSettings();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "zrlAbout":
 | 
					                    case "zrlAbout":
 | 
				
			||||||
                        ViewModels.AboutViewModel vm = new ViewModels.AboutViewModel();
 | 
					                        Commands.ShowAbout();
 | 
				
			||||||
                        vm.InjectInto<Views.AboutView>().ShowDialog();
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case "zrlPreferences":
 | 
				
			||||||
 | 
					                        Commands.ShowPreferences();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "zrlDaniel":
 | 
					                    case "zrlDaniel":
 | 
				
			||||||
                        Formatter.DanielsStyle.Apply(
 | 
					                        Commands.ApplyDanielsStyle();
 | 
				
			||||||
                            Globals.ThisAddIn.Application.ActiveDocument,
 | 
					 | 
				
			||||||
                            Globals.ThisAddIn.Application.Selection);
 | 
					 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case "zrlDemo":
 | 
					                    case "zrlDemo":
 | 
				
			||||||
                        DoLoadDemo();
 | 
					                        Commands.LoadDemo();
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    default:
 | 
					                    default:
 | 
				
			||||||
                        throw new InvalidOperationException("No operation defined for " + control.Id);
 | 
					                        throw new InvalidOperationException("No operation defined for " + control.Id);
 | 
				
			||||||
@@ -152,130 +145,32 @@ namespace zaaReloaded2
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// Returns true if there is at least one paragraph selected.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <remarks>
 | 
					 | 
				
			||||||
        /// The Selection object in Word is a bit tricky: Its Length property
 | 
					 | 
				
			||||||
        /// is never 0, because even if no text passage is selected, the character
 | 
					 | 
				
			||||||
        /// after the cursor is the content of the Selection.
 | 
					 | 
				
			||||||
        /// </remarks>
 | 
					 | 
				
			||||||
        public bool CanFormat(Office.IRibbonControl control)
 | 
					        public bool CanFormat(Office.IRibbonControl control)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Word.Selection s = Globals.ThisAddIn.Application.ActiveWindow.Selection;
 | 
					            return Commands.CanFormat();
 | 
				
			||||||
            return s.Paragraphs.Count > 1 || 
 | 
					        }
 | 
				
			||||||
                (s.Text.Length > 1 && s.Text.EndsWith("\r"));
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Public methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Activates the add-in's tab.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public void ActivateZaaTab()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _ribbon.ActivateTab("zaaReloaded2");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #region Private methods
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoFormat()
 | 
					        private void Application_WindowSelectionChange(Microsoft.Office.Interop.Word.Selection Sel)
 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (CanFormat(null))
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                SettingsRepository repository = SettingsRepository.Load();
 | 
					 | 
				
			||||||
                Guid lastSettingsUid = Properties.Settings.Default.LastSettings;
 | 
					 | 
				
			||||||
                Settings lastSettings = repository.FindByGuid(lastSettingsUid);
 | 
					 | 
				
			||||||
                if (lastSettings != null)
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    DoFormat(lastSettings);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    DoChooseSettings();
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        void DoFormat(Settings settings)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            ZaaImporter importer = new ZaaImporter();
 | 
					 | 
				
			||||||
            importer.Import(Globals.ThisAddIn.Application.ActiveWindow.Selection.Text);
 | 
					 | 
				
			||||||
            Formatter.Formatter formatter = new Formatter.Formatter(
 | 
					 | 
				
			||||||
                Globals.ThisAddIn.Application.ActiveDocument);
 | 
					 | 
				
			||||||
            formatter.Settings = settings;
 | 
					 | 
				
			||||||
            formatter.Laboratory = importer.Laboratory;
 | 
					 | 
				
			||||||
            try
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                formatter.Run();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (NoLaboratoryDataException)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                NotificationAction a = new NotificationAction();
 | 
					 | 
				
			||||||
                a.Caption = "Formatieren nicht möglich";
 | 
					 | 
				
			||||||
                a.Message = "Die aktuelle Markierung scheint keine Labordaten zu enthalten.";
 | 
					 | 
				
			||||||
                a.OkButtonLabel = "Schließen";
 | 
					 | 
				
			||||||
                a.Invoke();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        void DoChooseSettings()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            SettingsRepository repository = SettingsRepository.Load();
 | 
					 | 
				
			||||||
            SettingsRepositoryViewModel vm = new SettingsRepositoryViewModel(repository);
 | 
					 | 
				
			||||||
            vm.UseSettingsMessage.Sent += (sender, args) =>
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                SettingsViewModel settingsVM = args.Content.ViewModel as SettingsViewModel;
 | 
					 | 
				
			||||||
                Settings settings = settingsVM.RevealModelObject() as Settings;
 | 
					 | 
				
			||||||
                DoFormat(settings);
 | 
					 | 
				
			||||||
                Properties.Settings.Default.LastSettings = settings.Uid;
 | 
					 | 
				
			||||||
                Properties.Settings.Default.Save();
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
            vm.InjectInto<SettingsRepositoryView>().ShowDialog();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        /// <summary>
 | 
					 | 
				
			||||||
        /// Loads the embedded demo document.
 | 
					 | 
				
			||||||
        /// </summary>
 | 
					 | 
				
			||||||
        /// <remarks>
 | 
					 | 
				
			||||||
        /// If Word is running in an embedded environment (e.g. in the ZAA),
 | 
					 | 
				
			||||||
        /// adding a document causes a COMException. Unfortunately, it is
 | 
					 | 
				
			||||||
        /// not trivial to test if Word is running embedded, so we use a
 | 
					 | 
				
			||||||
        /// try...catch structure and catch all COMExceptions. The error
 | 
					 | 
				
			||||||
        /// message might be not quite right if the exception was caused by
 | 
					 | 
				
			||||||
        /// a different problem.
 | 
					 | 
				
			||||||
        /// See http://davecra.com/2013/04/10/how-to-determine-if-an-excel-workbook-is-embedded-and-more
 | 
					 | 
				
			||||||
        /// </remarks>
 | 
					 | 
				
			||||||
        void DoLoadDemo()
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            try
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                Demo.Demo.OpenDemoDocument();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            catch (System.Runtime.InteropServices.COMException e)
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                // HRESULT comparison according to http://stackoverflow.com/a/1426198/270712
 | 
					 | 
				
			||||||
                // Fix for exception ID 65a5c34e
 | 
					 | 
				
			||||||
                if (e.ErrorCode == unchecked((int)0x800A11FD))
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    NotificationAction a = new NotificationAction();
 | 
					 | 
				
			||||||
                    a.Caption = "Kann Demo-Dokument nicht laden";
 | 
					 | 
				
			||||||
                    a.Message = "Das Demo-Dokument kann nicht geladen werden, "
 | 
					 | 
				
			||||||
                        + "wenn Word in der Zentralen Arztbriefablage ausgeführt wird.\r"
 | 
					 | 
				
			||||||
                        + "Bitte Word als eigenständige Anwendung starten und dann "
 | 
					 | 
				
			||||||
                        + "noch einmal versuchen.";
 | 
					 | 
				
			||||||
                    a.OkButtonLabel = "Schließen";
 | 
					 | 
				
			||||||
                    a.Invoke();
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    throw;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void Application_WindowSelectionChange(Microsoft.Office.Interop.Word.Selection Sel)
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _ribbon.Invalidate();
 | 
					            _ribbon.Invalidate();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        #region Helpers
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        private static string GetResourceText(string resourceName)
 | 
					        private static string GetResourceText(string resourceName)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Assembly asm = Assembly.GetExecutingAssembly();
 | 
					            Assembly asm = Assembly.GetExecutingAssembly();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,6 +36,9 @@
 | 
				
			|||||||
					<button id="zrlDemo" label="Demo" image="d.png" onAction="Ribbon_Click" size="large"
 | 
										<button id="zrlDemo" label="Demo" image="d.png" onAction="Ribbon_Click" size="large"
 | 
				
			||||||
							screentip="Demo-Dokument öffnen"
 | 
												screentip="Demo-Dokument öffnen"
 | 
				
			||||||
							supertip="Öffnet ein eingebautes Demo-Dokument, das zum Ausprobieren verwendet werden kann." />
 | 
												supertip="Öffnet ein eingebautes Demo-Dokument, das zum Ausprobieren verwendet werden kann." />
 | 
				
			||||||
 | 
										<button id="zrlPreferences" label="Einstellungen" image="gear.png" onAction="Ribbon_Click" size="large"
 | 
				
			||||||
 | 
												screentip="Benutzer-Einstellungen"
 | 
				
			||||||
 | 
												supertip="Erlaubt das Einschalten des Sekretariats-Modus." />
 | 
				
			||||||
					<button id="zrlAbout" label="Über..." image="i.png" onAction="Ribbon_Click" size="large"
 | 
										<button id="zrlAbout" label="Über..." image="i.png" onAction="Ribbon_Click" size="large"
 | 
				
			||||||
							screentip="Über zaaReloaded"
 | 
												screentip="Über zaaReloaded"
 | 
				
			||||||
							supertip="Zeigt Informationen über das Add-in an." />
 | 
												supertip="Zeigt Informationen über das Add-in an." />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,17 +16,14 @@
 | 
				
			|||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					 | 
				
			||||||
using System.Linq;
 | 
					 | 
				
			||||||
using System.Text;
 | 
					 | 
				
			||||||
using System.Xml.Linq;
 | 
					 | 
				
			||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
using Word = Microsoft.Office.Interop.Word;
 | 
					 | 
				
			||||||
using Office = Microsoft.Office.Core;
 | 
					 | 
				
			||||||
using Microsoft.Office.Tools.Word;
 | 
					 | 
				
			||||||
using Bovender.Versioning;
 | 
					using Bovender.Versioning;
 | 
				
			||||||
using Bovender.Mvvm.Messaging;
 | 
					using Bovender.Mvvm.Messaging;
 | 
				
			||||||
using zaaReloaded2.ExceptionHandler;
 | 
					using zaaReloaded2.ExceptionHandler;
 | 
				
			||||||
 | 
					using System.Windows;
 | 
				
			||||||
 | 
					using System.Windows.Input;
 | 
				
			||||||
 | 
					using System.Windows.Controls;
 | 
				
			||||||
 | 
					using System.Windows.Media;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace zaaReloaded2
 | 
					namespace zaaReloaded2
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -48,6 +45,7 @@ namespace zaaReloaded2
 | 
				
			|||||||
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
 | 
					        private void ThisAddIn_Startup(object sender, System.EventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Bovender.ExceptionHandler.CentralHandler.ManageExceptionCallback += CentralHandler_ManageExceptionCallback;
 | 
					            Bovender.ExceptionHandler.CentralHandler.ManageExceptionCallback += CentralHandler_ManageExceptionCallback;
 | 
				
			||||||
 | 
					            RegisterTextBoxSelectAll();
 | 
				
			||||||
            CheckForUpdates();
 | 
					            CheckForUpdates();
 | 
				
			||||||
            _oldCaption = Globals.ThisAddIn.Application.Caption;
 | 
					            _oldCaption = Globals.ThisAddIn.Application.Caption;
 | 
				
			||||||
            Globals.ThisAddIn.Application.Caption = 
 | 
					            Globals.ThisAddIn.Application.Caption = 
 | 
				
			||||||
@@ -57,6 +55,7 @@ namespace zaaReloaded2
 | 
				
			|||||||
                    Properties.Settings.Default.AddinName,
 | 
					                    Properties.Settings.Default.AddinName,
 | 
				
			||||||
                    Updater.Version.CurrentVersion().ToString()
 | 
					                    Updater.Version.CurrentVersion().ToString()
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
 | 
					            ViewModels.FirstRunViewModel.InjectIntoIfNeeded<Views.FirstRunView>();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
 | 
					        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
 | 
				
			||||||
@@ -156,5 +155,49 @@ namespace zaaReloaded2
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Make text boxes select all text on focus.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <remarks>
 | 
				
			||||||
 | 
					        /// http://stackoverflow.com/a/2553297/270712
 | 
				
			||||||
 | 
					        /// </remarks>
 | 
				
			||||||
 | 
					        void RegisterTextBoxSelectAll()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Select the text in a TextBox when it receives focus.
 | 
				
			||||||
 | 
					            EventManager.RegisterClassHandler(typeof(TextBox), TextBox.PreviewMouseLeftButtonDownEvent,
 | 
				
			||||||
 | 
					                new MouseButtonEventHandler(SelectivelyIgnoreMouseButton));
 | 
				
			||||||
 | 
					            EventManager.RegisterClassHandler(typeof(TextBox), TextBox.GotKeyboardFocusEvent,
 | 
				
			||||||
 | 
					                new RoutedEventHandler(SelectAllText));
 | 
				
			||||||
 | 
					            EventManager.RegisterClassHandler(typeof(TextBox), TextBox.MouseDoubleClickEvent,
 | 
				
			||||||
 | 
					                new RoutedEventHandler(SelectAllText));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void SelectivelyIgnoreMouseButton(object sender, MouseButtonEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Find the TextBox
 | 
				
			||||||
 | 
					            DependencyObject parent = e.OriginalSource as UIElement;
 | 
				
			||||||
 | 
					            while (parent != null && !(parent is TextBox))
 | 
				
			||||||
 | 
					                parent = VisualTreeHelper.GetParent(parent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (parent != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var textBox = (TextBox)parent;
 | 
				
			||||||
 | 
					                if (!textBox.IsKeyboardFocusWithin)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    // If the text box is not yet focused, give it the focus and
 | 
				
			||||||
 | 
					                    // stop further processing of this click event.
 | 
				
			||||||
 | 
					                    textBox.Focus();
 | 
				
			||||||
 | 
					                    e.Handled = true;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void SelectAllText(object sender, RoutedEventArgs e)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var textBox = e.OriginalSource as TextBox;
 | 
				
			||||||
 | 
					            if (textBox != null)
 | 
				
			||||||
 | 
					                textBox.SelectAll();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,2 +1,2 @@
 | 
				
			|||||||
2.0.1
 | 
					2.1.0
 | 
				
			||||||
2.0.0.12
 | 
					2.1.0.0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -79,6 +79,14 @@ namespace zaaReloaded2.ViewModels
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Repository
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return Properties.Settings.Default.Repository.ToString();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public string LicenseUrl
 | 
					        public string LicenseUrl
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get
 | 
					            get
 | 
				
			||||||
@@ -104,6 +112,19 @@ namespace zaaReloaded2.ViewModels
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegatingCommand GotoRepositoryCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_gotoRepositoryCommand == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _gotoRepositoryCommand = new DelegatingCommand(
 | 
				
			||||||
 | 
					                        param => { Process.Start(new ProcessStartInfo(Repository)); });
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _gotoRepositoryCommand;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegatingCommand GotoLicenseCommand
 | 
					        public DelegatingCommand GotoLicenseCommand
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get
 | 
					            get
 | 
				
			||||||
@@ -131,6 +152,7 @@ namespace zaaReloaded2.ViewModels
 | 
				
			|||||||
        #region Fields
 | 
					        #region Fields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        DelegatingCommand _gotoHomepageCommand;
 | 
					        DelegatingCommand _gotoHomepageCommand;
 | 
				
			||||||
 | 
					        DelegatingCommand _gotoRepositoryCommand;
 | 
				
			||||||
        DelegatingCommand _gotoLicenseCommand;
 | 
					        DelegatingCommand _gotoLicenseCommand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										140
									
								
								zaaReloaded2/ViewModels/FirstRunViewModel.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,140 @@
 | 
				
			|||||||
 | 
					/* FirstRunViewModel.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using Bovender.Mvvm;
 | 
				
			||||||
 | 
					using Bovender.Mvvm.ViewModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// View model for the first-run wizard
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    class FirstRunViewModel : ViewModelBase
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Static method
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// If the first-run wizard hasn't been shown to this user
 | 
				
			||||||
 | 
					        /// yet, creates a new instance of FirstRunViewModel,
 | 
				
			||||||
 | 
					        /// injects it into the view T and shows the view.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        /// <typeparam name="T">Window to inject the view model into.</typeparam>
 | 
				
			||||||
 | 
					        public static void InjectIntoIfNeeded<T>()
 | 
				
			||||||
 | 
					            where T: System.Windows.Window, new()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (!Properties.Settings.Default.FirstRunWizardShown)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                FirstRunViewModel vm = new FirstRunViewModel();
 | 
				
			||||||
 | 
					                vm.InjectInto<T>().Show();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegatingCommand SelectDoctorsModeCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_selectDoctorsModeCommand == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _selectDoctorsModeCommand = new DelegatingCommand(
 | 
				
			||||||
 | 
					                        param => DoSelectDoctorsMode());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _selectDoctorsModeCommand;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegatingCommand SelectTypistsModeCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_selectTypistsModeCommand == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _selectTypistsModeCommand = new DelegatingCommand(
 | 
				
			||||||
 | 
					                        param => DoSelectTypistsMode());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _selectTypistsModeCommand;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Private constructor to enforce using the static
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        private FirstRunViewModel() : base() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void DoSelectDoctorsMode()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Properties will be saved by the DoCloseView override.
 | 
				
			||||||
 | 
					            Properties.Settings.Default.SuppressItemCommentInteraction = false;
 | 
				
			||||||
 | 
					            CloseViewCommand.Execute(null);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void DoSelectTypistsMode()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // Properties will be saved by the DoCloseView override.
 | 
				
			||||||
 | 
					            Properties.Settings.Default.SuppressItemCommentInteraction = true;
 | 
				
			||||||
 | 
					            CloseViewCommand.Execute(null);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Overrides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Sets the FirstRunWizardShown property of the assembly properties
 | 
				
			||||||
 | 
					        /// to true and calls the base function to close the associated view.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        protected override void DoCloseView()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Properties.Settings.Default.FirstRunWizardShown = true;
 | 
				
			||||||
 | 
					            Properties.Settings.Default.Save();
 | 
				
			||||||
 | 
					            base.DoCloseView();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Implementation of ViewModelBase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override object RevealModelObject()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            throw new NotImplementedException();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Fields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DelegatingCommand _selectDoctorsModeCommand;
 | 
				
			||||||
 | 
					        DelegatingCommand _selectTypistsModeCommand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										113
									
								
								zaaReloaded2/ViewModels/ItemCommentViewModel.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,113 @@
 | 
				
			|||||||
 | 
					/* ItemCommentViewModel.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using Bovender.Mvvm;
 | 
				
			||||||
 | 
					using Bovender.Mvvm.ViewModels;
 | 
				
			||||||
 | 
					using Bovender.Mvvm.Messaging;
 | 
				
			||||||
 | 
					using zaaReloaded2.Controller.Comments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// View model for zaaReloaded2.Controller.Comments.ItemComment.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class ItemCommentViewModel : ViewModelBase
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Item { get { return _itemComment.Item; } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Prefix { get { return _itemComment.Prefix;  } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Value
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return _itemComment.Value;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            set
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _value = value;
 | 
				
			||||||
 | 
					                OnPropertyChanged("Value");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string Suffix { get { return _itemComment.Suffix; } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DelegatingCommand SaveCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_saveCommand == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _saveCommand = new DelegatingCommand(
 | 
				
			||||||
 | 
					                        param => DoSave());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _saveCommand;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ItemCommentViewModel(ItemComment itemComment)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _itemComment = itemComment;
 | 
				
			||||||
 | 
					            _value = _itemComment.Value;
 | 
				
			||||||
 | 
					            _itemComment.IsCancelled = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Implementation of ViewModelBase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override object RevealModelObject()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return _itemComment;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void DoSave()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _itemComment.Value = Value;
 | 
				
			||||||
 | 
					            _itemComment.IsCancelled = false;
 | 
				
			||||||
 | 
					            DoCloseView();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Fields
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        string _value;
 | 
				
			||||||
 | 
					        DelegatingCommand _saveCommand;
 | 
				
			||||||
 | 
					        ItemComment _itemComment;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										111
									
								
								zaaReloaded2/ViewModels/PreferencesViewModel.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,111 @@
 | 
				
			|||||||
 | 
					/* PreferencesViewModel.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using Bovender.Mvvm;
 | 
				
			||||||
 | 
					using Bovender.Mvvm.ViewModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.ViewModels
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// View model for zaaReloaded2.Preferences.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public class PreferencesViewModel : ViewModelBase
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        #region Singleton
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static PreferencesViewModel Default
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return _instance;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static PreferencesViewModel() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        static readonly PreferencesViewModel _instance = new PreferencesViewModel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Properties
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool SuppressItemCommentInteraction { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Command
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public DelegatingCommand SaveCommand
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (_saveCommand == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _saveCommand = new DelegatingCommand(
 | 
				
			||||||
 | 
					                        param => DoSave(),
 | 
				
			||||||
 | 
					                        param => CanSave());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return _saveCommand;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Constructor
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public PreferencesViewModel()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            SuppressItemCommentInteraction = Preferences.Default.SuppressItemCommentInteraction;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Private methods
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        void DoSave()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Preferences.Default.SuppressItemCommentInteraction = SuppressItemCommentInteraction;
 | 
				
			||||||
 | 
					            DoCloseView();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        bool CanSave()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DelegatingCommand _saveCommand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region ViewModelBase implementation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override object RevealModelObject()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            throw new NotImplementedException();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -319,12 +319,7 @@ namespace zaaReloaded2.ViewModels
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        bool CanUseSettings()
 | 
					        bool CanUseSettings()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Selection selection = Globals.ThisAddIn.Application.ActiveWindow.Selection;
 | 
					            return Commands.CanFormat();
 | 
				
			||||||
            return LastSelected != null && LastSelected.IsSelected &&
 | 
					 | 
				
			||||||
                (
 | 
					 | 
				
			||||||
                    selection.Paragraphs.Count > 1
 | 
					 | 
				
			||||||
                    ||  (selection.Text.Length > 1 && selection.Text.EndsWith("\r"))
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        void DoAddSettings()
 | 
					        void DoAddSettings()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@
 | 
				
			|||||||
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
					        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
				
			||||||
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
					        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
				
			||||||
        xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
 | 
					        xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
 | 
				
			||||||
        Width="360" Height="320" ResizeMode="NoResize" ShowInTaskbar="False"
 | 
					        Width="360" SizeToContent="Height" ResizeMode="NoResize" ShowInTaskbar="False"
 | 
				
			||||||
        b:WindowState.CenterScreen="True"
 | 
					        b:WindowState.CenterScreen="True"
 | 
				
			||||||
        Title="Über..."
 | 
					        Title="Über..."
 | 
				
			||||||
        >
 | 
					        >
 | 
				
			||||||
@@ -30,7 +30,10 @@
 | 
				
			|||||||
    <StackPanel Margin="20">
 | 
					    <StackPanel Margin="20">
 | 
				
			||||||
        <Image Source="/zaaReloaded2;component/Icons/icon.png" Width="64" VerticalAlignment="Center" Margin="0 0 0 10" />
 | 
					        <Image Source="/zaaReloaded2;component/Icons/icon.png" Width="64" VerticalAlignment="Center" Margin="0 0 0 10" />
 | 
				
			||||||
        <TextBlock TextAlignment="Center" Text="{Binding AddinName}" FontSize="20" FontWeight="Bold" />
 | 
					        <TextBlock TextAlignment="Center" Text="{Binding AddinName}" FontSize="20" FontWeight="Bold" />
 | 
				
			||||||
        <TextBlock TextAlignment="Center" Text="{Binding Version}" Margin="0, 5, 0, 10" />
 | 
					        <TextBlock TextAlignment="Center" Margin="0, 5, 0, 10" FontWeight="Bold">
 | 
				
			||||||
 | 
					            Version
 | 
				
			||||||
 | 
					            <TextBlock Text="{Binding Version}" />
 | 
				
			||||||
 | 
					        </TextBlock>
 | 
				
			||||||
        <TextBlock TextAlignment="Center" Text="{Binding CopyrightString}" Margin="0, 0, 0, 10" />
 | 
					        <TextBlock TextAlignment="Center" Text="{Binding CopyrightString}" Margin="0, 0, 0, 10" />
 | 
				
			||||||
        <TextBlock TextAlignment="Center" Margin="0, 10, 0, 10">
 | 
					        <TextBlock TextAlignment="Center" Margin="0, 10, 0, 10">
 | 
				
			||||||
            Homepage:
 | 
					            Homepage:
 | 
				
			||||||
@@ -38,6 +41,11 @@
 | 
				
			|||||||
                <TextBlock Text="zaa.nephrowiki.de" />
 | 
					                <TextBlock Text="zaa.nephrowiki.de" />
 | 
				
			||||||
            </Hyperlink>
 | 
					            </Hyperlink>
 | 
				
			||||||
            <LineBreak />
 | 
					            <LineBreak />
 | 
				
			||||||
 | 
					            Quellcode:
 | 
				
			||||||
 | 
					            <Hyperlink Command="{Binding GotoRepositoryCommand}">
 | 
				
			||||||
 | 
					                <TextBlock Text="git.bovender.de" />
 | 
				
			||||||
 | 
					            </Hyperlink>
 | 
				
			||||||
 | 
					            <LineBreak />
 | 
				
			||||||
            Lizenz:
 | 
					            Lizenz:
 | 
				
			||||||
            <Hyperlink Command="{Binding GotoLicenseCommand}">
 | 
					            <Hyperlink Command="{Binding GotoLicenseCommand}">
 | 
				
			||||||
                <TextBlock Text="Apache 2.0" />
 | 
					                <TextBlock Text="Apache 2.0" />
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										61
									
								
								zaaReloaded2/Views/FirstRunView.xaml
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					<!--
 | 
				
			||||||
 | 
						FirstRunView.xaml
 | 
				
			||||||
 | 
						part of zaaReloaded2
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
						you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
						You may obtain a copy of the License at
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
						distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
						WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
						See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
						limitations under the License.
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Window x:Class="zaaReloaded2.Views.FirstRunView"
 | 
				
			||||||
 | 
					        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
				
			||||||
 | 
					        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
				
			||||||
 | 
					        xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
 | 
				
			||||||
 | 
					        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
 | 
				
			||||||
 | 
					        xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
 | 
				
			||||||
 | 
					        ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True"
 | 
				
			||||||
 | 
					        SizeToContent="Height"  Width="480"
 | 
				
			||||||
 | 
					        b:WindowState.CenterScreen="True"
 | 
				
			||||||
 | 
					        Title="Willkommen bei zaaReloaded"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					    <Window.Resources>
 | 
				
			||||||
 | 
					         <ResourceDictionary Source="/zaaReloaded2;component/Style.xaml" />
 | 
				
			||||||
 | 
					    </Window.Resources>
 | 
				
			||||||
 | 
					    <StackPanel Margin="10">
 | 
				
			||||||
 | 
					        <TextBlock FontWeight="Bold" FontSize="20" Margin="0 0 0 5">
 | 
				
			||||||
 | 
					            Willkommen bei zaaReloaded
 | 
				
			||||||
 | 
					        </TextBlock>
 | 
				
			||||||
 | 
					        <Rectangle Fill="Navy" Height="1.5" HorizontalAlignment="Stretch" />
 | 
				
			||||||
 | 
					        <TextBlock Margin="0 10 0 0">
 | 
				
			||||||
 | 
					            Bitte den Arbeitsmodus auswählen:
 | 
				
			||||||
 | 
					        </TextBlock>
 | 
				
			||||||
 | 
					        <DockPanel Margin="0 10 0 5">
 | 
				
			||||||
 | 
					            <Button Height="40" DockPanel.Dock="Left" Command="{Binding SelectDoctorsModeCommand}" Content="Ärztemodus"
 | 
				
			||||||
 | 
					                    Width="160" Margin="0 0 10 0" VerticalAlignment="Center" />
 | 
				
			||||||
 | 
					            <TextBlock TextWrapping="Wrap" VerticalAlignment="Center">
 | 
				
			||||||
 | 
					                Im Ärztemodus werden beim Formatieren bei Bedarf Zusatzinformationen zu Laborparametern
 | 
				
			||||||
 | 
					                abgefragt (z.B. Medikamenten-Zielspiegel).
 | 
				
			||||||
 | 
					            </TextBlock>
 | 
				
			||||||
 | 
					        </DockPanel>
 | 
				
			||||||
 | 
					        <DockPanel Margin="0 5 0 10">
 | 
				
			||||||
 | 
					            <Button Height="40" DockPanel.Dock="Left" Command="{Binding SelectTypistsModeCommand}" Content="Sekretariatsmodus"
 | 
				
			||||||
 | 
					                    Width="160" Margin="0 0 10 0" VerticalAlignment="Center" />
 | 
				
			||||||
 | 
					            <TextBlock TextWrapping="Wrap" VerticalAlignment="Center">
 | 
				
			||||||
 | 
					                Im Ärztemodus werden beim Formatieren grundsätzlich keine Zusatzinformationen abgefragt.
 | 
				
			||||||
 | 
					            </TextBlock>
 | 
				
			||||||
 | 
					        </DockPanel>
 | 
				
			||||||
 | 
					        <TextBlock TextWrapping="Wrap" Foreground="Gray">
 | 
				
			||||||
 | 
					            Die Einstellungen können jederzeit unter "Einstellungen" wieder geändert werden.
 | 
				
			||||||
 | 
					        </TextBlock>
 | 
				
			||||||
 | 
					    </StackPanel>
 | 
				
			||||||
 | 
					</Window>
 | 
				
			||||||
							
								
								
									
										33
									
								
								zaaReloaded2/Views/FirstRunView.xaml.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					/* FirstRunView.xaml.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using System.Windows;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Views
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Interaction logic for FirstRunView.xaml
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class FirstRunView : Window
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public FirstRunView()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										50
									
								
								zaaReloaded2/Views/ItemCommentView.xaml
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					<!--
 | 
				
			||||||
 | 
						ItemCommentView.xaml
 | 
				
			||||||
 | 
						part of zaaReloaded2
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
						you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
						You may obtain a copy of the License at
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
						distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
						WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
						See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
						limitations under the License.
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Window x:Class="zaaReloaded2.Views.ItemCommentView"
 | 
				
			||||||
 | 
					        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
				
			||||||
 | 
					        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
				
			||||||
 | 
					        xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
 | 
				
			||||||
 | 
					        ResizeMode="CanResizeWithGrip" ShowInTaskbar="False"
 | 
				
			||||||
 | 
					        WindowStyle="ToolWindow" Topmost="True"
 | 
				
			||||||
 | 
					        SizeToContent="WidthAndHeight"
 | 
				
			||||||
 | 
					        b:WindowState.CenterScreen="True" b:WindowState.Save="True"
 | 
				
			||||||
 | 
					        Title="Kommentar angeben"
 | 
				
			||||||
 | 
					        FocusManager.FocusedElement="{Binding ElementName=ValueTextBox}"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					    <Window.Resources>
 | 
				
			||||||
 | 
					        <ResourceDictionary Source="/zaaReloaded2;component/Style.xaml" />
 | 
				
			||||||
 | 
					    </Window.Resources>
 | 
				
			||||||
 | 
					    <DockPanel Margin="10">
 | 
				
			||||||
 | 
					        <Label DockPanel.Dock="Top" Content="{Binding Item}"
 | 
				
			||||||
 | 
					               FontSize="16" FontWeight="Bold"
 | 
				
			||||||
 | 
					               Target="{Binding ElementName=ValueTextBox}" Padding="0" />
 | 
				
			||||||
 | 
					        <UniformGrid DockPanel.Dock="Bottom" HorizontalAlignment="Right" Columns="2" Rows="1" Margin="0 10 0 0">
 | 
				
			||||||
 | 
					            <Button Content="OK" Command="{Binding SaveCommand}" IsDefault="True" Margin="0 0 5 0" />
 | 
				
			||||||
 | 
					            <Button Content="Abbrechen" Command="{Binding CloseViewCommand}" IsCancel="True" Margin="5 0 0 0" />
 | 
				
			||||||
 | 
					        </UniformGrid>
 | 
				
			||||||
 | 
					        <DockPanel Margin="0 10 0 10">
 | 
				
			||||||
 | 
					            <TextBlock DockPanel.Dock="Left" Text="{Binding Prefix}" VerticalAlignment="Center" />
 | 
				
			||||||
 | 
					            <TextBlock DockPanel.Dock="Right" Text="{Binding Suffix}" VerticalAlignment="Center" />
 | 
				
			||||||
 | 
					            <TextBox Text="{Binding Value,Mode=TwoWay,UpdateSourceTrigger=LostFocus}"
 | 
				
			||||||
 | 
					                     MinWidth="120" MaxWidth="240" VerticalAlignment="Center"
 | 
				
			||||||
 | 
					                     x:Name="ValueTextBox" Margin="5 0 5 0" />
 | 
				
			||||||
 | 
					        </DockPanel>
 | 
				
			||||||
 | 
					    </DockPanel>
 | 
				
			||||||
 | 
					</Window>
 | 
				
			||||||
							
								
								
									
										33
									
								
								zaaReloaded2/Views/ItemCommentView.xaml.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					/* ItemCommentView.xaml.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using System.Windows;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Views
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Interaction logic for ItemCommentView.xaml
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class ItemCommentView : Window
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public ItemCommentView()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										44
									
								
								zaaReloaded2/Views/PreferencesView.xaml
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					<!--
 | 
				
			||||||
 | 
						PreferencesView.xaml
 | 
				
			||||||
 | 
						part of zaaReloaded2
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
						you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
						You may obtain a copy of the License at
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
						distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
						WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
						See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
						limitations under the License.
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<Window x:Class="zaaReloaded2.Views.PreferencesView"
 | 
				
			||||||
 | 
					        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 | 
				
			||||||
 | 
					        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 | 
				
			||||||
 | 
					        xmlns:b="clr-namespace:Bovender.Mvvm.Views.Settings;assembly=Bovender"
 | 
				
			||||||
 | 
					        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
 | 
				
			||||||
 | 
					        xmlns:action="clr-namespace:Bovender.Mvvm.Actions;assembly=Bovender"
 | 
				
			||||||
 | 
					        SizeToContent="WidthAndHeight" ResizeMode="NoResize" ShowInTaskbar="False"
 | 
				
			||||||
 | 
					        b:WindowState.CenterScreen="True" b:WindowState.Save="True"
 | 
				
			||||||
 | 
					        Title="Einstellungen"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					    <Window.Resources>
 | 
				
			||||||
 | 
					         <ResourceDictionary Source="/zaaReloaded2;component/Style.xaml" />
 | 
				
			||||||
 | 
					    </Window.Resources>
 | 
				
			||||||
 | 
					    <DockPanel Margin="10">
 | 
				
			||||||
 | 
					        <UniformGrid DockPanel.Dock="Bottom" Columns="2" Rows="1"
 | 
				
			||||||
 | 
					                     HorizontalAlignment="Right" Margin="0 10 0 0">
 | 
				
			||||||
 | 
					            <Button Command="{Binding SaveCommand}" Content="OK" IsDefault="True" Margin="0 0 5 0" />
 | 
				
			||||||
 | 
					            <Button Command="{Binding CloseViewCommand}" Content="Abbrechen" IsCancel="True" Margin="5 0 0 0" />
 | 
				
			||||||
 | 
					        </UniformGrid>
 | 
				
			||||||
 | 
					        <GroupBox Header="Sekretariatsmodus" Padding="10">
 | 
				
			||||||
 | 
					            <CheckBox IsChecked="{Binding SuppressItemCommentInteraction}" Content="Keine Interaktion für _Kommentare">
 | 
				
			||||||
 | 
					            </CheckBox>
 | 
				
			||||||
 | 
					        </GroupBox>
 | 
				
			||||||
 | 
					    </DockPanel>
 | 
				
			||||||
 | 
					</Window>
 | 
				
			||||||
							
								
								
									
										33
									
								
								zaaReloaded2/Views/PreferencesView.xaml.cs
									
									
									
									
									
										Executable file
									
								
							
							
						
						@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					/* PreferencesView.xaml.cs
 | 
				
			||||||
 | 
					 * part of zaaReloaded2
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Copyright 2015 Daniel Kraus
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using System.Windows;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace zaaReloaded2.Views
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// Interaction logic for PreferencesView.xaml
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public partial class PreferencesView : Window
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public PreferencesView()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            InitializeComponent();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -80,6 +80,12 @@
 | 
				
			|||||||
            <setting name="AbnormalStyle" serializeAs="String">
 | 
					            <setting name="AbnormalStyle" serializeAs="String">
 | 
				
			||||||
                <value>None</value>
 | 
					                <value>None</value>
 | 
				
			||||||
            </setting>
 | 
					            </setting>
 | 
				
			||||||
 | 
					            <setting name="ManualCommentPrompt" serializeAs="String">
 | 
				
			||||||
 | 
					                <value>BITTE_ERGÄNZEN</value>
 | 
				
			||||||
 | 
					            </setting>
 | 
				
			||||||
 | 
					            <setting name="Repository" serializeAs="String">
 | 
				
			||||||
 | 
					                <value>http://git.bovender.de</value>
 | 
				
			||||||
 | 
					            </setting>
 | 
				
			||||||
        </zaaReloaded2.Properties.Settings>
 | 
					        </zaaReloaded2.Properties.Settings>
 | 
				
			||||||
    </applicationSettings>
 | 
					    </applicationSettings>
 | 
				
			||||||
    <userSettings>
 | 
					    <userSettings>
 | 
				
			||||||
@@ -96,6 +102,12 @@
 | 
				
			|||||||
            <setting name="ImportExportPath" serializeAs="String">
 | 
					            <setting name="ImportExportPath" serializeAs="String">
 | 
				
			||||||
                <value />
 | 
					                <value />
 | 
				
			||||||
            </setting>
 | 
					            </setting>
 | 
				
			||||||
 | 
					            <setting name="SuppressItemCommentInteraction" serializeAs="String">
 | 
				
			||||||
 | 
					                <value>False</value>
 | 
				
			||||||
 | 
					            </setting>
 | 
				
			||||||
 | 
					            <setting name="FirstRunWizardShown" serializeAs="String">
 | 
				
			||||||
 | 
					                <value>False</value>
 | 
				
			||||||
 | 
					            </setting>
 | 
				
			||||||
        </zaaReloaded2.Properties.Settings>
 | 
					        </zaaReloaded2.Properties.Settings>
 | 
				
			||||||
    </userSettings>
 | 
					    </userSettings>
 | 
				
			||||||
</configuration>
 | 
					</configuration>
 | 
				
			||||||
@@ -192,9 +192,14 @@
 | 
				
			|||||||
    can be found.
 | 
					    can be found.
 | 
				
			||||||
  -->
 | 
					  -->
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Compile Include="Commands.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Importer\ZaaImporter\AutoDetect.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Controller\Comments\CommentPool.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\ControlElementBase.cs" />
 | 
					    <Compile Include="Controller\Elements\ControlElementBase.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\FormatElementBase.cs" />
 | 
					    <Compile Include="Controller\Elements\FormatElementBase.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\NextColumn.cs" />
 | 
					    <Compile Include="Controller\Elements\NextColumn.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Controller\Comments\ItemComment.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Controller\Comments\ItemCommentEventArgs.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\SelectEachDay.cs" />
 | 
					    <Compile Include="Controller\Elements\SelectEachDay.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\SelectLastDay.cs" />
 | 
					    <Compile Include="Controller\Elements\SelectLastDay.cs" />
 | 
				
			||||||
    <Compile Include="Controller\Elements\SelectFirstDay.cs" />
 | 
					    <Compile Include="Controller\Elements\SelectFirstDay.cs" />
 | 
				
			||||||
@@ -215,6 +220,7 @@
 | 
				
			|||||||
    <Compile Include="Formatter\DanielsStyle.cs" />
 | 
					    <Compile Include="Formatter\DanielsStyle.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\DocumentWriter.cs" />
 | 
					    <Compile Include="Formatter\DocumentWriter.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\NoLaboratoryDataException.cs" />
 | 
					    <Compile Include="Formatter\NoLaboratoryDataException.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Preferences.cs" />
 | 
				
			||||||
    <Compile Include="Ribbon.cs" />
 | 
					    <Compile Include="Ribbon.cs" />
 | 
				
			||||||
    <Compile Include="Thesaurus\ThesaurusBase.cs" />
 | 
					    <Compile Include="Thesaurus\ThesaurusBase.cs" />
 | 
				
			||||||
    <Compile Include="Formatter\IItemFormatterDictionary.cs" />
 | 
					    <Compile Include="Formatter\IItemFormatterDictionary.cs" />
 | 
				
			||||||
@@ -251,10 +257,16 @@
 | 
				
			|||||||
    <Compile Include="ViewModels\CategoryViewModel.cs" />
 | 
					    <Compile Include="ViewModels\CategoryViewModel.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\ElementPickerViewModel.cs" />
 | 
					    <Compile Include="ViewModels\ElementPickerViewModel.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\ElementViewModel.cs" />
 | 
					    <Compile Include="ViewModels\ElementViewModel.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="ViewModels\FirstRunViewModel.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\FormatElementViewModel.cs" />
 | 
					    <Compile Include="ViewModels\FormatElementViewModel.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\ControlElementViewModel.cs" />
 | 
					    <Compile Include="ViewModels\ControlElementViewModel.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\IoErrorViewModel.cs" />
 | 
					    <Compile Include="ViewModels\IoErrorViewModel.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="ViewModels\ItemCommentViewModel.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="ViewModels\PreferencesViewModel.cs" />
 | 
				
			||||||
    <Compile Include="ViewModels\SettingsRepositoryViewModel.cs" />
 | 
					    <Compile Include="ViewModels\SettingsRepositoryViewModel.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Views\ItemCommentView.xaml.cs">
 | 
				
			||||||
 | 
					      <DependentUpon>ItemCommentView.xaml</DependentUpon>
 | 
				
			||||||
 | 
					    </Compile>
 | 
				
			||||||
    <Compile Include="Views\IoErrorView.xaml.cs">
 | 
					    <Compile Include="Views\IoErrorView.xaml.cs">
 | 
				
			||||||
      <DependentUpon>IoErrorView.xaml</DependentUpon>
 | 
					      <DependentUpon>IoErrorView.xaml</DependentUpon>
 | 
				
			||||||
    </Compile>
 | 
					    </Compile>
 | 
				
			||||||
@@ -264,6 +276,12 @@
 | 
				
			|||||||
    <Compile Include="Views\ElementView.xaml.cs">
 | 
					    <Compile Include="Views\ElementView.xaml.cs">
 | 
				
			||||||
      <DependentUpon>ElementView.xaml</DependentUpon>
 | 
					      <DependentUpon>ElementView.xaml</DependentUpon>
 | 
				
			||||||
    </Compile>
 | 
					    </Compile>
 | 
				
			||||||
 | 
					    <Compile Include="Views\FirstRunView.xaml.cs">
 | 
				
			||||||
 | 
					      <DependentUpon>FirstRunView.xaml</DependentUpon>
 | 
				
			||||||
 | 
					    </Compile>
 | 
				
			||||||
 | 
					    <Compile Include="Views\PreferencesView.xaml.cs">
 | 
				
			||||||
 | 
					      <DependentUpon>PreferencesView.xaml</DependentUpon>
 | 
				
			||||||
 | 
					    </Compile>
 | 
				
			||||||
    <Compile Include="Views\SettingsView.xaml.cs">
 | 
					    <Compile Include="Views\SettingsView.xaml.cs">
 | 
				
			||||||
      <DependentUpon>SettingsView.xaml</DependentUpon>
 | 
					      <DependentUpon>SettingsView.xaml</DependentUpon>
 | 
				
			||||||
    </Compile>
 | 
					    </Compile>
 | 
				
			||||||
@@ -340,6 +358,10 @@
 | 
				
			|||||||
      <Generator>MSBuild:Compile</Generator>
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
      <SubType>Designer</SubType>
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
    </Resource>
 | 
					    </Resource>
 | 
				
			||||||
 | 
					    <Page Include="Views\ItemCommentView.xaml">
 | 
				
			||||||
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </Page>
 | 
				
			||||||
    <Page Include="Views\IoErrorView.xaml">
 | 
					    <Page Include="Views\IoErrorView.xaml">
 | 
				
			||||||
      <Generator>MSBuild:Compile</Generator>
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
      <SubType>Designer</SubType>
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
@@ -352,6 +374,14 @@
 | 
				
			|||||||
      <Generator>MSBuild:Compile</Generator>
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
      <SubType>Designer</SubType>
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
    </Page>
 | 
					    </Page>
 | 
				
			||||||
 | 
					    <Page Include="Views\FirstRunView.xaml">
 | 
				
			||||||
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </Page>
 | 
				
			||||||
 | 
					    <Page Include="Views\PreferencesView.xaml">
 | 
				
			||||||
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
 | 
					    </Page>
 | 
				
			||||||
    <Page Include="Views\SettingsView.xaml">
 | 
					    <Page Include="Views\SettingsView.xaml">
 | 
				
			||||||
      <Generator>MSBuild:Compile</Generator>
 | 
					      <Generator>MSBuild:Compile</Generator>
 | 
				
			||||||
      <SubType>Designer</SubType>
 | 
					      <SubType>Designer</SubType>
 | 
				
			||||||
@@ -412,6 +442,9 @@
 | 
				
			|||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <Resource Include="Icons\icon.png" />
 | 
					    <Resource Include="Icons\icon.png" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
 | 
					  <ItemGroup>
 | 
				
			||||||
 | 
					    <Resource Include="Icons\gear.png" />
 | 
				
			||||||
 | 
					  </ItemGroup>
 | 
				
			||||||
  <PropertyGroup>
 | 
					  <PropertyGroup>
 | 
				
			||||||
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
 | 
					    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
 | 
				
			||||||
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
 | 
					    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
 | 
				
			||||||
 
 | 
				
			|||||||