Updates to CDA processing
Modified XSI to use clinical document namespace over others
Modified excel generation for zip to use file name versus complete path
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 7d4737f..65b09b5 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
@@ -1717,8 +1717,6 @@
this.prefix = prefix;
this.zipEntry = zipEntry;
this.inputStream = inputStream;
- // this.zipFile = zipFile;
- // this.zipEntry = zipEntry;
}
/*
@@ -2728,7 +2726,7 @@
*/
@Override
public String getName() {
- return prefix + zipEntry.getName();
+ return FilenameUtils.getName(zipEntry.getName());
}
/*
diff --git a/cda/plugins/org.eclipse.mdht.uml.cda/src/org/eclipse/mdht/uml/cda/internal/resource/CDAXSITypeProvider.java b/cda/plugins/org.eclipse.mdht.uml.cda/src/org/eclipse/mdht/uml/cda/internal/resource/CDAXSITypeProvider.java
index eba7047..638e296 100644
--- a/cda/plugins/org.eclipse.mdht.uml.cda/src/org/eclipse/mdht/uml/cda/internal/resource/CDAXSITypeProvider.java
+++ b/cda/plugins/org.eclipse.mdht.uml.cda/src/org/eclipse/mdht/uml/cda/internal/resource/CDAXSITypeProvider.java
@@ -15,6 +15,7 @@
*******************************************************************************/
package org.eclipse.mdht.uml.cda.internal.resource;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -60,6 +61,8 @@
private final EClass documentClass;
+ private String preffered = null;
+
/**
* Initializes me without a document {@link EClass}, so that I will discover it by template ID.
*/
@@ -101,23 +104,77 @@
int last = 0;
NodeList nodeList = element.getChildNodes();
+ ArrayList<EClass> potentialTemplates = new ArrayList<EClass>();
+
EClass type = getType(element);
+ /*
+ * Collect the potential templates
+ */
for (int i = 0; i < nodeList.getLength(); i++) {
if (nodeList.item(i) instanceof Element) {
Element e = (Element) nodeList.item(i);
if ("templateId".equals(e.getLocalName())) {
EClass eClass = getEClass(
e.getAttributeNS(null, "root"), e.getAttributeNS(null, "extension"), element);
- if ((eClass != null) && !eClass.isAbstract() && conformsTo(eClass, type)
- && (eClass.getEAllSuperTypes().size() > last)) {
- result = eClass;
- last = eClass.getEAllSuperTypes().size();
+ if (eClass != null) {
+ potentialTemplates.add(eClass);
}
}
}
}
+ // if we found some
+ if (!potentialTemplates.isEmpty()) {
+ // if one - use it
+ if (potentialTemplates.size() == 1) {
+ result = potentialTemplates.get(0);
+ } else {
+ // else if we have identified an initial URI to use for the cases of mixed content
+ if (preffered != null) {
+ for (EClass potentialTemplate : potentialTemplates) {
+ // check if the potentialTemplate is in the uri
+ if (preffered.equals(potentialTemplate.getEPackage().getNsURI())) {
+ if ((potentialTemplate != null) && !potentialTemplate.isAbstract()
+ && conformsTo(potentialTemplate, type)
+ && (potentialTemplate.getEAllSuperTypes().size() > last)) {
+ result = potentialTemplate;
+ last = potentialTemplate.getEAllSuperTypes().size();
+ }
+ }
+ }
+ // if we did not find one in the preferred namespec
+ if (result == null) {
+ for (EClass potentialTemplate : potentialTemplates) {
+ if ((potentialTemplate != null) && !potentialTemplate.isAbstract()
+ && conformsTo(potentialTemplate, type)
+ && (potentialTemplate.getEAllSuperTypes().size() > last)) {
+
+ result = potentialTemplate;
+ last = potentialTemplate.getEAllSuperTypes().size();
+ }
+ }
+ }
+ } else {
+ // else check for best fit
+ for (EClass potentialTemplate : potentialTemplates) {
+ if ((potentialTemplate != null) && !potentialTemplate.isAbstract()
+ && conformsTo(potentialTemplate, type)
+ && (potentialTemplate.getEAllSuperTypes().size() > last)) {
+ result = potentialTemplate;
+ last = potentialTemplate.getEAllSuperTypes().size();
+ }
+ }
+ }
+
+ }
+
+ }
+
+ if (result != null && element.getLocalName().equals("ClinicalDocument")) {
+ preffered = result.getEPackage().getNsURI();
+ }
+
return result;
}