private void cleanUpDifferential(StructureDefinition sd, int start) { int level = Utilities.charCount(sd.getDifferential().getElement().get(start).getPath(), '.'); int c = start; int len = sd.getDifferential().getElement().size(); HashSet<String> paths = new HashSet<String>(); while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') == level) { ElementDefinition ed = sd.getDifferential().getElement().get(c); if (!paths.contains(ed.getPath())) { paths.add(ed.getPath()); int ic = c+1; while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level) ic++; ElementDefinition slicer = null; List<ElementDefinition> slices = new ArrayList<ElementDefinition>(); slices.add(ed); while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') == level) { ElementDefinition edi = sd.getDifferential().getElement().get(ic); if (ed.getPath().equals(edi.getPath())) { while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level) ic++; if (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) { cleanUpDifferential(sd, c); c++; while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) c++;
private void cleanUpDifferential(StructureDefinition sd, int start) { int level = Utilities.charCount(sd.getDifferential().getElement().get(start).getPath(), '.'); int c = start; int len = sd.getDifferential().getElement().size(); HashSet<String> paths = new HashSet<String>(); while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') == level) { ElementDefinition ed = sd.getDifferential().getElement().get(c); if (!paths.contains(ed.getPath())) { paths.add(ed.getPath()); int ic = c+1; while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level) ic++; ElementDefinition slicer = null; List<ElementDefinition> slices = new ArrayList<ElementDefinition>(); slices.add(ed); while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') == level) { ElementDefinition edi = sd.getDifferential().getElement().get(ic); if (ed.getPath().equals(edi.getPath())) { while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level) ic++; if (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) { cleanUpDifferential(sd, c); c++; while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) c++;
private void cleanUpDifferential(StructureDefinition sd, int start) { int level = Utilities.charCount(sd.getDifferential().getElement().get(start).getPath(), '.'); int c = start; int len = sd.getDifferential().getElement().size(); HashSet<String> paths = new HashSet<String>(); while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') == level) { ElementDefinition ed = sd.getDifferential().getElement().get(c); if (!paths.contains(ed.getPath())) { paths.add(ed.getPath()); int ic = c+1; while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level) ic++; ElementDefinition slicer = null; List<ElementDefinition> slices = new ArrayList<ElementDefinition>(); slices.add(ed); while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') == level) { ElementDefinition edi = sd.getDifferential().getElement().get(ic); if (ed.getPath().equals(edi.getPath())) { while (ic < len && Utilities.charCount(sd.getDifferential().getElement().get(ic).getPath(), '.') > level) ic++; if (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) { cleanUpDifferential(sd, c); c++; while (c < len && Utilities.charCount(sd.getDifferential().getElement().get(c).getPath(), '.') > level) c++;