Add another failing test

This commit is contained in:
Tadgh 2021-08-19 14:52:48 -04:00
parent 07937e4431
commit 19d181989c
4 changed files with 39 additions and 13 deletions

View File

@ -1206,6 +1206,7 @@ public abstract class BaseHapiFhirDao<T extends IBaseResource> extends BaseStora
if (thePerformIndexing || ((ResourceTable) theEntity).getVersion() == 1) { if (thePerformIndexing || ((ResourceTable) theEntity).getVersion() == 1) {
newParams = new ResourceIndexedSearchParams(); newParams = new ResourceIndexedSearchParams();
//FIX ME GGG: This is where the placeholder references end up getting created, deeeeeep down the stakc.
mySearchParamWithInlineReferencesExtractor.populateFromResource(newParams, theTransactionDetails, entity, theResource, existingParams, theRequest, thePerformIndexing); mySearchParamWithInlineReferencesExtractor.populateFromResource(newParams, theTransactionDetails, entity, theResource, existingParams, theRequest, thePerformIndexing);
changed = populateResourceIntoEntity(theTransactionDetails, theRequest, theResource, entity, true); changed = populateResourceIntoEntity(theTransactionDetails, theRequest, theResource, entity, true);

View File

@ -94,7 +94,6 @@ public class DaoResourceLinkResolver implements IResourceLinkResolver {
throw new InvalidRequestException("Resource " + resName + "/" + idPart + " not found, specified in path: " + theSourcePath); throw new InvalidRequestException("Resource " + resName + "/" + idPart + " not found, specified in path: " + theSourcePath);
} }
resolvedResource = createdTableOpt.get(); resolvedResource = createdTableOpt.get();
} }

View File

@ -2,6 +2,7 @@ package ca.uhn.fhir.jpa.dao.r4;
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.jpa.api.config.DaoConfig; import ca.uhn.fhir.jpa.api.config.DaoConfig;
import ca.uhn.fhir.jpa.api.model.DaoMethodOutcome;
import ca.uhn.fhir.jpa.model.entity.ModelConfig; import ca.uhn.fhir.jpa.model.entity.ModelConfig;
import ca.uhn.fhir.jpa.partition.SystemRequestDetails; import ca.uhn.fhir.jpa.partition.SystemRequestDetails;
import ca.uhn.fhir.jpa.provider.r4.ResourceProviderR4Test; import ca.uhn.fhir.jpa.provider.r4.ResourceProviderR4Test;
@ -34,7 +35,9 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.matchesPattern; import static org.hamcrest.Matchers.matchesPattern;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
@ -803,7 +806,30 @@ public class FhirResourceDaoR4VersionedReferenceTest extends BaseJpaR4Test {
Bundle bundle = myFhirCtx.newJsonParser().parseResource(Bundle.class, new InputStreamReader(FhirResourceDaoR4VersionedReferenceTest.class.getResourceAsStream("/npe-causing-bundle.json"))); Bundle bundle = myFhirCtx.newJsonParser().parseResource(Bundle.class, new InputStreamReader(FhirResourceDaoR4VersionedReferenceTest.class.getResourceAsStream("/npe-causing-bundle.json")));
Bundle transaction = mySystemDao.transaction(new SystemRequestDetails(), bundle); Bundle transaction = mySystemDao.transaction(new SystemRequestDetails(), bundle);
}
@Test
public void testAutoVersionPathsWithAutoCreatePlaceholders() {
myDaoConfig.setAutoCreatePlaceholderReferenceTargets(true);
Observation obs = new Observation();
obs.setId("Observation/CDE");
obs.setSubject(new Reference("Patient/ABC"));
DaoMethodOutcome update = myObservationDao.create(obs);
Observation resource = (Observation)update.getResource();
String versionedPatientReference = resource.getSubject().getReference();
assertThat(versionedPatientReference, is(equalTo("Patient/ABC")));
myModelConfig.setAutoVersionReferenceAtPaths("Observation.subject");
obs = new Observation();
obs.setId("Observation/DEF");
obs.setSubject(new Reference("Patient/RED"));
update = myObservationDao.create(obs);
resource = (Observation)update.getResource();
versionedPatientReference = resource.getSubject().getReference();
assertThat(versionedPatientReference, is(equalTo("Patient/RED/_history/1")));
} }

