Fixed todos and reverted FK check in the test

This commit is contained in:
Nick 2020-12-08 13:00:02 -05:00
parent aef84c9fe9
commit efb429b319
4 changed files with 9 additions and 11 deletions

View File

@ -20,10 +20,9 @@ package ca.uhn.fhir.jpa.dao.mdm;
* #L%
*/
import ca.uhn.fhir.jpa.entity.MdmLink;
import ca.uhn.fhir.mdm.api.MdmMatchResultEnum;
import ca.uhn.fhir.jpa.dao.data.IMdmLinkDao;
import ca.uhn.fhir.jpa.dao.index.IdHelperService;
import ca.uhn.fhir.mdm.api.MdmMatchResultEnum;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -53,7 +52,7 @@ public class MdmLinkDeleteSvc {
return removed;
}
public int deleteNonRedirectWithWithAnyReferenceTo(IBaseResource theResource) {
public int deleteNonRedirectWithAnyReferenceTo(IBaseResource theResource) {
Long pid = myIdHelperService.getPidOrThrowException(theResource.getIdElement());
int removed = myMdmLinkDao.deleteWithAnyReferenceToPidAndMatchResultNot(pid, MdmMatchResultEnum.REDIRECT);
if (removed > 0) {

View File

@ -69,7 +69,7 @@ public class MdmStorageInterceptor implements IMdmStorageInterceptor {
forbidIfHasMultipleEids(theBaseResource);
}
// TODO GGG MDM find a better way to identify i nternal calls?
// TODO GGG MDM find a better way to identify internal calls?
if (isInternalRequest(theRequestDetails)) {
return;
}
@ -84,10 +84,9 @@ public class MdmStorageInterceptor implements IMdmStorageInterceptor {
forbidIfHasMultipleEids(theUpdatedResource);
}
//TODO GGG MDM: Check if this is actually handled already in mdm update code or not.
if (myGoldenResourceHelper.isDeactivated(theUpdatedResource)) {
ourLog.debug("Deleting MDM links to deactivated Golden resource {}", theUpdatedResource.getIdElement().toUnqualifiedVersionless());
int deleted = myMdmLinkDeleteSvc.deleteNonRedirectWithWithAnyReferenceTo(theUpdatedResource);
int deleted = myMdmLinkDeleteSvc.deleteNonRedirectWithAnyReferenceTo(theUpdatedResource);
if (deleted > 0) {
ourLog.debug("Deleted {} MDM links", deleted);
}
@ -125,7 +124,7 @@ public class MdmStorageInterceptor implements IMdmStorageInterceptor {
}
private void throwBlockEidChange() {
throw new ForbiddenOperationException("While running with EID updates disabled, EIDs may not be updated on Patient/Practitioner resources");
throw new ForbiddenOperationException("While running with EID updates disabled, EIDs may not be updated on source resources");
}
/*
@ -139,7 +138,7 @@ public class MdmStorageInterceptor implements IMdmStorageInterceptor {
private void forbidIfHasMultipleEids(IBaseResource theResource) {
String resourceType = extractResourceType(theResource);
if (resourceType.equalsIgnoreCase("Patient") || resourceType.equalsIgnoreCase("Practitioner")) {
if (myMdmSettings.isSupportedMdmType(resourceType)) {
if (myEIDHelper.getExternalEid(theResource).size() > 1) {
throwBlockMultipleEids();
}
@ -171,7 +170,7 @@ public class MdmStorageInterceptor implements IMdmStorageInterceptor {
}
private void throwBlockMultipleEids() {
throw new ForbiddenOperationException("While running with multiple EIDs disabled, Patient/Practitioner resources may have at most one EID.");
throw new ForbiddenOperationException("While running with multiple EIDs disabled, source resources may have at most one EID.");
}
private String extractResourceType(IBaseResource theResource) {

View File

@ -56,11 +56,11 @@ public class MdmResourceFilteringSvc {
* @return whether or not MDM processing should proceed
*/
public boolean shouldBeProcessed(IAnyResource theResource) {
//TODO GGG ask KHS: Skip the infinite loop, whoops. Better way to do this? tighter subscription criteria?
if (MdmUtil.isMdmManaged(theResource)) {
ourLog.debug("MDM Message handler is dropping [{}] as it is MDM-managed.", theResource);
return false;
}
String resourceType = myFhirContext.getResourceType(theResource);
List<MdmResourceSearchParamJson> candidateSearchParams = myMdmSettings.getMdmRules().getCandidateSearchParams();

View File

@ -61,7 +61,7 @@ public class MdmExpungeTest extends BaseMdmR4Test {
fail();
} catch (InternalErrorException e) {
assertThat(e.getMessage(), containsString("ViolationException"));
assertThat(e.getMessage(), containsString("FK_MDM_LINK_SOURCE"));
assertThat(e.getMessage(), containsString("FK_EMPI_LINK_TARGET"));
}
myInterceptorService.registerInterceptor(myMdmStorageInterceptor);
myPatientDao.expunge(myTargetId.toVersionless(), expungeOptions, null);