Add DSTU3 equivalent provider functions
This commit is contained in:
parent
9236cdc211
commit
1454364d4e
|
@ -24,11 +24,12 @@ import ca.uhn.fhir.context.FhirContext;
|
|||
import ca.uhn.fhir.empi.api.EmpiLinkSourceEnum;
|
||||
import ca.uhn.fhir.empi.api.EmpiMatchResultEnum;
|
||||
import ca.uhn.fhir.empi.api.IEmpiBatchService;
|
||||
import ca.uhn.fhir.empi.api.IEmpiResetSvc;
|
||||
import ca.uhn.fhir.empi.api.IEmpiLinkQuerySvc;
|
||||
import ca.uhn.fhir.empi.api.IEmpiLinkUpdaterSvc;
|
||||
import ca.uhn.fhir.empi.api.IEmpiMatchFinderSvc;
|
||||
import ca.uhn.fhir.empi.api.IEmpiPersonMergerSvc;
|
||||
import ca.uhn.fhir.empi.api.IEmpiResetSvc;
|
||||
import ca.uhn.fhir.rest.annotation.IdParam;
|
||||
import ca.uhn.fhir.rest.annotation.Operation;
|
||||
import ca.uhn.fhir.rest.annotation.OperationParam;
|
||||
import ca.uhn.fhir.rest.api.server.RequestDetails;
|
||||
|
@ -37,10 +38,12 @@ import ca.uhn.fhir.rest.server.provider.ProviderConstants;
|
|||
import ca.uhn.fhir.rest.server.servlet.ServletRequestDetails;
|
||||
import ca.uhn.fhir.validation.IResourceLoader;
|
||||
import org.hl7.fhir.dstu3.model.Bundle;
|
||||
import org.hl7.fhir.dstu3.model.DecimalType;
|
||||
import org.hl7.fhir.dstu3.model.InstantType;
|
||||
import org.hl7.fhir.dstu3.model.Parameters;
|
||||
import org.hl7.fhir.dstu3.model.Patient;
|
||||
import org.hl7.fhir.dstu3.model.Person;
|
||||
import org.hl7.fhir.dstu3.model.Practitioner;
|
||||
import org.hl7.fhir.dstu3.model.Resource;
|
||||
import org.hl7.fhir.dstu3.model.StringType;
|
||||
import org.hl7.fhir.instance.model.api.IAnyResource;
|
||||
|
@ -55,7 +58,7 @@ public class EmpiProviderDstu3 extends BaseEmpiProvider {
|
|||
private final IEmpiLinkUpdaterSvc myEmpiLinkUpdaterSvc;
|
||||
private final IEmpiLinkQuerySvc myEmpiLinkQuerySvc;
|
||||
private final IEmpiResetSvc myEmpiExpungeSvc;
|
||||
private final IEmpiBatchService myEmpiBatchService;
|
||||
private final IEmpiBatchService myEmpiBatchSvc;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
|
@ -70,7 +73,7 @@ public class EmpiProviderDstu3 extends BaseEmpiProvider {
|
|||
myEmpiLinkUpdaterSvc = theEmpiLinkUpdaterSvc;
|
||||
myEmpiLinkQuerySvc = theEmpiLinkQuerySvc;
|
||||
myEmpiExpungeSvc = theEmpiExpungeSvc;
|
||||
myEmpiBatchService = theEmpiBatchSvc;
|
||||
myEmpiBatchSvc = theEmpiBatchSvc;
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.EMPI_MATCH, type = Patient.class)
|
||||
|
@ -155,4 +158,72 @@ public class EmpiProviderDstu3 extends BaseEmpiProvider {
|
|||
|
||||
return (Parameters) myEmpiLinkUpdaterSvc.notDuplicatePerson(person, target, createEmpiContext(theRequestDetails));
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN, idempotent = false, returnParameters = {
|
||||
@OperationParam(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN_OUT_PARAM_SUBMIT_COUNT, type= DecimalType.class)
|
||||
})
|
||||
public Parameters empiBatchOnAllTargets(
|
||||
@OperationParam(name= ProviderConstants.EMPI_BATCH_RUN_CRITERIA,min = 0 , max = 1) StringType theCriteria,
|
||||
ServletRequestDetails theRequestDetails) {
|
||||
String criteria = convertCriteriaToString(theCriteria);
|
||||
long submittedCount = myEmpiBatchSvc.runEmpiOnAllTargetTypes(criteria);
|
||||
return buildEmpiOutParametersWithCount(submittedCount);
|
||||
}
|
||||
|
||||
private String convertCriteriaToString(StringType theCriteria) {
|
||||
return theCriteria == null ? null : theCriteria.getValueAsString();
|
||||
}
|
||||
|
||||
@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)
|
||||
})
|
||||
public Parameters empiBatchPatientInstance(
|
||||
@IdParam IIdType theIdParam,
|
||||
RequestDetails theRequest) {
|
||||
long submittedCount = myEmpiBatchSvc.runEmpiOnTarget(theIdParam);
|
||||
return buildEmpiOutParametersWithCount(submittedCount);
|
||||
}
|
||||
|
||||
@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)
|
||||
})
|
||||
public Parameters empiBatchPatientType(
|
||||
@OperationParam(name = ProviderConstants.EMPI_BATCH_RUN_CRITERIA) StringType theCriteria,
|
||||
RequestDetails theRequest) {
|
||||
String criteria = convertCriteriaToString(theCriteria);
|
||||
long submittedCount = myEmpiBatchSvc.runEmpiOnPatientType(criteria);
|
||||
return buildEmpiOutParametersWithCount(submittedCount);
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN, idempotent = false, type = Practitioner.class, returnParameters = {
|
||||
@OperationParam(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN_OUT_PARAM_SUBMIT_COUNT, type = DecimalType.class)
|
||||
})
|
||||
public Parameters empiBatchPractitionerInstance(
|
||||
@IdParam IIdType theIdParam,
|
||||
RequestDetails theRequest) {
|
||||
long submittedCount = myEmpiBatchSvc.runEmpiOnTarget(theIdParam);
|
||||
return buildEmpiOutParametersWithCount(submittedCount);
|
||||
}
|
||||
|
||||
@Operation(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN, idempotent = false, type = Practitioner.class, returnParameters = {
|
||||
@OperationParam(name = ProviderConstants.OPERATION_EMPI_BATCH_RUN_OUT_PARAM_SUBMIT_COUNT, type = DecimalType.class)
|
||||
})
|
||||
public Parameters empiBatchPractitionerType(
|
||||
@OperationParam(name = ProviderConstants.EMPI_BATCH_RUN_CRITERIA) StringType theCriteria,
|
||||
RequestDetails theRequest) {
|
||||
String criteria = convertCriteriaToString(theCriteria);
|
||||
long submittedCount = myEmpiBatchSvc.runEmpiOnPractitionerType(criteria);
|
||||
return buildEmpiOutParametersWithCount(submittedCount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to build the out-parameters for all batch EMPI operations.
|
||||
*/
|
||||
private Parameters buildEmpiOutParametersWithCount(long theCount) {
|
||||
Parameters parameters = new Parameters();
|
||||
parameters.addParameter()
|
||||
.setName(ProviderConstants.OPERATION_EMPI_BATCH_RUN_OUT_PARAM_SUBMIT_COUNT)
|
||||
.setValue(new DecimalType(theCount));
|
||||
return parameters;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue