Merge pull request #833 from hapifhir/gg-202206-fhirpath
fix bug counting children + fix issue with automatic string conversio…
This commit is contained in:
commit
2b3f7e7143
|
@ -12,7 +12,7 @@ import org.hl7.fhir.exceptions.FHIRException;
|
|||
import org.hl7.fhir.utilities.SimpleHTTPClient;
|
||||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage;
|
||||
|
@ -132,12 +132,12 @@ public class PackageVisitor {
|
|||
list.add(i.getId());
|
||||
}
|
||||
JsonObject json = JsonTrackingParser.fetchJson("https://raw.githubusercontent.com/FHIR/ig-registry/master/fhir-ig-list.json");
|
||||
for (JsonObject ig : JSONUtil.objects(json, "guides")) {
|
||||
list.add(JSONUtil.str(ig, "npm-name"));
|
||||
for (JsonObject ig : JsonUtilities.objects(json, "guides")) {
|
||||
list.add(JsonUtilities.str(ig, "npm-name"));
|
||||
}
|
||||
json = JsonTrackingParser.fetchJson("https://raw.githubusercontent.com/FHIR/ig-registry/master/package-feeds.json");
|
||||
for (JsonObject feed : JSONUtil.objects(json, "feeds")) {
|
||||
processFeed(list, JSONUtil.str(feed, "url"));
|
||||
for (JsonObject feed : JsonUtilities.objects(json, "feeds")) {
|
||||
processFeed(list, JsonUtilities.str(feed, "url"));
|
||||
}
|
||||
|
||||
return list;
|
||||
|
|
|
@ -13,7 +13,7 @@ import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_30_50;
|
|||
import org.hl7.fhir.convertors.factory.*;
|
||||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackageIndexBuilder;
|
||||
|
||||
|
@ -167,7 +167,7 @@ public class NpmPackageVersionConverter {
|
|||
private byte[] convertPackage(byte[] cnt) throws IOException {
|
||||
JsonObject json = JsonTrackingParser.parseJson(cnt);
|
||||
currentVersion = json.getAsJsonArray("fhirVersions").get(0).getAsString();
|
||||
String name = JSONUtil.str(json, "name");
|
||||
String name = JsonUtilities.str(json, "name");
|
||||
json.remove("name");
|
||||
json.addProperty("name", name + "." + vCode);
|
||||
json.remove("fhirVersions");
|
||||
|
|
|
@ -22,7 +22,7 @@ import org.hl7.fhir.r4b.formats.IParser.OutputStyle;
|
|||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser.LocationData;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
|
||||
|
@ -73,7 +73,7 @@ public class SHCParser extends ParserBase {
|
|||
int i = 0;
|
||||
for (JsonElement e : arr) {
|
||||
if (!(e instanceof JsonPrimitive)) {
|
||||
logError(line(e), col(e), "$.verifiableCredential["+i+"]", IssueType.STRUCTURE, "Wrong Property verifiableCredential in JSON Payload. Expected : String but found "+JSONUtil.type(e), IssueSeverity.ERROR);
|
||||
logError(line(e), col(e), "$.verifiableCredential["+i+"]", IssueType.STRUCTURE, "Wrong Property verifiableCredential in JSON Payload. Expected : String but found "+JsonUtilities.type(e), IssueSeverity.ERROR);
|
||||
} else {
|
||||
list.add(e.getAsString());
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ public class SHCParser extends ParserBase {
|
|||
int i = 0;
|
||||
for (JsonElement e : type) {
|
||||
if (!(e instanceof JsonPrimitive)) {
|
||||
logError(line(e), col(e), path+".type["+i+"]", IssueType.STRUCTURE, "Wrong Property Type in JSON Payload. Expected : String but found "+JSONUtil.type(e), IssueSeverity.ERROR);
|
||||
logError(line(e), col(e), path+".type["+i+"]", IssueType.STRUCTURE, "Wrong Property Type in JSON Payload. Expected : String but found "+JsonUtilities.type(e), IssueSeverity.ERROR);
|
||||
} else {
|
||||
types.add(e.getAsString());
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ public class SHCParser extends ParserBase {
|
|||
private boolean checkProperty(JsonObject obj, String path, String name, boolean required, String type) {
|
||||
JsonElement e = obj.get(name);
|
||||
if (e != null) {
|
||||
String t = JSONUtil.type(e);
|
||||
String t = JsonUtilities.type(e);
|
||||
if (!type.equals(t)) {
|
||||
logError(line(e), col(e), path+"."+name, IssueType.STRUCTURE, "Wrong Property Type in JSON Payload. Expected : "+type+" but found "+t, IssueSeverity.ERROR);
|
||||
} else {
|
||||
|
@ -275,7 +275,7 @@ public class SHCParser extends ParserBase {
|
|||
}
|
||||
JWT res = new JWT();
|
||||
res.header = JsonTrackingParser.parseJson(headerJson);
|
||||
if ("DEF".equals(JSONUtil.str(res.header, "zip"))) {
|
||||
if ("DEF".equals(JsonUtilities.str(res.header, "zip"))) {
|
||||
payloadJson = inflate(payloadJson);
|
||||
}
|
||||
res.payload = JsonTrackingParser.parse(TextFile.bytesToString(payloadJson), res.map, true);
|
||||
|
|
|
@ -3744,7 +3744,7 @@ public class ProfileUtilities extends TranslatingUtilities {
|
|||
}
|
||||
} else if (Utilities.isAbsoluteUrl(u)) {
|
||||
StructureDefinition sd = context.fetchResource(StructureDefinition.class, u);
|
||||
if (sd != null) {
|
||||
if (sd != null && pkp != null) {
|
||||
String disp = sd.hasTitle() ? sd.getTitle() : sd.getName();
|
||||
String ref = pkp.getLinkForProfile(null, sd.getUrl());
|
||||
if (ref != null && ref.contains("|"))
|
||||
|
|
|
@ -1102,11 +1102,13 @@ public class Element extends Base {
|
|||
public int countDescendents() {
|
||||
if (descendentCount > 0) {
|
||||
return descendentCount;
|
||||
} else {
|
||||
} else if (children != null) {
|
||||
descendentCount = children.size();
|
||||
for (Element e : children) {
|
||||
descendentCount = descendentCount + e.countDescendents();
|
||||
}
|
||||
} else {
|
||||
descendentCount = 0;
|
||||
}
|
||||
return descendentCount;
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import org.hl7.fhir.r5.formats.IParser.OutputStyle;
|
|||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser.LocationData;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
|
||||
|
@ -73,7 +73,7 @@ public class SHCParser extends ParserBase {
|
|||
int i = 0;
|
||||
for (JsonElement e : arr) {
|
||||
if (!(e instanceof JsonPrimitive)) {
|
||||
logError(line(e), col(e), "$.verifiableCredential["+i+"]", IssueType.STRUCTURE, "Wrong Property verifiableCredential in JSON Payload. Expected : String but found "+JSONUtil.type(e), IssueSeverity.ERROR);
|
||||
logError(line(e), col(e), "$.verifiableCredential["+i+"]", IssueType.STRUCTURE, "Wrong Property verifiableCredential in JSON Payload. Expected : String but found "+JsonUtilities.type(e), IssueSeverity.ERROR);
|
||||
} else {
|
||||
list.add(e.getAsString());
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ public class SHCParser extends ParserBase {
|
|||
int i = 0;
|
||||
for (JsonElement e : type) {
|
||||
if (!(e instanceof JsonPrimitive)) {
|
||||
logError(line(e), col(e), path+".type["+i+"]", IssueType.STRUCTURE, "Wrong Property Type in JSON Payload. Expected : String but found "+JSONUtil.type(e), IssueSeverity.ERROR);
|
||||
logError(line(e), col(e), path+".type["+i+"]", IssueType.STRUCTURE, "Wrong Property Type in JSON Payload. Expected : String but found "+JsonUtilities.type(e), IssueSeverity.ERROR);
|
||||
} else {
|
||||
types.add(e.getAsString());
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ public class SHCParser extends ParserBase {
|
|||
private boolean checkProperty(JsonObject obj, String path, String name, boolean required, String type) {
|
||||
JsonElement e = obj.get(name);
|
||||
if (e != null) {
|
||||
String t = JSONUtil.type(e);
|
||||
String t = JsonUtilities.type(e);
|
||||
if (!type.equals(t)) {
|
||||
logError(line(e), col(e), path+"."+name, IssueType.STRUCTURE, "Wrong Property Type in JSON Payload. Expected : "+type+" but found "+t, IssueSeverity.ERROR);
|
||||
} else {
|
||||
|
@ -275,7 +275,7 @@ public class SHCParser extends ParserBase {
|
|||
}
|
||||
JWT res = new JWT();
|
||||
res.header = JsonTrackingParser.parseJson(headerJson);
|
||||
if ("DEF".equals(JSONUtil.str(res.header, "zip"))) {
|
||||
if ("DEF".equals(JsonUtilities.str(res.header, "zip"))) {
|
||||
payloadJson = inflate(payloadJson);
|
||||
}
|
||||
res.payload = JsonTrackingParser.parse(TextFile.bytesToString(payloadJson), res.map, true);
|
||||
|
|
|
@ -262,6 +262,7 @@ public class FHIRPathEngine {
|
|||
private ProfileUtilities profileUtilities;
|
||||
private String location; // for error messages
|
||||
private boolean allowPolymorphicNames;
|
||||
private boolean doImplicitStringConversion;
|
||||
|
||||
// if the fhir path expressions are allowed to use constants beyond those defined in the specification
|
||||
// the application can implement them by providing a constant resolver
|
||||
|
@ -447,6 +448,14 @@ public class FHIRPathEngine {
|
|||
}
|
||||
|
||||
|
||||
public boolean isDoImplicitStringConversion() {
|
||||
return doImplicitStringConversion;
|
||||
}
|
||||
|
||||
public void setDoImplicitStringConversion(boolean doImplicitStringConversion) {
|
||||
this.doImplicitStringConversion = doImplicitStringConversion;
|
||||
}
|
||||
|
||||
// --- public API -------------------------------------------------------
|
||||
/**
|
||||
* Parse a path for later use using execute
|
||||
|
@ -4211,6 +4220,7 @@ public class FHIRPathEngine {
|
|||
List<Base> result = new ArrayList<Base>();
|
||||
|
||||
if (focus.size() == 1) {
|
||||
if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
String f = convertToString(focus.get(0));
|
||||
if (Utilities.noString(f)) {
|
||||
result.add(new StringType(""));
|
||||
|
@ -4220,6 +4230,7 @@ public class FHIRPathEngine {
|
|||
String n = f.replace(t, r);
|
||||
result.add(new StringType(n));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_NO_COLLECTION, "replace", focus.size());
|
||||
}
|
||||
|
@ -4233,7 +4244,9 @@ public class FHIRPathEngine {
|
|||
String repl = convertToString(execute(context, focus, exp.getParameters().get(1), true));
|
||||
|
||||
if (focus.size() == 1 && !Utilities.noString(regex)) {
|
||||
if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
result.add(new StringType(convertToString(focus.get(0)).replaceAll(regex, repl)).noExtensions());
|
||||
}
|
||||
} else {
|
||||
result.add(new StringType(convertToString(focus.get(0))).noExtensions());
|
||||
}
|
||||
|
@ -4249,7 +4262,7 @@ public class FHIRPathEngine {
|
|||
result.add(new BooleanType(false).noExtensions());
|
||||
} else if (Utilities.noString(sw)) {
|
||||
result.add(new BooleanType(true).noExtensions());
|
||||
} else {
|
||||
} else if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
if (focus.size() == 1 && !Utilities.noString(sw)) {
|
||||
result.add(new BooleanType(convertToString(focus.get(0)).endsWith(sw)).noExtensions());
|
||||
} else {
|
||||
|
@ -4919,6 +4932,7 @@ public class FHIRPathEngine {
|
|||
String sw = convertToString(execute(context, focus, exp.getParameters().get(0), true));
|
||||
|
||||
if (focus.size() == 1 && !Utilities.noString(sw)) {
|
||||
if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
String st = convertToString(focus.get(0));
|
||||
if (Utilities.noString(st)) {
|
||||
result.add(new BooleanType(false).noExtensions());
|
||||
|
@ -4928,6 +4942,7 @@ public class FHIRPathEngine {
|
|||
boolean ok = m.find();
|
||||
result.add(new BooleanType(ok).noExtensions());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
result.add(new BooleanType(false).noExtensions());
|
||||
}
|
||||
|
@ -4939,6 +4954,7 @@ public class FHIRPathEngine {
|
|||
String sw = convertToString(execute(context, focus, exp.getParameters().get(0), true));
|
||||
|
||||
if (focus.size() == 1 && !Utilities.noString(sw)) {
|
||||
if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
String st = convertToString(focus.get(0));
|
||||
if (Utilities.noString(st)) {
|
||||
result.add(new BooleanType(false).noExtensions());
|
||||
|
@ -4948,6 +4964,7 @@ public class FHIRPathEngine {
|
|||
boolean ok = m.matches();
|
||||
result.add(new BooleanType(ok).noExtensions());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
result.add(new BooleanType(false).noExtensions());
|
||||
}
|
||||
|
@ -4962,7 +4979,7 @@ public class FHIRPathEngine {
|
|||
result.add(new BooleanType(false).noExtensions());
|
||||
} else if (Utilities.noString(sw)) {
|
||||
result.add(new BooleanType(true).noExtensions());
|
||||
} else {
|
||||
} else if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
String st = convertToString(focus.get(0));
|
||||
if (Utilities.noString(st)) {
|
||||
result.add(new BooleanType(false).noExtensions());
|
||||
|
@ -4981,7 +4998,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLength(ExecutionContext context, List<Base> focus, ExpressionNode exp) {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
if (focus.size() == 1) {
|
||||
if (focus.size() == 1 && (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion)) {
|
||||
String s = convertToString(focus.get(0));
|
||||
result.add(new IntegerType(s.length()).noExtensions());
|
||||
}
|
||||
|
@ -5007,7 +5024,7 @@ public class FHIRPathEngine {
|
|||
result.add(new BooleanType(false).noExtensions());
|
||||
} else if (Utilities.noString(sw)) {
|
||||
result.add(new BooleanType(true).noExtensions());
|
||||
} else {
|
||||
} else if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
String s = convertToString(focus.get(0));
|
||||
if (s == null) {
|
||||
result.add(new BooleanType(false).noExtensions());
|
||||
|
@ -5020,7 +5037,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLower(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
if (focus.size() == 1) {
|
||||
if (focus.size() == 1 && (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion)) {
|
||||
String s = convertToString(focus.get(0));
|
||||
if (!Utilities.noString(s)) {
|
||||
result.add(new StringType(s.toLowerCase()).noExtensions());
|
||||
|
@ -5031,7 +5048,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcUpper(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
if (focus.size() == 1) {
|
||||
if (focus.size() == 1 && (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion)) {
|
||||
String s = convertToString(focus.get(0));
|
||||
if (!Utilities.noString(s)) {
|
||||
result.add(new StringType(s.toUpperCase()).noExtensions());
|
||||
|
@ -5042,7 +5059,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcToChars(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException {
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
if (focus.size() == 1) {
|
||||
if (focus.size() == 1 && (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion)) {
|
||||
String s = convertToString(focus.get(0));
|
||||
for (char c : s.toCharArray()) {
|
||||
result.add(new StringType(String.valueOf(c)).noExtensions());
|
||||
|
@ -5059,7 +5076,7 @@ public class FHIRPathEngine {
|
|||
result.add(new IntegerType(0).noExtensions());
|
||||
} else if (Utilities.noString(sw)) {
|
||||
result.add(new IntegerType(0).noExtensions());
|
||||
} else {
|
||||
} else if (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion) {
|
||||
String s = convertToString(focus.get(0));
|
||||
if (s == null) {
|
||||
result.add(new IntegerType(0).noExtensions());
|
||||
|
@ -5080,7 +5097,7 @@ public class FHIRPathEngine {
|
|||
i2 = Integer.parseInt(n2.get(0).primitiveValue());
|
||||
}
|
||||
|
||||
if (focus.size() == 1) {
|
||||
if (focus.size() == 1 && (focus.get(0).hasType(FHIR_TYPES_STRING) || doImplicitStringConversion)) {
|
||||
String sw = convertToString(focus.get(0));
|
||||
String s;
|
||||
if (i1 < 0 || i1 >= sw.length()) {
|
||||
|
|
|
@ -71,7 +71,7 @@ public class SimpleHTTPClient {
|
|||
public void checkThrowException() throws IOException {
|
||||
if (code >= 300) {
|
||||
String filename = Utilities.path("[tmp]", "fhir-http-"+(++counter)+".log");
|
||||
if (content.length == 0) {
|
||||
if (content == null || content.length == 0) {
|
||||
throw new IOException("Invalid HTTP response "+code+" from "+source+" ("+message+") (no content)");
|
||||
} else {
|
||||
TextFile.bytesToFile(content, filename);
|
||||
|
|
|
@ -1333,6 +1333,30 @@ public class Utilities {
|
|||
return false;
|
||||
}
|
||||
|
||||
public static boolean endsWithInList(String s, String... list) {
|
||||
if (s == null) {
|
||||
return false;
|
||||
}
|
||||
for (String l : list) {
|
||||
if (s.endsWith(l)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean endsWithInList(String s, Collection<String> list) {
|
||||
if (s == null) {
|
||||
return false;
|
||||
}
|
||||
for (String l : list) {
|
||||
if (s.endsWith(l)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static final int ONE_MB = 1024;
|
||||
public static final String GB = "Gb";
|
||||
public static final String MB = "Mb";
|
||||
|
|
|
@ -45,7 +45,7 @@ import com.google.gson.JsonNull;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
|
||||
public class JSONUtil {
|
||||
public class JsonUtilities {
|
||||
|
||||
public static JsonObject parse(String json) throws IOException {
|
||||
return JsonTrackingParser.parseJson(json);
|
||||
|
@ -155,4 +155,15 @@ public class JSONUtil {
|
|||
return "String";
|
||||
}
|
||||
|
||||
public static List<String> strings(JsonArray arr) {
|
||||
List<String> res = new ArrayList<String>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JsonElement n = arr.get(i);
|
||||
if (n.isJsonPrimitive()) {
|
||||
res.add(n.getAsString());
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
|
@ -42,7 +42,7 @@ import org.hl7.fhir.utilities.IniFile;
|
|||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage.NpmPackageFolder;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -414,14 +414,14 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
log(" done.");
|
||||
}
|
||||
pck = loadPackageInfo(packRoot);
|
||||
if (!id.equals(JSONUtil.str(npm.getNpm(), "name")) || !v.equals(JSONUtil.str(npm.getNpm(), "version"))) {
|
||||
if (!id.equals(JSONUtil.str(npm.getNpm(), "name"))) {
|
||||
npm.getNpm().addProperty("original-name", JSONUtil.str(npm.getNpm(), "name"));
|
||||
if (!id.equals(JsonUtilities.str(npm.getNpm(), "name")) || !v.equals(JsonUtilities.str(npm.getNpm(), "version"))) {
|
||||
if (!id.equals(JsonUtilities.str(npm.getNpm(), "name"))) {
|
||||
npm.getNpm().addProperty("original-name", JsonUtilities.str(npm.getNpm(), "name"));
|
||||
npm.getNpm().remove("name");
|
||||
npm.getNpm().addProperty("name", id);
|
||||
}
|
||||
if (!v.equals(JSONUtil.str(npm.getNpm(), "version"))) {
|
||||
npm.getNpm().addProperty("original-version", JSONUtil.str(npm.getNpm(), "version"));
|
||||
if (!v.equals(JsonUtilities.str(npm.getNpm(), "version"))) {
|
||||
npm.getNpm().addProperty("original-version", JsonUtilities.str(npm.getNpm(), "version"));
|
||||
npm.getNpm().remove("version");
|
||||
npm.getNpm().addProperty("version", v);
|
||||
}
|
||||
|
@ -566,8 +566,8 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
checkBuildLoaded();
|
||||
for (JsonElement n : buildInfo) {
|
||||
JsonObject o = (JsonObject) n;
|
||||
if (packageId.equals(JSONUtil.str(o, "package-id"))) {
|
||||
return JSONUtil.str(o, "url");
|
||||
if (packageId.equals(JsonUtilities.str(o, "package-id"))) {
|
||||
return JsonUtilities.str(o, "url");
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -577,8 +577,8 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
checkBuildLoaded();
|
||||
for (JsonElement n : buildInfo) {
|
||||
JsonObject o = (JsonObject) n;
|
||||
if (!specList.containsKey(JSONUtil.str(o, "package-id"))) {
|
||||
specList.put(JSONUtil.str(o, "package-id"), JSONUtil.str(o, "url"));
|
||||
if (!specList.containsKey(JsonUtilities.str(o, "package-id"))) {
|
||||
specList.put(JsonUtilities.str(o, "package-id"), JsonUtilities.str(o, "url"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -604,8 +604,8 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
for (String pf : listPackages()) {
|
||||
if (new File(Utilities.path(cacheFolder, pf, "package", "package.json")).exists()) {
|
||||
JsonObject npm = JsonTrackingParser.parseJsonFile(Utilities.path(cacheFolder, pf, "package", "package.json"));
|
||||
if (canonicalUrl.equals(JSONUtil.str(npm, "canonical"))) {
|
||||
return JSONUtil.str(npm, "name");
|
||||
if (canonicalUrl.equals(JsonUtilities.str(npm, "canonical"))) {
|
||||
return JsonUtilities.str(npm, "name");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -624,14 +624,14 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
if (buildInfo != null) {
|
||||
for (JsonElement n : buildInfo) {
|
||||
JsonObject o = (JsonObject) n;
|
||||
if (canonical.equals(JSONUtil.str(o, "url"))) {
|
||||
return JSONUtil.str(o, "package-id");
|
||||
if (canonical.equals(JsonUtilities.str(o, "url"))) {
|
||||
return JsonUtilities.str(o, "package-id");
|
||||
}
|
||||
}
|
||||
for (JsonElement n : buildInfo) {
|
||||
JsonObject o = (JsonObject) n;
|
||||
if (JSONUtil.str(o, "url").startsWith(canonical + "/ImplementationGuide/")) {
|
||||
return JSONUtil.str(o, "package-id");
|
||||
if (JsonUtilities.str(o, "url").startsWith(canonical + "/ImplementationGuide/")) {
|
||||
return JsonUtilities.str(o, "package-id");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -644,7 +644,7 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
try {
|
||||
String url = ciList.get(id);
|
||||
JsonObject json = JsonTrackingParser.fetchJson(Utilities.pathURL(url, "package.manifest.json"));
|
||||
String currDate = JSONUtil.str(json, "date");
|
||||
String currDate = JsonUtilities.str(json, "date");
|
||||
String packDate = p.date();
|
||||
if (!currDate.equals(packDate)) {
|
||||
return null; // nup, we need a new copy
|
||||
|
@ -740,13 +740,13 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
throw new FHIRException("Error fetching package directly (" + pv + "), or fetching package list for " + id + " from " + pu + ": " + e1.getMessage(), e1);
|
||||
}
|
||||
}
|
||||
if (!id.equals(JSONUtil.str(json, "package-id")))
|
||||
throw new FHIRException("Package ids do not match in " + pu + ": " + id + " vs " + JSONUtil.str(json, "package-id"));
|
||||
if (!id.equals(JsonUtilities.str(json, "package-id")))
|
||||
throw new FHIRException("Package ids do not match in " + pu + ": " + id + " vs " + JsonUtilities.str(json, "package-id"));
|
||||
for (JsonElement e : json.getAsJsonArray("list")) {
|
||||
JsonObject vo = (JsonObject) e;
|
||||
if (v.equals(JSONUtil.str(vo, "version"))) {
|
||||
aurl = Utilities.pathURL(JSONUtil.str(vo, "path"), "package.tgz");
|
||||
String u = Utilities.pathURL(JSONUtil.str(vo, "path"), "package.tgz");
|
||||
if (v.equals(JsonUtilities.str(vo, "version"))) {
|
||||
aurl = Utilities.pathURL(JsonUtilities.str(vo, "path"), "package.tgz");
|
||||
String u = Utilities.pathURL(JsonUtilities.str(vo, "path"), "package.tgz");
|
||||
return new InputStreamWithSrc(fetchFromUrlSpecific(u, true), u, v);
|
||||
}
|
||||
}
|
||||
|
@ -771,12 +771,12 @@ public class FilesystemPackageCacheManager extends BasePackageCacheManager imple
|
|||
}
|
||||
String pu = Utilities.pathURL(url, "package-list.json");
|
||||
JsonObject json = JsonTrackingParser.fetchJson(pu);
|
||||
if (!id.equals(JSONUtil.str(json, "package-id")))
|
||||
throw new FHIRException("Package ids do not match in " + pu + ": " + id + " vs " + JSONUtil.str(json, "package-id"));
|
||||
if (!id.equals(JsonUtilities.str(json, "package-id")))
|
||||
throw new FHIRException("Package ids do not match in " + pu + ": " + id + " vs " + JsonUtilities.str(json, "package-id"));
|
||||
for (JsonElement e : json.getAsJsonArray("list")) {
|
||||
JsonObject vo = (JsonObject) e;
|
||||
if (JSONUtil.bool(vo, "current")) {
|
||||
return JSONUtil.str(vo, "version");
|
||||
if (JsonUtilities.bool(vo, "current")) {
|
||||
return JsonUtilities.str(vo, "version");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient;
|
|||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage.ITransformingLoader;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage.PackageResourceInformationSorter;
|
||||
|
@ -113,12 +113,12 @@ public class NpmPackage {
|
|||
|
||||
public PackageResourceInformation(String root, JsonObject fi) throws IOException {
|
||||
super();
|
||||
id = JSONUtil.str(fi, "id");
|
||||
type = JSONUtil.str(fi, "resourceType");
|
||||
url = JSONUtil.str(fi, "url");
|
||||
version = JSONUtil.str(fi, "version");
|
||||
filename = Utilities.path(root, JSONUtil.str(fi, "filename"));
|
||||
supplements = JSONUtil.str(fi, "supplements");
|
||||
id = JsonUtilities.str(fi, "id");
|
||||
type = JsonUtilities.str(fi, "resourceType");
|
||||
url = JsonUtilities.str(fi, "url");
|
||||
version = JsonUtilities.str(fi, "version");
|
||||
filename = Utilities.path(root, JsonUtilities.str(fi, "filename"));
|
||||
supplements = JsonUtilities.str(fi, "supplements");
|
||||
}
|
||||
public String getId() {
|
||||
return id;
|
||||
|
@ -144,8 +144,8 @@ public class NpmPackage {
|
|||
|
||||
@Override
|
||||
public int compare(JsonObject o0, JsonObject o1) {
|
||||
String v0 = JSONUtil.str(o0, "version");
|
||||
String v1 = JSONUtil.str(o1, "version");
|
||||
String v0 = JsonUtilities.str(o0, "version");
|
||||
String v1 = JsonUtilities.str(o1, "version");
|
||||
return v0.compareTo(v1);
|
||||
}
|
||||
}
|
||||
|
@ -185,8 +185,8 @@ public class NpmPackage {
|
|||
this.index = index;
|
||||
for (JsonElement e : index.getAsJsonArray("files")) {
|
||||
JsonObject file = (JsonObject) e;
|
||||
String type = JSONUtil.str(file, "resourceType");
|
||||
String name = JSONUtil.str(file, "filename");
|
||||
String type = JsonUtilities.str(file, "resourceType");
|
||||
String name = JsonUtilities.str(file, "filename");
|
||||
if (!types.containsKey(type))
|
||||
types.put(type, new ArrayList<>());
|
||||
types.get(type).add(name);
|
||||
|
@ -326,7 +326,8 @@ public class NpmPackage {
|
|||
}
|
||||
|
||||
public static boolean isInternalExemptFile(File f) {
|
||||
return Utilities.existsInList(f.getName(), ".git", ".svn") || Utilities.existsInList(f.getName(), "package-list.json");
|
||||
return Utilities.existsInList(f.getName(), ".git", ".svn", ".DS_Store") || Utilities.existsInList(f.getName(), "package-list.json") ||
|
||||
Utilities.endsWithInList(f.getName(), ".tgz");
|
||||
}
|
||||
|
||||
private void loadSubFolders(String rootPath, File dir) throws IOException {
|
||||
|
@ -552,7 +553,7 @@ public class NpmPackage {
|
|||
if (folder.index != null) {
|
||||
for (JsonElement e : folder.index.getAsJsonArray("files")) {
|
||||
JsonObject fi = e.getAsJsonObject();
|
||||
if (Utilities.existsInList(JSONUtil.str(fi, "resourceType"), types)) {
|
||||
if (Utilities.existsInList(JsonUtilities.str(fi, "resourceType"), types)) {
|
||||
res.add(new PackageResourceInformation(folder.folder.getAbsolutePath(), fi));
|
||||
}
|
||||
}
|
||||
|
@ -625,19 +626,19 @@ public class NpmPackage {
|
|||
List<JsonObject> matches = new ArrayList<>();
|
||||
for (JsonElement e : f.index.getAsJsonArray("files")) {
|
||||
JsonObject file = (JsonObject) e;
|
||||
if (canonical.equals(JSONUtil.str(file, "url"))) {
|
||||
if (version != null && version.equals(JSONUtil.str(file, "version"))) {
|
||||
return load("package", JSONUtil.str(file, "filename"));
|
||||
if (canonical.equals(JsonUtilities.str(file, "url"))) {
|
||||
if (version != null && version.equals(JsonUtilities.str(file, "version"))) {
|
||||
return load("package", JsonUtilities.str(file, "filename"));
|
||||
} else if (version == null) {
|
||||
matches.add(file);
|
||||
}
|
||||
}
|
||||
if (matches.size() > 0) {
|
||||
if (matches.size() == 1) {
|
||||
return load("package", JSONUtil.str(matches.get(0), "filename"));
|
||||
return load("package", JsonUtilities.str(matches.get(0), "filename"));
|
||||
} else {
|
||||
Collections.sort(matches, new IndexVersionSorter());
|
||||
return load("package", JSONUtil.str(matches.get(matches.size()-1), "filename"));
|
||||
return load("package", JsonUtilities.str(matches.get(matches.size()-1), "filename"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -697,7 +698,7 @@ public class NpmPackage {
|
|||
* @return
|
||||
*/
|
||||
public String name() {
|
||||
return JSONUtil.str(npm, "name");
|
||||
return JsonUtilities.str(npm, "name");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -705,15 +706,15 @@ public class NpmPackage {
|
|||
* @return
|
||||
*/
|
||||
public String id() {
|
||||
return JSONUtil.str(npm, "name");
|
||||
return JsonUtilities.str(npm, "name");
|
||||
}
|
||||
|
||||
public String date() {
|
||||
return JSONUtil.str(npm, "date");
|
||||
return JsonUtilities.str(npm, "date");
|
||||
}
|
||||
|
||||
public String canonical() {
|
||||
return JSONUtil.str(npm, "canonical");
|
||||
return JsonUtilities.str(npm, "canonical");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -721,7 +722,7 @@ public class NpmPackage {
|
|||
* @return
|
||||
*/
|
||||
public String version() {
|
||||
return JSONUtil.str(npm, "version");
|
||||
return JsonUtilities.str(npm, "version");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -729,11 +730,11 @@ public class NpmPackage {
|
|||
* @return
|
||||
*/
|
||||
public String fhirVersion() {
|
||||
if ("hl7.fhir.core".equals(JSONUtil.str(npm, "name")))
|
||||
return JSONUtil.str(npm, "version");
|
||||
else if (JSONUtil.str(npm, "name").startsWith("hl7.fhir.r2.") || JSONUtil.str(npm, "name").startsWith("hl7.fhir.r2b.") || JSONUtil.str(npm, "name").startsWith("hl7.fhir.r3.") ||
|
||||
JSONUtil.str(npm, "name").startsWith("hl7.fhir.r4.") || JSONUtil.str(npm, "name").startsWith("hl7.fhir.r4b.") || JSONUtil.str(npm, "name").startsWith("hl7.fhir.r5."))
|
||||
return JSONUtil.str(npm, "version");
|
||||
if ("hl7.fhir.core".equals(JsonUtilities.str(npm, "name")))
|
||||
return JsonUtilities.str(npm, "version");
|
||||
else if (JsonUtilities.str(npm, "name").startsWith("hl7.fhir.r2.") || JsonUtilities.str(npm, "name").startsWith("hl7.fhir.r2b.") || JsonUtilities.str(npm, "name").startsWith("hl7.fhir.r3.") ||
|
||||
JsonUtilities.str(npm, "name").startsWith("hl7.fhir.r4.") || JsonUtilities.str(npm, "name").startsWith("hl7.fhir.r4b.") || JsonUtilities.str(npm, "name").startsWith("hl7.fhir.r5."))
|
||||
return JsonUtilities.str(npm, "version");
|
||||
else {
|
||||
JsonObject dep = null;
|
||||
if (npm.has("dependencies") && npm.get("dependencies").isJsonObject()) {
|
||||
|
@ -778,11 +779,11 @@ public class NpmPackage {
|
|||
}
|
||||
|
||||
public String type() {
|
||||
return JSONUtil.str(npm, "type");
|
||||
return JsonUtilities.str(npm, "type");
|
||||
}
|
||||
|
||||
public String description() {
|
||||
return JSONUtil.str(npm, "description");
|
||||
return JsonUtilities.str(npm, "description");
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
|
@ -800,24 +801,24 @@ public class NpmPackage {
|
|||
}
|
||||
|
||||
public String homepage() {
|
||||
return JSONUtil.str(npm, "homepage");
|
||||
return JsonUtilities.str(npm, "homepage");
|
||||
}
|
||||
|
||||
public String url() {
|
||||
return JSONUtil.str(npm, "url");
|
||||
return JsonUtilities.str(npm, "url");
|
||||
}
|
||||
|
||||
|
||||
public String title() {
|
||||
return JSONUtil.str(npm, "title");
|
||||
return JsonUtilities.str(npm, "title");
|
||||
}
|
||||
|
||||
public String toolsVersion() {
|
||||
return JSONUtil.str(npm, "tools-version");
|
||||
return JsonUtilities.str(npm, "tools-version");
|
||||
}
|
||||
|
||||
public String license() {
|
||||
return JSONUtil.str(npm, "license");
|
||||
return JsonUtilities.str(npm, "license");
|
||||
}
|
||||
|
||||
// /**
|
||||
|
@ -833,7 +834,7 @@ public class NpmPackage {
|
|||
if (npm.has("url") && npm.get("url").isJsonPrimitive()) {
|
||||
return PackageHacker.fixPackageUrl(npm.get("url").getAsString());
|
||||
} else {
|
||||
return JSONUtil.str(npm, "canonical");
|
||||
return JsonUtilities.str(npm, "canonical");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -842,8 +843,8 @@ public class NpmPackage {
|
|||
JsonArray files = f.index.getAsJsonArray("files");
|
||||
for (JsonElement e : files) {
|
||||
JsonObject i = (JsonObject) e;
|
||||
if (type.equals(JSONUtil.str(i, "resourceType")) && id.equals(JSONUtil.str(i, "id"))) {
|
||||
return load("package", JSONUtil.str(i, "filename"));
|
||||
if (type.equals(JsonUtilities.str(i, "resourceType")) && id.equals(JsonUtilities.str(i, "id"))) {
|
||||
return load("package", JsonUtilities.str(i, "filename"));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -858,8 +859,8 @@ public class NpmPackage {
|
|||
JsonArray files = f.index.getAsJsonArray("files");
|
||||
for (JsonElement e : files) {
|
||||
JsonObject i = (JsonObject) e;
|
||||
if (type.equals(JSONUtil.str(i, "resourceType")) && id.equals(JSONUtil.str(i, "id"))) {
|
||||
return load("example", JSONUtil.str(i, "filename"));
|
||||
if (type.equals(JsonUtilities.str(i, "resourceType")) && id.equals(JsonUtilities.str(i, "id"))) {
|
||||
return load("example", JsonUtilities.str(i, "filename"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1094,7 +1095,7 @@ public class NpmPackage {
|
|||
}
|
||||
|
||||
public boolean isCore() {
|
||||
return Utilities.existsInList(JSONUtil.str(npm, "type"), "fhir.core", "Core");
|
||||
return Utilities.existsInList(JsonUtilities.str(npm, "type"), "fhir.core", "Core");
|
||||
}
|
||||
|
||||
public boolean hasCanonical(String url) {
|
||||
|
@ -1107,8 +1108,8 @@ public class NpmPackage {
|
|||
if (folder != null) {
|
||||
for (JsonElement e : folder.index.getAsJsonArray("files")) {
|
||||
JsonObject o = (JsonObject) e;
|
||||
if (u.equals(JSONUtil.str(o, "url"))) {
|
||||
if (v == null || v.equals(JSONUtil.str(o, "version"))) {
|
||||
if (u.equals(JsonUtilities.str(o, "url"))) {
|
||||
if (v == null || v.equals(JsonUtilities.str(o, "version"))) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1126,7 +1127,7 @@ public class NpmPackage {
|
|||
if (Utilities.existsInList(name(), "fhir.test.data.r2", "fhir.test.data.r3", "fhir.test.data.r4", "fhir.tx.support.r2", "fhir.tx.support.r3", "fhir.tx.support.r4", "us.nlm.vsac")) {
|
||||
return true;
|
||||
}
|
||||
if (JSONUtil.bool(npm, "lazy-load")) {
|
||||
if (JsonUtilities.bool(npm, "lazy-load")) {
|
||||
return true;
|
||||
}
|
||||
if (!hasFile("other", "spec.internals")) {
|
||||
|
@ -1136,7 +1137,7 @@ public class NpmPackage {
|
|||
}
|
||||
|
||||
public boolean isNotForPublication() {
|
||||
return JSONUtil.bool(npm, "notForPublication");
|
||||
return JsonUtilities.bool(npm, "notForPublication");
|
||||
}
|
||||
|
||||
public InputStream load(PackageResourceInformation p) throws FileNotFoundException {
|
||||
|
|
|
@ -9,7 +9,7 @@ import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
|
|||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
@ -81,12 +81,12 @@ public class PackageClient {
|
|||
if (versions != null) {
|
||||
for (String v : sorted(versions.keySet())) {
|
||||
JsonObject obj = versions.getAsJsonObject(v);
|
||||
res.add(new PackageInfo(JSONUtil.str(obj, "Name", "name"),
|
||||
JSONUtil.str(obj, "Version", "version"),
|
||||
JSONUtil.str(obj, "FhirVersion", "fhirVersion"),
|
||||
JSONUtil.str(obj, "Description", "description"),
|
||||
JSONUtil.str(obj, "url"),
|
||||
JSONUtil.str(obj, "canonical"),
|
||||
res.add(new PackageInfo(JsonUtilities.str(obj, "Name", "name"),
|
||||
JsonUtilities.str(obj, "Version", "version"),
|
||||
JsonUtilities.str(obj, "FhirVersion", "fhirVersion"),
|
||||
JsonUtilities.str(obj, "Description", "description"),
|
||||
JsonUtilities.str(obj, "url"),
|
||||
JsonUtilities.str(obj, "canonical"),
|
||||
address));
|
||||
}
|
||||
}
|
||||
|
@ -121,12 +121,12 @@ public class PackageClient {
|
|||
JsonArray json = fetchJsonArray(Utilities.pathURL(address, "catalog?")+params.toString());
|
||||
for (JsonElement e : json) {
|
||||
JsonObject obj = (JsonObject) e;
|
||||
res.add(new PackageInfo(JSONUtil.str(obj, "Name", "name"),
|
||||
JSONUtil.str(obj, "Version", "version"),
|
||||
JSONUtil.str(obj, "FhirVersion", "fhirVersion"),
|
||||
JSONUtil.str(obj, "Description", "description"),
|
||||
JSONUtil.str(obj, "url"),
|
||||
JSONUtil.str(obj, "canonical"),
|
||||
res.add(new PackageInfo(JsonUtilities.str(obj, "Name", "name"),
|
||||
JsonUtilities.str(obj, "Version", "version"),
|
||||
JsonUtilities.str(obj, "FhirVersion", "fhirVersion"),
|
||||
JsonUtilities.str(obj, "Description", "description"),
|
||||
JsonUtilities.str(obj, "url"),
|
||||
JsonUtilities.str(obj, "canonical"),
|
||||
address));
|
||||
}
|
||||
} catch (IOException e1) {
|
||||
|
@ -192,10 +192,10 @@ public class PackageClient {
|
|||
}
|
||||
|
||||
protected PackageInfo getPackageInfoFromJSON(JsonObject o, String name, String canonical, String fhirVersion) {
|
||||
String id = JSONUtil.str(o, "npm-name");
|
||||
String pname = JSONUtil.str(o, "name");
|
||||
String pcanonical = JSONUtil.str(o, "canonical");
|
||||
String description = JSONUtil.str(o, "description");
|
||||
String id = JsonUtilities.str(o, "npm-name");
|
||||
String pname = JsonUtilities.str(o, "name");
|
||||
String pcanonical = JsonUtilities.str(o, "canonical");
|
||||
String description = JsonUtilities.str(o, "description");
|
||||
boolean ok = true;
|
||||
if (ok && !Utilities.noString(name)) {
|
||||
ok = (pname != null && pname.contains(name)) || (description != null && description.contains(name)) || (id != null && id.contains(name));
|
||||
|
@ -209,15 +209,15 @@ public class PackageClient {
|
|||
|
||||
if (ok) {
|
||||
// if we can find something...
|
||||
for (JsonObject e : JSONUtil.objects(o, "editions")) {
|
||||
if (fhirVersion == null || fhirVersion.equals(JSONUtil.str(e, "fhir-version"))) {
|
||||
String v = JSONUtil.str(e, "ig-version");
|
||||
for (JsonObject e : JsonUtilities.objects(o, "editions")) {
|
||||
if (fhirVersion == null || fhirVersion.equals(JsonUtilities.str(e, "fhir-version"))) {
|
||||
String v = JsonUtilities.str(e, "ig-version");
|
||||
if (version == null || VersionUtilities.isThisOrLater(version, v)) {
|
||||
version = v;
|
||||
fVersion = e.getAsJsonArray("fhir-version").get(0).getAsString();
|
||||
url = JSONUtil.str(e, "url");
|
||||
url = JsonUtilities.str(e, "url");
|
||||
|
||||
String npmPackage = JSONUtil.str(e, "package");
|
||||
String npmPackage = JsonUtilities.str(e, "package");
|
||||
if (npmPackage != null && id == null) {
|
||||
id = npmPackage.substring(0, npmPackage.indexOf("#"));
|
||||
}
|
||||
|
@ -231,7 +231,7 @@ public class PackageClient {
|
|||
public List<PackageInfo> listFromRegistry(String name, String canonical, String fhirVersion) throws IOException {
|
||||
List<PackageInfo> result = new ArrayList<>();
|
||||
JsonObject packages = JsonTrackingParser.fetchJson("https://raw.githubusercontent.com/FHIR/ig-registry/master/fhir-ig-list.json?nocache=" + System.currentTimeMillis());
|
||||
for (JsonObject o : JSONUtil.objects(packages, "guides")) {
|
||||
for (JsonObject o : JsonUtilities.objects(packages, "guides")) {
|
||||
if (o.has("canonical")) {
|
||||
final PackageInfo packageInfo = getPackageInfoFromJSON(o, name, canonical, fhirVersion);
|
||||
if (packageInfo.getVersion() != null) {
|
||||
|
@ -249,7 +249,7 @@ public class PackageClient {
|
|||
JsonArray json = fetchJsonArray(Utilities.pathURL(address, "catalog?")+params.toString());
|
||||
for (JsonElement e : json) {
|
||||
JsonObject obj = (JsonObject) e;
|
||||
list.add(JSONUtil.str(obj, "Name", "name"));
|
||||
list.add(JsonUtilities.str(obj, "Name", "name"));
|
||||
}
|
||||
} catch (IOException e1) {
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.io.FileInputStream;
|
|||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -27,7 +28,7 @@ public class PackageHacker {
|
|||
private static boolean useSecureReferences = false;
|
||||
|
||||
public static void main(String[] args) throws FileNotFoundException, IOException {
|
||||
new PackageHacker().edit("/Users/grahamegrieve/work/test-cases/validator/swiss.mednet.fhir#0.5.0.tgz");
|
||||
new PackageHacker().edit(args[0]);
|
||||
}
|
||||
|
||||
private void edit(String name) throws FileNotFoundException, IOException {
|
||||
|
@ -39,7 +40,14 @@ public class PackageHacker {
|
|||
System.out.println("Altering Package "+f.getAbsolutePath());
|
||||
System.out.println(nice(pck.getNpm()));
|
||||
|
||||
change(pck.getNpm(), pck.getFolders().get("package").getContent());
|
||||
change(pck.getNpm());
|
||||
fixContent(pck.getFolders().get("package").getContent());
|
||||
if (pck.getFolders().containsKey("openapi")) {
|
||||
fixContent(pck.getFolders().get("openapi").getContent());
|
||||
}
|
||||
if (pck.getFolders().containsKey("xml")) {
|
||||
fixContent(pck.getFolders().get("xml").getContent());
|
||||
}
|
||||
|
||||
System.out.println("Revised Package");
|
||||
System.out.println("=======================");
|
||||
|
@ -53,11 +61,16 @@ public class PackageHacker {
|
|||
}
|
||||
}
|
||||
|
||||
private void fixContent(Map<String, byte[]> content) {
|
||||
fixVersionInContent(content);
|
||||
|
||||
}
|
||||
|
||||
private String nice(JsonObject json) {
|
||||
return new GsonBuilder().setPrettyPrinting().create().toJson(json);
|
||||
}
|
||||
|
||||
private void change(JsonObject npm, Map<String, byte[]> content) throws FileNotFoundException, IOException {
|
||||
private void change(JsonObject npm) throws FileNotFoundException, IOException {
|
||||
fixVersions(npm);
|
||||
// npm.remove("notForPublication");
|
||||
// npm.addProperty("url", "http://hl7.org/fhir/us/carin-rtpbc/STU1");
|
||||
|
@ -67,21 +80,36 @@ public class PackageHacker {
|
|||
// npm.addProperty("canonical", "http://hl7.org/fhir/us/davinci-drug-formulary");
|
||||
//// npm.remove("description");
|
||||
//// npm.addProperty("description", "Group Wrapper that includes all the R4 packages");
|
||||
// npm.remove("url");
|
||||
// npm.addProperty("url", "https://terminology.hl7.org/1.0.0/");
|
||||
npm.remove("dependencies");
|
||||
JsonObject dep = new JsonObject();
|
||||
npm.add("dependencies", dep);
|
||||
dep.addProperty("hl7.fhir.r4.core", "4.0.1");
|
||||
dep.addProperty("ch.fhir.ig.ch-core", "2.0.0");
|
||||
dep.addProperty("ch.fhir.ig.ch-epr-term", "2.0.4");
|
||||
dep.addProperty("ch.fhir.ig.ch-emed","current");
|
||||
npm.remove("url");
|
||||
npm.addProperty("url", "http://hl7.org/fhir/R4B");
|
||||
npm.remove("homepage");
|
||||
npm.addProperty("homepage", "http://hl7.org/fhir/R4B");
|
||||
// npm.remove("dependencies");
|
||||
// JsonObject dep = new JsonObject();
|
||||
// npm.add("dependencies", dep);
|
||||
// dep.addProperty("hl7.fhir.r4.core", "4.0.1");
|
||||
// dep.addProperty("ch.fhir.ig.ch-core", "2.0.0");
|
||||
// dep.addProperty("ch.fhir.ig.ch-epr-term", "2.0.4");
|
||||
// dep.addProperty("ch.fhir.ig.ch-emed","current");
|
||||
|
||||
// dep.addProperty("hl7.fhir.r4.examples", "4.0.1");
|
||||
// dep.addProperty("hl7.fhir.r4.expansions", "4.0.1");
|
||||
// dep.addProperty("hl7.fhir.r4.elements", "4.0.1");
|
||||
}
|
||||
|
||||
private void fixVersionInContent(Map<String, byte[]> content) {
|
||||
for (String n : content.keySet()) {
|
||||
if (n.endsWith(".json") || n.endsWith(".xml") || n.endsWith(".xsd")) {
|
||||
String json = new String(content.get(n));
|
||||
if (json.contains("4.3.0-cibuild") && !json.contains("4.3.0-snapshot1")) {
|
||||
json = json.replace("4.3.0-cibuild", "4.3.0");
|
||||
content.put(n, json.getBytes(StandardCharsets.UTF_8));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void fixVersions(JsonObject npm) {
|
||||
npm.remove("fhirVersions");
|
||||
JsonArray a = new JsonArray();
|
||||
|
|
|
@ -9,7 +9,7 @@ import java.util.Set;
|
|||
|
||||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
@ -63,7 +63,7 @@ public class PackageScanner {
|
|||
} catch (Exception e) {
|
||||
fv = "--";
|
||||
}
|
||||
output.add(pck.name()+"\t"+pck.version()+"\t"+pck.canonical()+"\t"+fv+'\t'+pck.fhirVersionList()+'\t'+JSONUtil.str(json, "kind")+'\t'+JSONUtil.str(json, "type")+'\t'+JsonTrackingParser.writeDense(json)); } catch (Exception e) {
|
||||
output.add(pck.name()+"\t"+pck.version()+"\t"+pck.canonical()+"\t"+fv+'\t'+pck.fhirVersionList()+'\t'+JsonUtilities.str(json, "kind")+'\t'+JsonUtilities.str(json, "type")+'\t'+JsonTrackingParser.writeDense(json)); } catch (Exception e) {
|
||||
System.out.println("Error acessing "+pi.getId()+"#"+piv.getVersion()+": "+e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
package org.hl7.fhir.utilities.npm;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
public class ResourceRenamer {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
new ResourceRenamer().processArg(new File(args[0]));
|
||||
}
|
||||
|
||||
private void processArg(File file) throws IOException {
|
||||
if (file.isDirectory()) {
|
||||
process(file);
|
||||
} else {
|
||||
unbundle(file);
|
||||
}
|
||||
}
|
||||
|
||||
private void unbundle(File f) throws IOException {
|
||||
JsonObject j = JsonTrackingParser.parseJson(f);
|
||||
for (JsonObject e : JsonUtilities.objects(j, "entry")) {
|
||||
JsonObject r = e.getAsJsonObject("resource");
|
||||
String rt = r.get("resourceType").getAsString();
|
||||
String id = r.get("id").getAsString();
|
||||
String nn = Utilities.path(Utilities.getDirectoryForFile(f.getAbsolutePath()), rt+"-"+id+".json");
|
||||
JsonTrackingParser.write(r, new File(nn), true);
|
||||
}
|
||||
}
|
||||
|
||||
private void process(File dir) {
|
||||
|
||||
for (File f : dir.listFiles()) {
|
||||
if (f.getName().endsWith(".json")) {
|
||||
try {
|
||||
JsonObject j = JsonTrackingParser.parseJson(f);
|
||||
String rt = j.get("resourceType").getAsString();
|
||||
String id = j.get("id").getAsString();
|
||||
String nn = Utilities.path(Utilities.getDirectoryForFile(f.getAbsolutePath()), rt+"-"+id+".json");
|
||||
File nf = new File(nn);
|
||||
if (!nn.equals(f.getAbsolutePath())) {
|
||||
System.out.println("Rename "+f.getName()+" to "+nf.getName());
|
||||
f.renameTo(nf);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Error Processing "+f.getName()+" : "+e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -24,7 +24,7 @@ import org.hl7.fhir.utilities.IniFile;
|
|||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage;
|
||||
|
|
|
@ -8,7 +8,7 @@ import org.hl7.fhir.r5.elementmodel.SHCParser.JWT;
|
|||
import org.hl7.fhir.r5.utils.structuremap.StructureMapUtilities;
|
||||
import org.hl7.fhir.utilities.TextFile;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
|
|
@ -158,6 +158,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||
@Getter @Setter private boolean crumbTrails;
|
||||
@Getter @Setter private boolean allowExampleUrls;
|
||||
@Getter @Setter private boolean showMessagesFromReferences;
|
||||
@Getter @Setter private boolean doImplicitFHIRPathStringConversion;
|
||||
@Getter @Setter private Locale locale;
|
||||
@Getter @Setter private List<ImplementationGuide> igs = new ArrayList<>();
|
||||
@Getter @Setter private List<String> extensionDomains = new ArrayList<>();
|
||||
|
@ -623,6 +624,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||
validator.setQuestionnaireMode(questionnaireMode);
|
||||
validator.setLevel(level);
|
||||
validator.setNoUnicodeBiDiControlChars(noUnicodeBiDiControlChars);
|
||||
validator.setDoImplicitFHIRPathStringConversion(doImplicitFHIRPathStringConversion);
|
||||
if (format == FhirFormat.SHC) {
|
||||
igLoader.loadIg(getIgs(), getBinaries(), SHCParser.CURRENT_PACKAGE, true);
|
||||
}
|
||||
|
|
|
@ -46,6 +46,8 @@ public class CliContext {
|
|||
private boolean noInvariants = false;
|
||||
@JsonProperty("wantInvariantsInMessages")
|
||||
private boolean wantInvariantsInMessages = false;
|
||||
@JsonProperty("doImplicitFHIRPathStringConversion")
|
||||
private boolean doImplicitFHIRPathStringConversion = false;
|
||||
|
||||
@JsonProperty("map")
|
||||
private String map = null;
|
||||
|
@ -233,6 +235,16 @@ public class CliContext {
|
|||
return this;
|
||||
}
|
||||
|
||||
@JsonProperty("doImplicitFHIRPathStringConversion")
|
||||
public boolean isDoImplicitFHIRPathStringConversion() {
|
||||
return doImplicitFHIRPathStringConversion;
|
||||
}
|
||||
|
||||
@JsonProperty("doImplicitFHIRPathStringConversion")
|
||||
public void setDoImplicitFHIRPathStringConversion(boolean doImplicitFHIRPathStringConversion) {
|
||||
this.doImplicitFHIRPathStringConversion = doImplicitFHIRPathStringConversion;
|
||||
}
|
||||
|
||||
@JsonProperty("locale")
|
||||
public String getLanguageCode() {
|
||||
return locale;
|
||||
|
|
|
@ -21,7 +21,7 @@ import org.hl7.fhir.r5.utils.validation.constants.ReferenceValidationPolicy;
|
|||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities.VersionURLInfo;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.json.JsonTrackingParser;
|
||||
import org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage;
|
||||
|
@ -165,8 +165,8 @@ public class StandAloneValidatorFetcher implements IValidatorResourceFetcher, IV
|
|||
JsonObject json;
|
||||
try {
|
||||
json = JsonTrackingParser.fetchJson("http://hl7.org/fhir/mappingspaces.json");
|
||||
for (JsonObject ms : JSONUtil.objects(json, "spaces")) {
|
||||
mappingsUris.add(JSONUtil.str(ms, "url"));
|
||||
for (JsonObject ms : JsonUtilities.objects(json, "spaces")) {
|
||||
mappingsUris.add(JsonUtilities.str(ms, "url"));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// frozen R4 list
|
||||
|
|
|
@ -354,6 +354,7 @@ public class ValidationService {
|
|||
validator.setSnomedExtension(cliContext.getSnomedCTCode());
|
||||
validator.setAssumeValidRestReferences(cliContext.isAssumeValidRestReferences());
|
||||
validator.setShowMessagesFromReferences(cliContext.isShowMessagesFromReferences());
|
||||
validator.setDoImplicitFHIRPathStringConversion(cliContext.isDoImplicitFHIRPathStringConversion());
|
||||
validator.setNoExtensibleBindingMessages(cliContext.isNoExtensibleBindingMessages());
|
||||
validator.setNoUnicodeBiDiControlChars(cliContext.isNoUnicodeBiDiControlChars());
|
||||
validator.setNoInvariantChecks(cliContext.isNoInvariants());
|
||||
|
|
|
@ -68,6 +68,7 @@ public class Params {
|
|||
public static final String SHOW_TIMES = "-show-times";
|
||||
public static final String ALLOW_EXAMPLE_URLS = "-allow-example-urls";
|
||||
public static final String OUTPUT_STYLE = "-output-style";
|
||||
public static final String DO_IMPLICIT_FHIRPATH_STRING_CONVERSION = "-implicit-fhirpath-string-conversions";
|
||||
private static final Object JURISDICTION = "-jurisdiction";
|
||||
|
||||
/**
|
||||
|
@ -167,6 +168,8 @@ public class Params {
|
|||
cliContext.setRecursive(true);
|
||||
} else if (args[i].equals(SHOW_MESSAGES_FROM_REFERENCES)) {
|
||||
cliContext.setShowMessagesFromReferences(true);
|
||||
} else if (args[i].equals(DO_IMPLICIT_FHIRPATH_STRING_CONVERSION)) {
|
||||
cliContext.setDoImplicitFHIRPathStringConversion(true);
|
||||
} else if (args[i].equals(LOCALE)) {
|
||||
if (i + 1 == args.length) {
|
||||
throw new Error("Specified -locale without indicating locale");
|
||||
|
|
|
@ -544,6 +544,14 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
this.crumbTrails = crumbTrails;
|
||||
}
|
||||
|
||||
public boolean isDoImplicitFHIRPathStringConversion() {
|
||||
return fpe.isDoImplicitStringConversion();
|
||||
}
|
||||
|
||||
public void setDoImplicitFHIRPathStringConversion(boolean doImplicitFHIRPathStringConversion) {
|
||||
fpe.setDoImplicitStringConversion(doImplicitFHIRPathStringConversion);
|
||||
}
|
||||
|
||||
private boolean allowUnknownExtension(String url) {
|
||||
if ((allowExamples && (url.contains("example.org") || url.contains("acme.com"))) || url.contains("nema.org") || url.startsWith("http://hl7.org/fhir/tools/StructureDefinition/") || url.equals("http://hl7.org/fhir/StructureDefinition/structuredefinition-expression"))
|
||||
// Added structuredefinition-expression explicitly because it wasn't defined in the version of the spec it needs to be used with
|
||||
|
|
|
@ -56,7 +56,7 @@ import org.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher;
|
|||
import org.hl7.fhir.r5.utils.validation.constants.ContainedReferenceValidationPolicy;
|
||||
import org.hl7.fhir.r5.utils.validation.constants.ReferenceValidationPolicy;
|
||||
import org.hl7.fhir.utilities.SimpleHTTPClient.HTTPResult;
|
||||
import org.hl7.fhir.utilities.json.JSONUtil;
|
||||
import org.hl7.fhir.utilities.json.JsonUtilities;
|
||||
import org.hl7.fhir.utilities.npm.NpmPackage;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueSeverity;
|
||||
|
@ -91,7 +91,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
|
|||
manifest = (JsonObject) new com.google.gson.JsonParser().parse(contents);
|
||||
for (JsonElement e : manifest.getAsJsonArray("test-cases")) {
|
||||
JsonObject o = (JsonObject) e;
|
||||
examples.put(JSONUtil.str(o, "name"), o);
|
||||
examples.put(JsonUtilities.str(o, "name"), o);
|
||||
}
|
||||
|
||||
List<String> names = new ArrayList<String>(examples.size());
|
||||
|
@ -168,7 +168,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
|
|||
if (content.has("use-test") && !content.get("use-test").getAsBoolean())
|
||||
return;
|
||||
|
||||
byte[] testCaseContent = TestingUtilities.loadTestResource("validator", JSONUtil.str(content, "file")).getBytes(StandardCharsets.UTF_8);
|
||||
byte[] testCaseContent = TestingUtilities.loadTestResource("validator", JsonUtilities.str(content, "file")).getBytes(StandardCharsets.UTF_8);
|
||||
// load and process content
|
||||
FhirFormat fmt = determineFormat(content, testCaseContent);
|
||||
|
||||
|
@ -177,7 +177,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
|
|||
val.getContext().setClientRetryCount(4);
|
||||
val.setDebug(false);
|
||||
|
||||
if (content.has("fetcher") && "standalone".equals(JSONUtil.str(content, "fetcher"))) {
|
||||
if (content.has("fetcher") && "standalone".equals(JsonUtilities.str(content, "fetcher"))) {
|
||||
val.setFetcher(vCurr);
|
||||
vCurr.setFetcher(new StandAloneValidatorFetcher(vCurr.getPcm(), vCurr.getContext(), vCurr));
|
||||
} else {
|
||||
|
@ -337,8 +337,8 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
|
|||
|
||||
|
||||
private FhirFormat determineFormat(JsonObject config, byte[] cnt) throws IOException {
|
||||
String name = JSONUtil.str(config, "file");
|
||||
return org.hl7.fhir.validation.ResourceChecker.checkIsResource(vCurr.getContext(), true, cnt, name, !JSONUtil.bool(config, "guess-format"));
|
||||
String name = JsonUtilities.str(config, "file");
|
||||
return org.hl7.fhir.validation.ResourceChecker.checkIsResource(vCurr.getContext(), true, cnt, name, !JsonUtilities.bool(config, "guess-format"));
|
||||
}
|
||||
|
||||
private List<StructureDefinition> asSdList(StructureDefinition sd) {
|
||||
|
|
|
@ -203,3 +203,17 @@ v: {
|
|||
"system" : "http://snomed.info/sct"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/11000172109/version/20210915",
|
||||
"code" : "132037003",
|
||||
"display" : "Pineywoods pig breed. Not."
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Pineywoods pig",
|
||||
"code" : "132037003",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"severity" : "warning",
|
||||
"error" : "The display \"Pineywoods pig breed. Not.\" is not a valid display for the code {http://snomed.info/sct}132037003 - should be one of ['Pineywoods pig', 'Pineywoods pig breed (organism)', 'Pineywoods pig breed'] (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -19,7 +19,7 @@
|
|||
|
||||
<properties>
|
||||
<hapi_fhir_version>5.4.0</hapi_fhir_version>
|
||||
<validator_test_case_version>1.1.100</validator_test_case_version>
|
||||
<validator_test_case_version>1.1.101-SNAPSHOT</validator_test_case_version>
|
||||
<junit_jupiter_version>5.7.1</junit_jupiter_version>
|
||||
<junit_platform_launcher_version>1.7.1</junit_platform_launcher_version>
|
||||
<maven_surefire_version>3.0.0-M5</maven_surefire_version>
|
||||
|
|
Loading…
Reference in New Issue