View File

@ -28,14 +28,14 @@
}, },
"use": "claim", "use": "claim",
"patient": { "patient": {
"reference": "Patient/123" "reference": "Patient/ABC"
}, },
"billablePeriod": { "billablePeriod": {
"start": "2015-12-14T00:00:00-05:00" "start": "2015-12-14T00:00:00-05:00"
}, },
"created": "2021-08-16T13:54:10-04:00", "created": "2021-08-16T13:54:10-04:00",
"insurer": { "insurer": {
"reference": "Organization/1" "reference": "Organization/A"
}, },
"provider": { "provider": {
"reference": "Organization/b9d22776-1ee9-3843-bc48-b4bf67861483" "reference": "Organization/b9d22776-1ee9-3843-bc48-b4bf67861483"
@ -44,7 +44,7 @@
"careTeam": [ { "careTeam": [ {
"sequence": 1, "sequence": 1,
"provider": { "provider": {
"reference": "Practitioner/1" "reference": "Practitioner/H"
}, },
"role": { "role": {
"coding": [ { "coding": [ {
@ -55,7 +55,7 @@
}, { }, {
"sequence": 2, "sequence": 2,
"provider": { "provider": {
"reference": "Practitioner/2" "reference": "Practitioner/I"
}, },
"role": { "role": {
"coding": [ { "coding": [ {
@ -66,7 +66,7 @@
}, { }, {
"sequence": 3, "sequence": 3,
"provider": { "provider": {
"reference": "Practitioner/3" "reference": "Practitioner/J"
}, },
"role": { "role": {
"coding": [ { "coding": [ {
@ -129,7 +129,7 @@
"insurance": [ { "insurance": [ {
"focal": true, "focal": true,
"coverage": { "coverage": {
"reference": "Coverage/10" "reference": "Coverage/G"
} }
} ], } ],
"total": [ { "total": [ {
@ -185,14 +185,14 @@
}, },
"use": "claim", "use": "claim",
"patient": { "patient": {
"reference": "Patient/123" "reference": "Patient/ABC"
}, },
"billablePeriod": { "billablePeriod": {
"start": "2015-12-18T00:00:00-05:00" "start": "2015-12-18T00:00:00-05:00"
}, },
"created": "2021-08-16T13:54:10-04:00", "created": "2021-08-16T13:54:10-04:00",
"insurer": { "insurer": {
"reference": "Organization/1" "reference": "Organization/A"
}, },
"provider": { "provider": {
"reference": "Organization/d10823cf-ee15-3a0e-a12e-1509cd18cda4" "reference": "Organization/d10823cf-ee15-3a0e-a12e-1509cd18cda4"
@ -201,7 +201,7 @@
"careTeam": [ { "careTeam": [ {
"sequence": 1, "sequence": 1,
"provider": { "provider": {
"reference": "Practitioner/4" "reference": "Practitioner/D"
}, },
"role": { "role": {
"coding": [ { "coding": [ {
@ -212,7 +212,7 @@
}, { }, {
"sequence": 2, "sequence": 2,
"provider": { "provider": {
"reference": "Practitioner/5" "reference": "Practitioner/E"
}, },
"role": { "role": {
"coding": [ { "coding": [ {
@ -223,7 +223,7 @@
}, { }, {
"sequence": 3, "sequence": 3,
"provider": { "provider": {
"reference": "Practitioner/6" "reference": "Practitioner/F"
}, },
"role": { "role": {
"coding": [ { "coding": [ {
@ -370,7 +370,7 @@
"insurance": [ { "insurance": [ {
"focal": true, "focal": true,
"coverage": { "coverage": {
"reference": "Coverage/10" "reference": "Coverage/G"
} }
} ], } ],
"total": [ { "total": [ {