renaming in personsvc

This commit is contained in:
Tadgh 2020-11-13 09:44:15 -05:00
parent 687e24fa83
commit f648d8ec2b
9 changed files with 37 additions and 36 deletions

View File

@ -155,7 +155,7 @@ public class EmpiLink {
return this; return this;
} }
public EmpiLink setSourceResourcePid(Long theSourceResourcePid) { public EmpiLink setGoldenResourcePid(Long theSourceResourcePid) {
setPersonPid(theSourceResourcePid); setPersonPid(theSourceResourcePid);
mySourceResourcePid = theSourceResourcePid; mySourceResourcePid = theSourceResourcePid;

View File

@ -91,7 +91,7 @@ public class EmpiLinkDaoSvc {
return oExisting.get(); return oExisting.get();
} else { } else {
EmpiLink newLink = myEmpiLinkFactory.newEmpiLink(); EmpiLink newLink = myEmpiLinkFactory.newEmpiLink();
newLink.setSourceResourcePid(theSourceResourcePid); newLink.setGoldenResourcePid(theSourceResourcePid);
newLink.setPersonPid(theSourceResourcePid); newLink.setPersonPid(theSourceResourcePid);
newLink.setTargetPid(theTargetResourcePid); newLink.setTargetPid(theTargetResourcePid);
return newLink; return newLink;
@ -104,7 +104,7 @@ public class EmpiLinkDaoSvc {
} }
EmpiLink link = myEmpiLinkFactory.newEmpiLink(); EmpiLink link = myEmpiLinkFactory.newEmpiLink();
link.setTargetPid(theTargetResourcePid); link.setTargetPid(theTargetResourcePid);
link.setSourceResourcePid(theSourceResourcePid); link.setGoldenResourcePid(theSourceResourcePid);
Example<EmpiLink> example = Example.of(link); Example<EmpiLink> example = Example.of(link);
return myEmpiLinkDao.findOne(example); return myEmpiLinkDao.findOne(example);
} }
@ -169,7 +169,7 @@ public class EmpiLinkDaoSvc {
*/ */
public Optional<EmpiLink> getEmpiLinksByPersonPidTargetPidAndMatchResult(Long thePersonPid, Long theTargetPid, EmpiMatchResultEnum theMatchResult) { public Optional<EmpiLink> getEmpiLinksByPersonPidTargetPidAndMatchResult(Long thePersonPid, Long theTargetPid, EmpiMatchResultEnum theMatchResult) {
EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink(); EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink();
exampleLink.setSourceResourcePid(thePersonPid); exampleLink.setGoldenResourcePid(thePersonPid);
exampleLink.setTargetPid(theTargetPid); exampleLink.setTargetPid(theTargetPid);
exampleLink.setMatchResult(theMatchResult); exampleLink.setMatchResult(theMatchResult);
Example<EmpiLink> example = Example.of(exampleLink); Example<EmpiLink> example = Example.of(exampleLink);
@ -210,17 +210,17 @@ public class EmpiLinkDaoSvc {
} }
/** /**
* Given a Person, return all links in which they are the source Person of the {@link EmpiLink} * Given a Golden Resource , return all links in which they are the source Person of the {@link EmpiLink}
* *
* @param thePersonResource The {@link IBaseResource} Person who's links you would like to retrieve. * @param theGoldenResource The {@link IBaseResource} Person who's links you would like to retrieve.
* @return A list of all {@link EmpiLink} entities in which thePersonResource is the source Person. * @return A list of all {@link EmpiLink} entities in which theGoldenResource is the source Person.
*/ */
public List<EmpiLink> findEmpiLinksBySourceResource(IBaseResource thePersonResource) { public List<EmpiLink> findEmpiLinksByGoldenResource(IBaseResource theGoldenResource) {
Long pid = myIdHelperService.getPidOrNull(thePersonResource); Long pid = myIdHelperService.getPidOrNull(theGoldenResource);
if (pid == null) { if (pid == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink().setSourceResourcePid(pid); EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink().setGoldenResourcePid(pid);
Example<EmpiLink> example = Example.of(exampleLink); Example<EmpiLink> example = Example.of(exampleLink);
return myEmpiLinkDao.findAll(example); return myEmpiLinkDao.findAll(example);
} }
@ -320,7 +320,7 @@ public class EmpiLinkDaoSvc {
if (sourcePid == null) { if (sourcePid == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink().setTargetPid(targetPid).setSourceResourcePid(sourcePid); EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink().setTargetPid(targetPid).setGoldenResourcePid(sourcePid);
Example<EmpiLink> example = Example.of(exampleLink); Example<EmpiLink> example = Example.of(exampleLink);
return myEmpiLinkDao.findAll(example); return myEmpiLinkDao.findAll(example);
} }
@ -337,7 +337,7 @@ public class EmpiLinkDaoSvc {
if (pid == null) { if (pid == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink().setSourceResourcePid(pid); EmpiLink exampleLink = myEmpiLinkFactory.newEmpiLink().setGoldenResourcePid(pid);
exampleLink.setMatchResult(EmpiMatchResultEnum.MATCH); exampleLink.setMatchResult(EmpiMatchResultEnum.MATCH);
Example<EmpiLink> example = Example.of(exampleLink); Example<EmpiLink> example = Example.of(exampleLink);
return myEmpiLinkDao.findAll(example); return myEmpiLinkDao.findAll(example);

View File

@ -79,7 +79,7 @@ public class EmpiLinkQuerySvcImpl implements IEmpiLinkQuerySvc {
private Example<EmpiLink> exampleLinkFromParameters(IIdType thePersonId, IIdType theTargetId, EmpiMatchResultEnum theMatchResult, EmpiLinkSourceEnum theLinkSource) { private Example<EmpiLink> exampleLinkFromParameters(IIdType thePersonId, IIdType theTargetId, EmpiMatchResultEnum theMatchResult, EmpiLinkSourceEnum theLinkSource) {
EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink(); EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink();
if (thePersonId != null) { if (thePersonId != null) {
empiLink.setSourceResourcePid(myIdHelperService.getPidOrThrowException(thePersonId)); empiLink.setGoldenResourcePid(myIdHelperService.getPidOrThrowException(thePersonId));
} }
if (theTargetId != null) { if (theTargetId != null) {
empiLink.setTargetPid(myIdHelperService.getPidOrThrowException(theTargetId)); empiLink.setTargetPid(myIdHelperService.getPidOrThrowException(theTargetId));

View File

@ -60,19 +60,23 @@ public class GoldenResourceMergerSvcImpl implements IGoldenResourceMergerSvc {
public IAnyResource mergeGoldenResources(IAnyResource theFromGoldenResource, IAnyResource theToGoldenResource, MdmTransactionContext theMdmTransactionContext) { public IAnyResource mergeGoldenResources(IAnyResource theFromGoldenResource, IAnyResource theToGoldenResource, MdmTransactionContext theMdmTransactionContext) {
Long toGoldenResourcePid = myIdHelperService.getPidOrThrowException(theToGoldenResource); Long toGoldenResourcePid = myIdHelperService.getPidOrThrowException(theToGoldenResource);
myPersonHelper.mergeFields(theFrom, theTo); myPersonHelper.mergeFields(theFromGoldenResource, theToGoldenResource);
mergeSourceResourceLinks(theFromGoldenResource, theToGoldenResource, toGoldenResourcePid, theMdmTransactionContext); mergeGoldenResourceLinks(theFromGoldenResource, theToGoldenResource, toGoldenResourcePid, theMdmTransactionContext);
//TODO GGG MDM: Is this just cleanup? In theory, the merge step from before shoulda done this..
removeTargetLinks(theFromGoldenResource, theToGoldenResource, theMdmTransactionContext); removeTargetLinks(theFromGoldenResource, theToGoldenResource, theMdmTransactionContext);
refreshLinksAndUpdatePerson(theToGoldenResource, theMdmTransactionContext);
myEmpiResourceDaoSvc.upsertSourceResource(theFromGoldenResource, theMdmTransactionContext.getResourceType());
Long fromGoldenResourcePid = myIdHelperService.getPidOrThrowException(theFromGoldenResource); Long fromGoldenResourcePid = myIdHelperService.getPidOrThrowException(theFromGoldenResource);
addMergeLink(toGoldenResourcePid, fromGoldenResourcePid, theMdmTransactionContext.getResourceType()); addMergeLink(toGoldenResourcePid, fromGoldenResourcePid, theMdmTransactionContext.getResourceType());
myPersonHelper.deactivateResource(theFromGoldenResource); //myPersonHelper.deactivateResource(theFromGoldenResource);
refreshLinksAndUpdatePerson(theFromGoldenResource, theMdmTransactionContext); //Remove HAPI-EMPI Managed TAG, add a different Ttag? e.g. HAPI-EMPI-DEPRECATED or something? This would serve the purpose.
myEmpiResourceDaoSvc.upsertSourceResource(theFromGoldenResource, theMdmTransactionContext.getResourceType());
log(theMdmTransactionContext, "Merged " + theFromGoldenResource.getIdElement().toVersionless() + " into " + theToGoldenResource.getIdElement().toVersionless()); log(theMdmTransactionContext, "Merged " + theFromGoldenResource.getIdElement().toVersionless() + " into " + theToGoldenResource.getIdElement().toVersionless());
return theToGoldenResource; return theToGoldenResource;
@ -86,9 +90,10 @@ public class GoldenResourceMergerSvcImpl implements IGoldenResourceMergerSvc {
* @param theMdmTransactionContext Context to keep track of the deletions * @param theMdmTransactionContext Context to keep track of the deletions
*/ */
private void removeTargetLinks(IAnyResource theFrom, IAnyResource theTo, MdmTransactionContext theMdmTransactionContext) { private void removeTargetLinks(IAnyResource theFrom, IAnyResource theTo, MdmTransactionContext theMdmTransactionContext) {
List<EmpiLink> allLinksWithTheFromAsTarget = myEmpiLinkDaoSvc.findEmpiLinksBySourceResource(theFrom); List<EmpiLink> allLinksWithTheFromAsTarget = myEmpiLinkDaoSvc.findEmpiLinksByGoldenResource(theFrom);
allLinksWithTheFromAsTarget allLinksWithTheFromAsTarget
.stream() .stream()
//TODO GGG NG MDM: Why are we keeping manual links? Haven't we already copied those over in the previous merge step?
.filter(EmpiLink::isAuto) // only keep manual links .filter(EmpiLink::isAuto) // only keep manual links
.forEach(l -> { .forEach(l -> {
theMdmTransactionContext.addTransactionLogMessage(String.format("Deleting link %s", l)); theMdmTransactionContext.addTransactionLogMessage(String.format("Deleting link %s", l));
@ -107,14 +112,10 @@ public class GoldenResourceMergerSvcImpl implements IGoldenResourceMergerSvc {
myEmpiLinkDaoSvc.save(empiLink); myEmpiLinkDaoSvc.save(empiLink);
} }
private void refreshLinksAndUpdatePerson(IAnyResource theToPerson, MdmTransactionContext theMdmTransactionContext) {
// myEmpiLinkSvc.syncEmpiLinksToPersonLinks(theToPerson, theEmpiTransactionContext);
myEmpiResourceDaoSvc.upsertSourceResource(theToPerson, theMdmTransactionContext.getResourceType());
}
private void mergeSourceResourceLinks(IAnyResource theFromResource, IAnyResource theToResource, Long theToResourcePid, MdmTransactionContext theMdmTransactionContext) { private void mergeGoldenResourceLinks(IAnyResource theFromResource, IAnyResource theToResource, Long theToResourcePid, MdmTransactionContext theMdmTransactionContext) {
List<EmpiLink> fromLinks = myEmpiLinkDaoSvc.findEmpiLinksBySourceResource(theFromResource); // fromLinks - links going to theFromResource List<EmpiLink> fromLinks = myEmpiLinkDaoSvc.findEmpiLinksByGoldenResource(theFromResource); // fromLinks - links going to theFromResource
List<EmpiLink> toLinks = myEmpiLinkDaoSvc.findEmpiLinksBySourceResource(theToResource); // toLinks - links going to theToResource List<EmpiLink> toLinks = myEmpiLinkDaoSvc.findEmpiLinksByGoldenResource(theToResource); // toLinks - links going to theToResource
// For each incomingLink, either ignore it, move it, or replace the original one // For each incomingLink, either ignore it, move it, or replace the original one
for (EmpiLink fromLink : fromLinks) { for (EmpiLink fromLink : fromLinks) {
@ -122,7 +123,7 @@ public class GoldenResourceMergerSvcImpl implements IGoldenResourceMergerSvc {
if (optionalToLink.isPresent()) { if (optionalToLink.isPresent()) {
// toLinks.remove(optionalToLink); // toLinks.remove(optionalToLink);
// The original links already contain this target, so move it over to the toPerson // The original links already contain this target, so move it over to the toResource
EmpiLink toLink = optionalToLink.get(); EmpiLink toLink = optionalToLink.get();
if (fromLink.isManual()) { if (fromLink.isManual()) {
switch (toLink.getLinkSource()) { switch (toLink.getLinkSource()) {
@ -141,7 +142,7 @@ public class GoldenResourceMergerSvcImpl implements IGoldenResourceMergerSvc {
} }
} }
// The original links didn't contain this target, so move it over to the toPerson // The original links didn't contain this target, so move it over to the toPerson
fromLink.setSourceResourcePid(theToResourcePid); fromLink.setGoldenResourcePid(theToResourcePid);
ourLog.trace("Saving link {}", fromLink); ourLog.trace("Saving link {}", fromLink);
myEmpiLinkDaoSvc.save(fromLink); myEmpiLinkDaoSvc.save(fromLink);
} }

View File

@ -429,7 +429,7 @@ abstract public class BaseEmpiR4Test extends BaseJpaR4Test {
EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink(); EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink();
empiLink.setLinkSource(EmpiLinkSourceEnum.MANUAL); empiLink.setLinkSource(EmpiLinkSourceEnum.MANUAL);
empiLink.setMatchResult(EmpiMatchResultEnum.MATCH); empiLink.setMatchResult(EmpiMatchResultEnum.MATCH);
empiLink.setSourceResourcePid(myIdHelperService.getPidOrNull(sourcePatient)); empiLink.setGoldenResourcePid(myIdHelperService.getPidOrNull(sourcePatient));
empiLink.setTargetPid(myIdHelperService.getPidOrNull(patient)); empiLink.setTargetPid(myIdHelperService.getPidOrNull(patient));
return empiLink; return empiLink;
} }

View File

@ -47,7 +47,7 @@ public class EmpiExpungeTest extends BaseEmpiR4Test {
EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink(); EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink();
empiLink.setLinkSource(EmpiLinkSourceEnum.MANUAL); empiLink.setLinkSource(EmpiLinkSourceEnum.MANUAL);
empiLink.setMatchResult(EmpiMatchResultEnum.MATCH); empiLink.setMatchResult(EmpiMatchResultEnum.MATCH);
empiLink.setSourceResourcePid(mySourceEntity.getId()); empiLink.setGoldenResourcePid(mySourceEntity.getId());
empiLink.setTargetPid(myTargetEntity.getId()); empiLink.setTargetPid(myTargetEntity.getId());
saveLink(empiLink); saveLink(empiLink);
} }

View File

@ -49,7 +49,7 @@ public class EmpiProviderQueryLinkR4Test extends BaseLinkR4Test {
myPerson2Id = new StringType(sourcePatient2.getIdElement().toVersionless().getValue()); myPerson2Id = new StringType(sourcePatient2.getIdElement().toVersionless().getValue());
Long sourcePatient2Pid = myIdHelperService.getPidOrNull(sourcePatient2); Long sourcePatient2Pid = myIdHelperService.getPidOrNull(sourcePatient2);
EmpiLink possibleDuplicateEmpiLink = myEmpiLinkDaoSvc.newEmpiLink().setSourceResourcePid(sourcePatient1Pid).setTargetPid(sourcePatient2Pid).setMatchResult(EmpiMatchResultEnum.POSSIBLE_DUPLICATE).setLinkSource(EmpiLinkSourceEnum.AUTO); EmpiLink possibleDuplicateEmpiLink = myEmpiLinkDaoSvc.newEmpiLink().setGoldenResourcePid(sourcePatient1Pid).setTargetPid(sourcePatient2Pid).setMatchResult(EmpiMatchResultEnum.POSSIBLE_DUPLICATE).setLinkSource(EmpiLinkSourceEnum.AUTO);
saveLink(possibleDuplicateEmpiLink); saveLink(possibleDuplicateEmpiLink);
} }

View File

@ -115,7 +115,7 @@ public class EmpiLinkSvcTest extends BaseEmpiR4Test {
private void saveNoMatchLink(Long thePersonPid, Long theTargetPid) { private void saveNoMatchLink(Long thePersonPid, Long theTargetPid) {
EmpiLink noMatchLink = myEmpiLinkDaoSvc.newEmpiLink() EmpiLink noMatchLink = myEmpiLinkDaoSvc.newEmpiLink()
.setSourceResourcePid(thePersonPid) .setGoldenResourcePid(thePersonPid)
.setTargetPid(theTargetPid) .setTargetPid(theTargetPid)
.setLinkSource(EmpiLinkSourceEnum.MANUAL) .setLinkSource(EmpiLinkSourceEnum.MANUAL)
.setMatchResult(EmpiMatchResultEnum.NO_MATCH); .setMatchResult(EmpiMatchResultEnum.NO_MATCH);

View File

@ -121,7 +121,7 @@ public class EmpiPersonMergerSvcTest extends BaseEmpiR4Test {
@Test @Test
public void mergeRemovesPossibleDuplicatesLink() { public void mergeRemovesPossibleDuplicatesLink() {
EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink() EmpiLink empiLink = myEmpiLinkDaoSvc.newEmpiLink()
.setSourceResourcePid(myToGoldenPatientPid) .setGoldenResourcePid(myToGoldenPatientPid)
.setTargetPid(myFromGoldenPatientPid) .setTargetPid(myFromGoldenPatientPid)
.setEmpiTargetType("Patient") .setEmpiTargetType("Patient")
.setMatchResult(EmpiMatchResultEnum.POSSIBLE_DUPLICATE) .setMatchResult(EmpiMatchResultEnum.POSSIBLE_DUPLICATE)
@ -206,7 +206,7 @@ public class EmpiPersonMergerSvcTest extends BaseEmpiR4Test {
} }
private List<EmpiLink> getNonRedirectLinksByPerson(Patient theGoldenPatient) { private List<EmpiLink> getNonRedirectLinksByPerson(Patient theGoldenPatient) {
return myEmpiLinkDaoSvc.findEmpiLinksBySourceResource(theGoldenPatient).stream() return myEmpiLinkDaoSvc.findEmpiLinksByGoldenResource(theGoldenPatient).stream()
.filter(link -> !link.isRedirect()) .filter(link -> !link.isRedirect())
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@ -320,7 +320,7 @@ public class EmpiPersonMergerSvcTest extends BaseEmpiR4Test {
private void assertResourceHasLinkCount(IBaseResource theResource, int theCount) { private void assertResourceHasLinkCount(IBaseResource theResource, int theCount) {
List<EmpiLink> links = myEmpiLinkDaoSvc.findEmpiLinksBySourceResource(theResource); List<EmpiLink> links = myEmpiLinkDaoSvc.findEmpiLinksByGoldenResource(theResource);
assertEquals(theCount, links.size()); assertEquals(theCount, links.size());
} }
@ -339,7 +339,7 @@ public class EmpiPersonMergerSvcTest extends BaseEmpiR4Test {
} }
private void assertResourceHasAutoLinkCount(Patient myToGoldenPatient, int theCount) { private void assertResourceHasAutoLinkCount(Patient myToGoldenPatient, int theCount) {
List<EmpiLink> links = myEmpiLinkDaoSvc.findEmpiLinksBySourceResource(myToGoldenPatient); List<EmpiLink> links = myEmpiLinkDaoSvc.findEmpiLinksByGoldenResource(myToGoldenPatient);
assertEquals(theCount, links.stream().filter(EmpiLink::isAuto).count()); assertEquals(theCount, links.stream().filter(EmpiLink::isAuto).count());
} }