Skip to content

Commit 33045fa

Browse files
bryantaustin13brynrhodesc-schuler
authored
Review Notes column updated: SpreadsheetValidateVSandCS output adjusted; (#538)
* beginning * temp stopping place * getting vs from server * valueset functionality mostly there. * Functionality mostly finished * clean up code * more code clean up * yet more code cleanup * added missed functionality for compare codesystem concepts * refactoring of reporting * refactoring ; adding funcitonality and fixing reporting * full functionality * break out classes for reuse; Added explanations * changes on <Needed> column and update to validationReport to include whole url * removed println and added missing stuff from merge * added spreadsheet updates; naming of output to spreadsheet title --------- Co-authored-by: Bryn Rhodes <brynrhodes@users.noreply.github.com> Co-authored-by: c-schuler <hoofschu@gmail.com>
1 parent 0158844 commit 33045fa

10 files changed

Lines changed: 1055 additions & 7 deletions

File tree

tooling-cli/src/main/java/org/opencds/cqf/tooling/cli/OperationFactory.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package org.opencds.cqf.tooling.cli;
22

3+
//import org.opencds.cqf.tooling.jsonschema.SchemaGenerator;
4+
import org.opencds.cqf.tooling.casereporting.transformer.ErsdTransformer;
5+
import org.opencds.cqf.tooling.dateroller.DataDateRollerOperation;
6+
import org.opencds.cqf.tooling.terminology.*;
7+
import org.opencds.cqf.tooling.terminology.templateToValueSetGenerator.TemplateToValueSetGenerator;
38
import java.lang.reflect.Field;
49
import java.lang.reflect.InvocationTargetException;
510
import java.util.HashMap;
@@ -216,8 +221,10 @@ static Operation createOperation(String operationName) {
216221
return new QICoreElementsToSpreadsheet();
217222
case "StripGeneratedContent":
218223
return new StripGeneratedContentOperation();
224+
case "SpreadsheetValidateVSandCS":
225+
return new SpreadsheetValidateVSandCS();
219226
default:
220227
throw new IllegalArgumentException("Invalid operation: " + operationName);
221228
}
222229
}
223-
}
230+
}

tooling/src/main/java/org/opencds/cqf/tooling/acceleratorkit/StructureDefinitionBindingObject.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public class StructureDefinitionBindingObject extends StructureDefinitionBaseObj
66
String bindingValueSetURL;
77
String bindingValueSetVersion;
88
String bindingValueSetName;
9+
String bindingObjectExtension;
10+
int cardinalityMin;
911

1012
public String getBindingStrength() {return bindingStrength;}
1113
public void setBindingStrength(String bindingStrength) {this.bindingStrength = bindingStrength;}
@@ -17,4 +19,8 @@ public class StructureDefinitionBindingObject extends StructureDefinitionBaseObj
1719
public void setBindingValueSetName(String bindingValueSetName) {this.bindingValueSetName = bindingValueSetName;}
1820
public String getCodeSystemsURLs() {return codeSystemsURLs;}
1921
public void setCodeSystemsURLs(String codeSystemsURLs) {this.codeSystemsURLs = codeSystemsURLs;}
22+
public String getBindingObjectExtension() {return bindingObjectExtension;}
23+
public void setBindingObjectExtension(String bindingObjectExtension) {this.bindingObjectExtension = bindingObjectExtension;}
24+
public int getCardinalityMin(){return cardinalityMin;};
25+
public void setCardinalityMin(int cardinalityMin){this.cardinalityMin = cardinalityMin;}
2026
}

tooling/src/main/java/org/opencds/cqf/tooling/acceleratorkit/StructureDefinitionElementBindingVisitor.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22

33
import ca.uhn.fhir.context.FhirContext;
44
import ca.uhn.fhir.context.FhirVersionEnum;
5-
import org.hl7.fhir.r4.model.CanonicalType;
6-
import org.hl7.fhir.r4.model.ElementDefinition;
7-
import org.hl7.fhir.r4.model.StructureDefinition;
8-
import org.hl7.fhir.r4.model.ValueSet;
5+
import org.hl7.fhir.r4.model.*;
96

107
import java.util.*;
118
import java.util.concurrent.atomic.AtomicReference;
@@ -75,6 +72,10 @@ private void getBindings(String sdName, List<ElementDefinition> eds, String sdUR
7572
if (ed.hasMin() && ed.hasMax()) {
7673
String edCardinality = ed.getMin() + "..." + ed.getMax();
7774
sdbo.setCardinality(edCardinality);
75+
if(ed.getMin() > 0){sdbo.setCardinalityMin(ed.getMin());}
76+
}
77+
if(getBindingObjectExtension(ed).equalsIgnoreCase("qicore-keyelement")){
78+
sdbo.setBindingObjectExtension("qicore-keyelement");
7879
}
7980
String bindingValueSet = ed.getBinding().getValueSet();
8081
String pipeVersion = "";
@@ -129,6 +130,17 @@ else if (ed.hasExtension()) {
129130
}
130131
}
131132

133+
private String getBindingObjectExtension(ElementDefinition ed) {
134+
for (Extension ext : ed.getExtension()) {
135+
if (!ext.getUrl().isEmpty()) {
136+
if (ext.getUrl().contains("qicore-keyelement")) {
137+
return "qicore-keyelement";
138+
}
139+
}
140+
}
141+
return "";
142+
}
143+
132144
private void visitExtensions(ElementDefinition ed, Map<String, StructureDefinitionBindingObject> bindingObjects, String sdName, String sdURL, String sdVersion) {
133145
StructureDefinitionBindingObject sdbo = new StructureDefinitionBindingObject();
134146
sdbo.setSdName(sdName);

tooling/src/main/java/org/opencds/cqf/tooling/operation/ProfilesToSpreadsheet.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private void createOutput(List<StructureDefinitionBindingObject> bindingObjects)
9494

9595
private List<String> createHeaderNameList() {
9696
List<String> headerNameList = new ArrayList<String>() {{
97-
add("QI Core Profile");
97+
add(modelName + " Profile");
9898
add("Id");
9999
add("Conformance");
100100
add("ValueSet");
@@ -155,7 +155,10 @@ private void addBindingObjectRowDataToCurrentSheet(XSSFSheet currentSheet, int r
155155

156156
currentCell = currentRow.createCell(cellCount++);
157157
if ((null != bo.getBindingStrength() && bo.getBindingStrength().equalsIgnoreCase("required")) ||
158-
null != bo.getMustSupport() && bo.getMustSupport().equalsIgnoreCase("Y")) {
158+
null != bo.getMustSupport() && bo.getMustSupport().equalsIgnoreCase("Y") ||
159+
null != bo.getBindingObjectExtension() && bo.getBindingObjectExtension().equalsIgnoreCase("qicore-keyElement") ||
160+
bo.getCardinalityMin() > 0
161+
) {
159162
currentCell.setCellValue("Needed");
160163
}
161164
}

0 commit comments

Comments
 (0)