Use case #3 testing
This commit is contained in:
parent
4c0fab8cec
commit
5d6ede660b
|
@ -96,6 +96,14 @@
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>9</source>
|
||||||
|
<target>9</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -44,35 +44,14 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class EmpiResourceDaoSvc {
|
public class EmpiResourceDaoSvc {
|
||||||
|
|
||||||
private static final int MAX_MATCHING_PERSONS = 1000;
|
private static final int MAX_MATCHING_PERSONS = 1000;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
DaoRegistry myDaoRegistry;
|
DaoRegistry myDaoRegistry;
|
||||||
@Autowired
|
@Autowired
|
||||||
IEmpiSettings myEmpiConfig;
|
IEmpiSettings myEmpiConfig;
|
||||||
|
|
||||||
private IFhirResourceDao<IBaseResource> myPatientDao;
|
|
||||||
private IFhirResourceDao<IBaseResource> myPersonDao;
|
|
||||||
private IFhirResourceDao<IBaseResource> myPractitionerDao;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void postConstruct() {
|
|
||||||
myPatientDao = myDaoRegistry.getResourceDao("Patient");
|
|
||||||
myPersonDao = myDaoRegistry.getResourceDao("Person");
|
|
||||||
myPractitionerDao = myDaoRegistry.getResourceDao("Practitioner");
|
|
||||||
}
|
|
||||||
|
|
||||||
public IAnyResource readPatient(IIdType theId) {
|
|
||||||
return (IAnyResource) myPatientDao.read(theId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IAnyResource readPerson(IIdType theId) {
|
|
||||||
return (IAnyResource) myPersonDao.read(theId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IAnyResource readPractitioner(IIdType theId) {
|
|
||||||
return (IAnyResource) myPractitionerDao.read(theId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public DaoMethodOutcome upsertSourceResource(IAnyResource theSourceResource, String theResourceType) {
|
public DaoMethodOutcome upsertSourceResource(IAnyResource theSourceResource, String theResourceType) {
|
||||||
IFhirResourceDao resourceDao = myDaoRegistry.getResourceDao(theResourceType);
|
IFhirResourceDao resourceDao = myDaoRegistry.getResourceDao(theResourceType);
|
||||||
if (theSourceResource.getIdElement().hasIdPart()) {
|
if (theSourceResource.getIdElement().hasIdPart()) {
|
||||||
|
@ -87,12 +66,14 @@ public class EmpiResourceDaoSvc {
|
||||||
return (IAnyResource) resourceDao.readByPid(theSourceResourcePid);
|
return (IAnyResource) resourceDao.readByPid(theSourceResourcePid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<IAnyResource> searchPersonByEid(String theEid) {
|
public Optional<IAnyResource> searchSourceResourceByEID(String theEid, String theResourceType) {
|
||||||
SearchParameterMap map = new SearchParameterMap();
|
SearchParameterMap map = new SearchParameterMap();
|
||||||
map.setLoadSynchronous(true);
|
map.setLoadSynchronous(true);
|
||||||
map.add("identifier", new TokenParam(myEmpiConfig.getEmpiRules().getEnterpriseEIDSystem(), theEid));
|
map.add("identifier", new TokenParam(myEmpiConfig.getEmpiRules().getEnterpriseEIDSystem(), theEid));
|
||||||
map.add("active", new TokenParam("true"));
|
map.add("active", new TokenParam("true"));
|
||||||
IBundleProvider search = myPersonDao.search(map);
|
|
||||||
|
IFhirResourceDao resourceDao = myDaoRegistry.getResourceDao(theResourceType);
|
||||||
|
IBundleProvider search = resourceDao.search(map);
|
||||||
|
|
||||||
// Could add the meta tag to the query, but it's probably more efficient to filter on it afterwards since in practice
|
// Could add the meta tag to the query, but it's probably more efficient to filter on it afterwards since in practice
|
||||||
// it will always be present.
|
// it will always be present.
|
||||||
|
@ -111,7 +92,7 @@ public class EmpiResourceDaoSvc {
|
||||||
list.get(0).getIdElement().getValue() +
|
list.get(0).getIdElement().getValue() +
|
||||||
", " +
|
", " +
|
||||||
list.get(1).getIdElement().getValue()
|
list.get(1).getIdElement().getValue()
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return Optional.of((IAnyResource) list.get(0));
|
return Optional.of((IAnyResource) list.get(0));
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class FindCandidateByEidSvc extends BaseCandidateFinder {
|
public class FindCandidateByEidSvc extends BaseCandidateFinder {
|
||||||
|
|
||||||
private static final Logger ourLog = Logs.getEmpiTroubleshootingLog();
|
private static final Logger ourLog = Logs.getEmpiTroubleshootingLog();
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -50,7 +51,7 @@ public class FindCandidateByEidSvc extends BaseCandidateFinder {
|
||||||
List<CanonicalEID> eidFromResource = myEIDHelper.getExternalEid(theBaseResource);
|
List<CanonicalEID> eidFromResource = myEIDHelper.getExternalEid(theBaseResource);
|
||||||
if (!eidFromResource.isEmpty()) {
|
if (!eidFromResource.isEmpty()) {
|
||||||
for (CanonicalEID eid : eidFromResource) {
|
for (CanonicalEID eid : eidFromResource) {
|
||||||
Optional<IAnyResource> oFoundPerson = myEmpiResourceDaoSvc.searchPersonByEid(eid.getValue());
|
Optional<IAnyResource> oFoundPerson = myEmpiResourceDaoSvc.searchSourceResourceByEID(eid.getValue(), theBaseResource.getIdElement().getResourceType());
|
||||||
if (oFoundPerson.isPresent()) {
|
if (oFoundPerson.isPresent()) {
|
||||||
IAnyResource foundPerson = oFoundPerson.get();
|
IAnyResource foundPerson = oFoundPerson.get();
|
||||||
Long pidOrNull = myIdHelperService.getPidOrNull(foundPerson);
|
Long pidOrNull = myIdHelperService.getPidOrNull(foundPerson);
|
||||||
|
|
|
@ -221,20 +221,35 @@ public class EmpiMatchLinkSvcTest extends BaseEmpiR4Test {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIncomingPatientWithEidMatchesAnotherPatientWithSameEIDAreLinked() {
|
public void testIncomingPatientWithEidMatchesAnotherPatientWithSameEIDAreLinked() {
|
||||||
// Use Case #3
|
// Create Use Case #3
|
||||||
Patient patient1 = addExternalEID(buildJanePatient(), "uniqueid");
|
Patient patient1 = addExternalEID(buildJanePatient(), "uniqueid");
|
||||||
createPatientAndUpdateLinks(patient1);
|
createPatientAndUpdateLinks(patient1);
|
||||||
// state is now > Patient/uniqueid[name=jane] <--> Patient/uniqueid[name=jane]
|
|
||||||
|
|
||||||
List<CanonicalEID> eid = myEidHelper.getExternalEid(patient1);
|
// state is now > Patient/ID.JANE.123[name=jane & EID = uniqueid] <-- EMPI Link -- Patient/[name=jane & EDI = uniqueid & EMPI_MANAGED = true]
|
||||||
|
IBundleProvider bundle = myPatientDao.search(new SearchParameterMap());
|
||||||
|
List<IBaseResource> resources = bundle.getResources(0, bundle.size());
|
||||||
|
resources.forEach(r -> {
|
||||||
|
print(r);
|
||||||
|
assertFalse(myEidHelper.getExternalEid(r).isEmpty());
|
||||||
|
});
|
||||||
|
assertEquals(2, resources.size());
|
||||||
|
|
||||||
Optional<IAnyResource> iAnyResource = myEmpiResourceDaoSvc.searchPersonByEid(eid.get(0).getValue());
|
IBaseResource testPatient1 = resources.get(0);
|
||||||
assertTrue(iAnyResource.isPresent());
|
IBaseResource testPatient2 = resources.get(1);
|
||||||
assertTrue(iAnyResource.get().equals(patient1));
|
|
||||||
|
assertThat((Patient) testPatient1, is(sameSourceResourceAs((Patient) testPatient2)));
|
||||||
|
|
||||||
|
Optional<EmpiLink> empiLinkByTarget = myEmpiLinkDaoSvc.findEmpiLinkByTarget(patient1);
|
||||||
|
assertTrue(empiLinkByTarget.isPresent());
|
||||||
|
|
||||||
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/ID.JANE.123[name=jane & EID = uniqueid] <--> Patient/[name=jane & EDI = uniqueid] <--> Patient/[name=paul & EDI = uniqueid]
|
||||||
|
IBundleProvider search = myPatientDao.search(new SearchParameterMap());
|
||||||
|
search.getResources(0, search.size()).forEach( r -> {
|
||||||
|
print(r);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
assertThat(patient1, is(sameSourceResourceAs(patient2)));
|
assertThat(patient1, is(sameSourceResourceAs(patient2)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class EmpiResourceDaoSvcTest extends BaseEmpiR4Test {
|
||||||
badPerson.setActive(false);
|
badPerson.setActive(false);
|
||||||
myPersonDao.update(badPerson);
|
myPersonDao.update(badPerson);
|
||||||
|
|
||||||
Optional<IAnyResource> foundPerson = myResourceDaoSvc.searchPersonByEid(TEST_EID);
|
Optional<IAnyResource> foundPerson = myResourceDaoSvc.searchSourceResourceByEID(TEST_EID, "Person");
|
||||||
assertTrue(foundPerson.isPresent());
|
assertTrue(foundPerson.isPresent());
|
||||||
assertThat(foundPerson.get().getIdElement().toUnqualifiedVersionless().getValue(), is(goodPerson.getIdElement().toUnqualifiedVersionless().getValue()));
|
assertThat(foundPerson.get().getIdElement().toUnqualifiedVersionless().getValue(), is(goodPerson.getIdElement().toUnqualifiedVersionless().getValue()));
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ public class EmpiResourceDaoSvcTest extends BaseEmpiR4Test {
|
||||||
Person badPerson = addExternalEID(createPerson(new Person(), false), TEST_EID);
|
Person badPerson = addExternalEID(createPerson(new Person(), false), TEST_EID);
|
||||||
myPersonDao.update(badPerson);
|
myPersonDao.update(badPerson);
|
||||||
|
|
||||||
Optional<IAnyResource> foundPerson = myResourceDaoSvc.searchPersonByEid(TEST_EID);
|
Optional<IAnyResource> foundPerson = myResourceDaoSvc.searchSourceResourceByEID(TEST_EID, "Person");
|
||||||
assertTrue(foundPerson.isPresent());
|
assertTrue(foundPerson.isPresent());
|
||||||
assertThat(foundPerson.get().getIdElement().toUnqualifiedVersionless().getValue(), is(goodPerson.getIdElement().toUnqualifiedVersionless().getValue()));
|
assertThat(foundPerson.get().getIdElement().toUnqualifiedVersionless().getValue(), is(goodPerson.getIdElement().toUnqualifiedVersionless().getValue()));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue