Merge pull request #439 from maheshpalanroche/issue_438

Added the copying of "extension" fields
This commit is contained in:
Grahame Grieve 2021-03-29 10:31:18 +10:00 committed by GitHub
commit 9fe7ea729d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 226 additions and 102 deletions

View File

@ -1,2 +1,6 @@
* add test for Observation conversion from 10 to 40
* add procedures conversion form dstu2 to r4
* add medication conversion from dstu2 to r4
* add copy of extension field for Enumeration fieldtype by Resource.copy
* minor fixes in code generators for R4B * minor fixes in code generators for R4B
* add default value to Medication Request during conversion from dstu2 to r4 * add default value to Medication Request during conversion from dstu2 to r4

View File

@ -34,6 +34,7 @@ package org.hl7.fhir.r4.model;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInput; import java.io.ObjectInput;
import java.io.ObjectOutput; import java.io.ObjectOutput;
import java.util.ArrayList;
import org.hl7.fhir.instance.model.api.IBaseEnumeration; import org.hl7.fhir.instance.model.api.IBaseEnumeration;
@ -117,10 +118,17 @@ public class Enumeration<T extends Enum<?>> extends PrimitiveType<T> implements
setValue(theValue); setValue(theValue);
} }
@Override @Override
public Enumeration<T> copy() { public Enumeration<T> copy() {
return new Enumeration<T>(myEnumFactory, getValue()); Enumeration dst= new Enumeration(this.myEnumFactory, (Enum)this.getValue());
} //Copy the Extension
if (extension != null) {
dst.extension = new ArrayList();
for (Extension i : extension)
dst.extension.add(i.copy());
};
return dst;
}
@Override @Override
protected String encode(T theValue) { protected String encode(T theValue) {

View File

@ -0,0 +1,56 @@
package org.hl7.fhir.r4.test;
import org.fhir.ucum.UcumException;
import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.r4.formats.IParser;
import org.hl7.fhir.r4.formats.IParser.OutputStyle;
import org.hl7.fhir.r4.formats.JsonParser;
import org.hl7.fhir.r4.formats.XmlParser;
import org.hl7.fhir.r4.model.*;
import org.hl7.fhir.r4.test.utils.TestingUtilities;
import org.hl7.fhir.r4.utils.EOperationOutcome;
import org.hl7.fhir.r4.utils.NarrativeGenerator;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.io.*;
public class ResourceCopyTests {
@Test
public void testCopyExtensionForEnumerationField() throws FHIRException {
// Create new Observation and set the Extension with field value without status field set.
Observation obs = new Observation();
obs.getStatusElement().getExtension().add(new Extension().setUrl("Sampleurl"));
obs.getStatusElement().getExtension().add(new Extension().setUrl("Sampleurl2"));
Observation copyObs = obs.copy();
Assertions.assertEquals(obs.hasStatusElement(),copyObs.hasStatusElement(),"Status Element not copied ");
Assertions.assertEquals(obs.getStatusElement().hasExtension(),copyObs.getStatusElement().hasExtension(),"Status Element Extension not copied ");
Assertions.assertEquals(obs.getStatusElement().getExtension().get(0).getUrl(),copyObs.getStatusElement().getExtension().get(0).getUrl(),"Status Element Extension url not copied ");
Assertions.assertEquals(obs.getStatusElement().getExtension().get(1).getUrl(),copyObs.getStatusElement().getExtension().get(1).getUrl(),"Status Element Extension url not copied ");
//Verify the object at toplevel using equals Deep
Assertions.assertEquals(obs.equalsDeep(copyObs),true,"DeepEquals fails");
}
@Test
public void testCopyEnumerationField() throws FHIRException, IOException {
// Create new Observation and set the Extension with field value as well as status field set .
Observation obs = new Observation();
obs.setStatus(Observation.ObservationStatus.AMENDED);
obs.getStatusElement().getExtension().add(new Extension().setUrl("Sampleurl"));
Observation copyObs = obs.copy();
Assertions.assertEquals(obs.getStatus(),copyObs.getStatus(),"Status not copied ");
Assertions.assertEquals(obs.hasStatusElement(),copyObs.hasStatusElement(),"Status Element not copied ");
Assertions.assertEquals(obs.getStatusElement().hasExtension(),copyObs.getStatusElement().hasExtension(),"Status Element Extension not copied ");
Assertions.assertEquals(obs.getStatusElement().getExtension().get(0).getUrl(),copyObs.getStatusElement().getExtension().get(0).getUrl(),"Status Element Extension url not copied ");
//Verify the object at toplevel using equals Deep
Assertions.assertEquals(obs.equalsDeep(copyObs),true,"DeepEquals fails");
}
}

View File

@ -34,6 +34,7 @@ package org.hl7.fhir.r5.model;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInput; import java.io.ObjectInput;
import java.io.ObjectOutput; import java.io.ObjectOutput;
import java.util.ArrayList;
import org.hl7.fhir.instance.model.api.IBaseEnumeration; import org.hl7.fhir.instance.model.api.IBaseEnumeration;
@ -117,10 +118,17 @@ public class Enumeration<T extends Enum<?>> extends PrimitiveType<T> implements
setValue(theValue); setValue(theValue);
} }
@Override @Override
public Enumeration<T> copy() { public Enumeration<T> copy() {
return new Enumeration<T>(myEnumFactory, getValue()); Enumeration dst= new Enumeration(this.myEnumFactory, (Enum)this.getValue());
} //Copy the Extension
if (extension != null) {
dst.extension = new ArrayList();
for (Extension i : extension)
dst.extension.add(i.copy());
};
return dst;
}
@Override @Override
protected String encode(T theValue) { protected String encode(T theValue) {

View File

@ -0,0 +1,48 @@
package org.hl7.fhir.r5.test;
import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.r5.model.Enumerations;
import org.hl7.fhir.r5.model.Extension;
import org.hl7.fhir.r5.model.Observation;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.io.IOException;
public class ResourceCopyTests {
@Test
public void testCopyExtensionForEnumerationField() throws FHIRException {
// Create new Observation and set the Extension with field value without status field set.
Observation obs = new Observation();
obs.getStatusElement().getExtension().add(new Extension().setUrl("Sampleurl"));
obs.getStatusElement().getExtension().add(new Extension().setUrl("Sampleurl2"));
Observation copyObs = obs.copy();
Assertions.assertEquals(obs.hasStatusElement(),copyObs.hasStatusElement(),"Status Element not copied ");
Assertions.assertEquals(obs.getStatusElement().hasExtension(),copyObs.getStatusElement().hasExtension(),"Status Element Extension not copied ");
Assertions.assertEquals(obs.getStatusElement().getExtension().get(0).getUrl(),copyObs.getStatusElement().getExtension().get(0).getUrl(),"Status Element Extension url not copied ");
Assertions.assertEquals(obs.getStatusElement().getExtension().get(1).getUrl(),copyObs.getStatusElement().getExtension().get(1).getUrl(),"Status Element Extension url not copied ");
//Verify the object at toplevel using equals Deep
Assertions.assertEquals(obs.equalsDeep(copyObs),true,"DeepEquals fails");
}
@Test
public void testCopyEnumerationField() throws FHIRException, IOException {
// Create new Observation and set the Extension with field value as well as status field set .
Observation obs = new Observation();
obs.setStatus(Enumerations.ObservationStatus.AMENDED);
obs.getStatusElement().getExtension().add(new Extension().setUrl("Sampleurl"));
Observation copyObs = obs.copy();
Assertions.assertEquals(obs.getStatus(),copyObs.getStatus(),"Status not copied ");
Assertions.assertEquals(obs.hasStatusElement(),copyObs.hasStatusElement(),"Status Element not copied ");
Assertions.assertEquals(obs.getStatusElement().hasExtension(),copyObs.getStatusElement().hasExtension(),"Status Element Extension not copied ");
Assertions.assertEquals(obs.getStatusElement().getExtension().get(0).getUrl(),copyObs.getStatusElement().getExtension().get(0).getUrl(),"Status Element Extension url not copied ");
//Verify the object at toplevel using equals Deep
Assertions.assertEquals(obs.equalsDeep(copyObs),true,"DeepEquals fails");
}
}