WIP Refactoring 3
This commit is contained in:
parent
27afbe93b3
commit
9422ba7a02
|
@ -8,10 +8,12 @@ import ca.uhn.fhir.empi.model.CanonicalEID;
|
||||||
import ca.uhn.fhir.empi.util.EIDHelper;
|
import ca.uhn.fhir.empi.util.EIDHelper;
|
||||||
import ca.uhn.fhir.empi.util.PersonHelper;
|
import ca.uhn.fhir.empi.util.PersonHelper;
|
||||||
import ca.uhn.fhir.jpa.empi.BaseEmpiR4Test;
|
import ca.uhn.fhir.jpa.empi.BaseEmpiR4Test;
|
||||||
|
import ca.uhn.fhir.jpa.empi.dao.EmpiLinkDaoSvc;
|
||||||
import ca.uhn.fhir.jpa.entity.EmpiLink;
|
import ca.uhn.fhir.jpa.entity.EmpiLink;
|
||||||
import ca.uhn.fhir.jpa.searchparam.SearchParameterMap;
|
import ca.uhn.fhir.jpa.searchparam.SearchParameterMap;
|
||||||
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
||||||
import org.hl7.fhir.instance.model.api.IAnyResource;
|
import org.hl7.fhir.instance.model.api.IAnyResource;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.r4.model.Enumerations;
|
import org.hl7.fhir.r4.model.Enumerations;
|
||||||
import org.hl7.fhir.r4.model.HumanName;
|
import org.hl7.fhir.r4.model.HumanName;
|
||||||
import org.hl7.fhir.r4.model.Identifier;
|
import org.hl7.fhir.r4.model.Identifier;
|
||||||
|
@ -35,8 +37,7 @@ import static ca.uhn.fhir.empi.api.EmpiMatchResultEnum.POSSIBLE_DUPLICATE;
|
||||||
import static ca.uhn.fhir.empi.api.EmpiMatchResultEnum.POSSIBLE_MATCH;
|
import static ca.uhn.fhir.empi.api.EmpiMatchResultEnum.POSSIBLE_MATCH;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.*;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
||||||
import static org.slf4j.LoggerFactory.getLogger;
|
import static org.slf4j.LoggerFactory.getLogger;
|
||||||
|
|
||||||
public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
||||||
|
@ -48,6 +49,9 @@ public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
||||||
@Autowired
|
@Autowired
|
||||||
private PersonHelper myPersonHelper;
|
private PersonHelper myPersonHelper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmpiResourceDaoSvc myEmpiResourceDaoSvc; // TODO NG - remove?
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void before() {
|
public void before() {
|
||||||
super.loadEmpiSearchParameters();
|
super.loadEmpiSearchParameters();
|
||||||
|
@ -222,6 +226,12 @@ public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
||||||
createPatientAndUpdateLinks(patient1);
|
createPatientAndUpdateLinks(patient1);
|
||||||
// state is now > Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=jane]
|
// state is now > Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=jane]
|
||||||
|
|
||||||
|
List<CanonicalEID> eid = myEidHelper.getExternalEid(patient1);
|
||||||
|
|
||||||
|
Optional<IAnyResource> iAnyResource = myEmpiResourceDaoSvc.searchPersonByEid(eid.get(0).getValue());
|
||||||
|
assertTrue(iAnyResource.isPresent());
|
||||||
|
assertTrue(iAnyResource.get().equals(patient1));
|
||||||
|
|
||||||
Patient patient2 = addExternalEID(buildPaulPatient(), "uniqueid");
|
Patient patient2 = addExternalEID(buildPaulPatient(), "uniqueid");
|
||||||
createPatientAndUpdateLinks(patient2);
|
createPatientAndUpdateLinks(patient2);
|
||||||
// state should be > Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=paul]
|
// state should be > Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=paul]
|
||||||
|
@ -518,6 +528,10 @@ public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
||||||
assertThat(jane, is(sameSourceResourceAs(paul)));
|
assertThat(jane, is(sameSourceResourceAs(paul)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void print(IBaseResource theResource) {
|
||||||
|
System.out.println(myFhirContext.newJsonParser().encodeResourceToString(theResource));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
//Test Case #2
|
//Test Case #2
|
||||||
public void testSinglyLinkedPersonThatGetsAnUpdatedEidSimplyUpdatesEID() {
|
public void testSinglyLinkedPersonThatGetsAnUpdatedEidSimplyUpdatesEID() {
|
||||||
|
@ -525,7 +539,10 @@ public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
||||||
String EID_2 = "456";
|
String EID_2 = "456";
|
||||||
|
|
||||||
Patient paul = createPatientAndUpdateLinks(addExternalEID(buildPaulPatient(), EID_1));
|
Patient paul = createPatientAndUpdateLinks(addExternalEID(buildPaulPatient(), EID_1));
|
||||||
|
print(paul);
|
||||||
Patient originalPaulPatient = (Patient) getSourceResourceFromTargetResource(paul);
|
Patient originalPaulPatient = (Patient) getSourceResourceFromTargetResource(paul);
|
||||||
|
print(originalPaulPatient);
|
||||||
|
|
||||||
String oldEid = myEidHelper.getExternalEid(originalPaulPatient).get(0).getValue();
|
String oldEid = myEidHelper.getExternalEid(originalPaulPatient).get(0).getValue();
|
||||||
assertThat(oldEid, is(equalTo(EID_1)));
|
assertThat(oldEid, is(equalTo(EID_1)));
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@ import org.springframework.stereotype.Service;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.BiPredicate;
|
import java.util.function.BiPredicate;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
@ -278,9 +279,15 @@ public class PersonHelper {
|
||||||
for (IBase base : sourceResourceIdentifiers) {
|
for (IBase base : sourceResourceIdentifiers) {
|
||||||
Optional<IPrimitiveType> system = fhirPath.evaluateFirst(base, "system", IPrimitiveType.class);
|
Optional<IPrimitiveType> system = fhirPath.evaluateFirst(base, "system", IPrimitiveType.class);
|
||||||
if (system.isPresent()) {
|
if (system.isPresent()) {
|
||||||
if (system.get().equals(myEmpiConfig.getEmpiRules().getEnterpriseEIDSystem())) {
|
String empiSystem = myEmpiConfig.getEmpiRules().getEnterpriseEIDSystem();
|
||||||
|
String baseSystem = system.get().getValueAsString();
|
||||||
|
if (Objects.equals(baseSystem, empiSystem)) {
|
||||||
cloneExternalEidIntoNewSourceResource(sourceResourceIdentifier, base, newSourceResource);
|
cloneExternalEidIntoNewSourceResource(sourceResourceIdentifier, base, newSourceResource);
|
||||||
|
} else {
|
||||||
|
ourLog.debug(String.format("System %s differs from system in the EMPI rules %s", baseSystem, empiSystem));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ourLog.debug("System is missing, skipping");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue