Updates to date time processing
Added null pointer check for date processing
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/C32SectionSwitch.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/C32SectionSwitch.java
index 490b9e9..ad64993 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/C32SectionSwitch.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/C32SectionSwitch.java
@@ -633,9 +633,11 @@
d = CDAValueUtil.getDate(ivlts.getValue());
- ;
-
- sb.append(CDAValueUtil.DATE_PRETTY.format(d));
+ if (d != null) {
+ sb.append(CDAValueUtil.DATE_PRETTY.format(d));
+ } else {
+ sb.append(ivlts.getValue());
+ }
}
}
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/EncounterUtil.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/EncounterUtil.java
index 713b8ea..74000ca 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/EncounterUtil.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/EncounterUtil.java
@@ -12,8 +12,10 @@
package org.eclipse.mdht.cda.xml.ui.handlers;
import java.util.Date;
+import java.util.HashMap;
import org.apache.commons.lang.StringUtils;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.mdht.uml.cda.Act;
import org.eclipse.mdht.uml.cda.Author;
import org.eclipse.mdht.uml.cda.Encounter;
@@ -32,6 +34,8 @@
*/
public class EncounterUtil {
+ public static HashMap<EObject, MatchEncounterBy> encounterCache = new HashMap<EObject, MatchEncounterBy>();
+
/**
*
* @TODO Fix with proper date comparison routines
@@ -101,12 +105,17 @@
public static MatchEncounterBy matchesEncounter(Encounter encounter, Act act) {
+ if (encounterCache.containsKey(act)) {
+ return encounterCache.get(act);
+ }
if (act == null) {
+ encounterCache.put(act, MatchEncounterBy.NOMATCH);
return MatchEncounterBy.NOMATCH;
}
for (II ii : act.getIds()) {
for (II iii : encounter.getIds()) {
if (CDAValueUtil.getKey(ii).equals(CDAValueUtil.getKey(iii))) {
+ encounterCache.put(act, MatchEncounterBy.NOMATCH);
return MatchEncounterBy.BYID;
}
}
@@ -132,15 +141,18 @@
for (Author author : act.getAuthors()) {
if (author.getTime() != null && !StringUtils.isEmpty(author.getTime().getValue())) {
observationTime = CDAValueUtil.getDate(author.getTime().getValue());
+
result = MatchEncounterBy.BYAUTHORID;
}
}
}
if (observationTime != null && isWithinEncounterDateRate(encounter, observationTime)) {
+ encounterCache.put(act, result);
return result;
}
+ encounterCache.put(act, MatchEncounterBy.NOMATCH);
return MatchEncounterBy.NOMATCH;
}
@@ -194,9 +206,14 @@
*/
public static MatchEncounterBy matchesEncounter(Encounter encounter, Organizer organizer) {
+ if (encounterCache.containsKey(organizer)) {
+ return encounterCache.get(organizer);
+ }
+
for (II ii : organizer.getIds()) {
for (II iii : encounter.getIds()) {
if (CDAValueUtil.getKey(ii).equals(CDAValueUtil.getKey(iii))) {
+ encounterCache.put(organizer, MatchEncounterBy.BYID);
return MatchEncounterBy.BYID;
}
}
@@ -228,9 +245,11 @@
}
if (observationTime != null && isWithinEncounterDateRate(encounter, observationTime)) {
+ encounterCache.put(organizer, result);
return result;
}
+ encounterCache.put(organizer, MatchEncounterBy.NOMATCH);
return MatchEncounterBy.NOMATCH;
}
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
index f384cac..916de1c 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/GenerateCDADataHandler.java
@@ -1560,6 +1560,7 @@
}
}
+ EncounterUtil.encounterCache.clear();
clinicalDocument.eResource().unload();
currentProcessingTime += stopwatch.elapsed(TimeUnit.MILLISECONDS);
/*
diff --git a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java
index 97f213f..dad2f91 100644
--- a/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java
+++ b/cda/plugins/org.eclipse.mdht.cda.xml.ui/src/org/eclipse/mdht/cda/xml/ui/handlers/SpreadsheetSerializer.java
@@ -593,8 +593,12 @@
d = CDAValueUtil.getDate(ivlts.getLow().getValue());
;
+ if (d != null) {
+ sb.append(CDAValueUtil.DATE_PRETTY.format(d));
+ } else {
+ sb.append(ivlts.getLow().getValue());
+ }
- sb.append(CDAValueUtil.DATE_PRETTY.format(d));
}
}
@@ -602,10 +606,14 @@
if (!StringUtils.isEmpty(ivlts.getHigh().getValue())) {
d = CDAValueUtil.getDate(ivlts.getHigh().getValue());
- if (sb.length() > 0) {
- sb.append(" - ");
+ if (d != null) {
+ if (sb.length() > 0) {
+ sb.append(" - ");
+ }
+ sb.append(CDAValueUtil.DATE_PRETTY.format(d));
+ } else {
+ sb.append(ivlts.getHigh().getValue());
}
- sb.append(CDAValueUtil.DATE_PRETTY.format(d));
}
}
}