001package org.hl7.fhir.convertors.conv14_40.datatypes14_40;
002
003public class Expression14_40 {
004  public static String convertToR4Expression(String oldExpression) {
005    String pass1 = oldExpression.replaceAll("\\$context", "%context").replaceAll("\\$resource", "%resource").replaceAll("code\\+profile", "code&profile").replaceAll("path\\+'\\.'", "path&'.'").replaceAll("fullUrl\\+resource", "fullUrl&resource");
006    String pass2 = pass1;
007    if (pass1.endsWith(".distinct()")) pass2 = pass1.substring(0, pass2.length() - 11) + ".isDistinct()";
008    String pass3 = pass2;
009    if (pass2.endsWith(".empty() or (type.count() = 1)"))
010      pass3 = pass2.substring(0, pass2.length() - 30) + ".empty() or (type.count() <= 1)";
011    String pass4 = pass3;
012    if (pass3.equals("duration >= 0")) pass4 = "duration.exists() implies duration >= 0";
013    else if (pass3.equals("period >= 0")) pass4 = "period.exists() implies period >= 0";
014    else if (pass3.equals("fullUrl.empty() xor resource")) pass4 = "fullUrl.empty() xor resource.exists()";
015    return pass4;
016  }
017
018  public static String convertTo2016MayExpression(String newExpression) {
019    String pass1 = newExpression.replaceAll("%context", "\\$context").replaceAll("%resource", "\\$resource").replaceAll("code&profile", "code+profile").replaceAll("path&'\\.'", "path+'.'").replaceAll("fullUrl%resource", "fullUrl+resource");
020    String pass2 = pass1;
021    if (pass1.endsWith(".isDistinct()")) pass2 = pass1.substring(0, pass1.length() - 13) + ".distinct()";
022    String pass3 = pass2;
023    if (pass2.endsWith(".empty() or (type.count() <= 1)"))
024      pass3 = pass2.substring(0, pass2.length() - 31) + ".empty() or (type.count() = 1)";
025    String pass4 = pass3;
026    if (pass3.equals("duration.exists() implies duration >= 0")) pass4 = "duration >= 0";
027    else if (pass3.equals("period.exists() implies period >= 0")) pass4 = "period >= 0";
028    else if (pass3.equals("fullUrl.empty() xor resource.exists()")) pass4 = "fullUrl.empty() xor resource";
029    return pass4;
030  }
031}