Add DSTU3 clear operation
This commit is contained in:
parent
e9adebc412
commit
9491a3e499
|
@ -46,12 +46,12 @@ public class EmpiResetSvcImpl implements IEmpiResetSvc {
|
|||
@Autowired
|
||||
private IResourceExpungeService myResourceExpungeService;
|
||||
|
||||
|
||||
@Override
|
||||
public void expungeAllEmpiLinksOfTargetType(String theResourceType) {
|
||||
public long expungeAllEmpiLinksOfTargetType(String theResourceType) {
|
||||
throwExceptionIfInvalidTargetType(theResourceType);
|
||||
List<Long> longs = myEmpiLinkDaoSvc.deleteAllEmpiLinksOfTypeAndReturnPersonPids(theResourceType);
|
||||
myResourceExpungeService.expungeCurrentVersionOfResources(null, longs, new AtomicInteger(longs.size()));
|
||||
return longs.size();
|
||||
}
|
||||
|
||||
private void throwExceptionIfInvalidTargetType(String theResourceType) {
|
||||
|
@ -64,9 +64,10 @@ public class EmpiResetSvcImpl implements IEmpiResetSvc {
|
|||
* TODO GGG this operation likely won't scale very well. Consider adding slicing
|
||||
*/
|
||||
@Override
|
||||
public void expungeAllEmpiLinks() {
|
||||
public long expungeAllEmpiLinks() {
|
||||
List<Long> longs = myEmpiLinkDaoSvc.deleteAllEmpiLinksAndReturnPersonPids();
|
||||
myResourceExpungeService.expungeCurrentVersionOfResources(null, longs, new AtomicInteger(longs.size()));
|
||||
return longs.size();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,12 +23,19 @@ package ca.uhn.fhir.empi.api;
|
|||
public interface IEmpiResetSvc {
|
||||
|
||||
/**
|
||||
* Given a resource type, delete the underlying empi links, and their related person objects.
|
||||
* Given a resource type, delete the underlying EMPI links, and their related person objects.
|
||||
*
|
||||
* @param theResourceType The type of resources
|
||||
*
|
||||
* @return the count of deleted EMPI links
|
||||
*/
|
||||
void expungeAllEmpiLinksOfTargetType(String theResourceType);
|
||||
long expungeAllEmpiLinksOfTargetType(String theResourceType);
|
||||
|
||||
|
||||
void expungeAllEmpiLinks();
|
||||
/**
|
||||
* Delete all EMPI links, and their related Person objects.
|
||||
*
|
||||
*
|
||||
* @return the count of deleted EMPI links
|
||||
*/
|
||||
long expungeAllEmpiLinks();
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
|
|||
import ca.uhn.fhir.rest.server.provider.ProviderConstants;
|
||||
import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
||||
import ca.uhn.fhir.validation.IResourceLoader;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.hl7.fhir.dstu3.model.Bundle;
|
||||
import org.hl7.fhir.dstu3.model.DecimalType;
|
||||
import org.hl7.fhir.dstu3.model.InstantType;
|
||||
|
@ -174,6 +175,20 @@ public class EmpiProviderDstu3 extends BaseEmpiProvider {
|
|||
return theCriteria == null ? null : theCriteria.getValueAsString();
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.EMPI_CLEAR)
|
||||
public Parameters clearEmpiLinks(@OperationParam(name=ProviderConstants.EMPI_CLEAR_TARGET_TYPE, min = 0, max = 1) org.hl7.fhir.r4.model.StringType theTargetType) {
|
||||
long resetCount;
|
||||
if (theTargetType == null || StringUtils.isBlank(theTargetType.getValue())) {
|
||||
resetCount = myEmpiExpungeSvc.expungeAllEmpiLinks();
|
||||
} else {
|
||||
resetCount = myEmpiExpungeSvc.expungeAllEmpiLinksOfTargetType(theTargetType.getValueNotNull());
|
||||
}
|
||||
Parameters parameters = new Parameters();
|
||||
parameters.addParameter().setName(ProviderConstants.OPERATION_EMPI_CLEAR_OUT_PARAM_RESET_COUNT)
|
||||
.setValue(new DecimalType(resetCount));
|
||||
return parameters;
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN, idempotent = false, type = Patient.class, returnParameters = {
|
||||
@OperationParam(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN_OUT_PARAM_SUBMIT_COUNT, type = DecimalType.class)
|
||||
})
|
||||
|
|
|
@ -130,12 +130,16 @@ public class EmpiProviderR4 extends BaseEmpiProvider {
|
|||
|
||||
@Operation(name = ProviderConstants.EMPI_CLEAR)
|
||||
public Parameters clearEmpiLinks(@OperationParam(name=ProviderConstants.EMPI_CLEAR_TARGET_TYPE, min = 0, max = 1) StringType theTargetType) {
|
||||
long resetCount;
|
||||
if (theTargetType == null || StringUtils.isBlank(theTargetType.getValue())) {
|
||||
myEmpiExpungeSvc.expungeAllEmpiLinks();
|
||||
resetCount = myEmpiExpungeSvc.expungeAllEmpiLinks();
|
||||
} else {
|
||||
myEmpiExpungeSvc.expungeAllEmpiLinksOfTargetType(theTargetType.getValueNotNull());
|
||||
resetCount = myEmpiExpungeSvc.expungeAllEmpiLinksOfTargetType(theTargetType.getValueNotNull());
|
||||
}
|
||||
return new Parameters();
|
||||
Parameters parameters = new Parameters();
|
||||
parameters.addParameter().setName(ProviderConstants.OPERATION_EMPI_CLEAR_OUT_PARAM_RESET_COUNT)
|
||||
.setValue(new DecimalType(resetCount));
|
||||
return parameters;
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.EMPI_QUERY_LINKS, idempotent = true)
|
||||
|
|
|
@ -89,4 +89,5 @@ public class ProviderConstants {
|
|||
public static final String EMPI_BATCH_RUN_CRITERIA= "criteria" ;
|
||||
public static final String EMPI_BATCH_RUN_RESOURCE_IDS = "resourceIds" ;
|
||||
public static final String OPERATION_EMPI_BATCH_RUN_OUT_PARAM_SUBMIT_COUNT = "submitted" ;
|
||||
public static final String OPERATION_EMPI_CLEAR_OUT_PARAM_RESET_COUNT = "reset";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue