Rework pid translator to accept non-forced-ids
This commit is contained in:
parent
5323486d28
commit
420c4f8378
|
@ -76,8 +76,6 @@ public class GroupBulkItemReader extends BaseBulkItemReader implements ItemReade
|
|||
@Autowired
|
||||
private IMdmLinkDao myMdmLinkDao;
|
||||
|
||||
private RuntimeSearchParam myPatientSearchParam;
|
||||
|
||||
@Override
|
||||
Iterator<ResourcePersistentId> getResourcePidIterator() {
|
||||
Set<ResourcePersistentId> myReadPids = new HashSet<>();
|
||||
|
@ -112,7 +110,6 @@ public class GroupBulkItemReader extends BaseBulkItemReader implements ItemReade
|
|||
*/
|
||||
private Iterator<ResourcePersistentId> getExpandedPatientIterator() {
|
||||
Set<Long> patientPidsToExport = new HashSet<>();
|
||||
//This gets all member pids
|
||||
List<String> members = getMembers();
|
||||
List<IIdType> ids = members.stream().map(member -> new IdDt("Patient/" + member)).collect(Collectors.toList());
|
||||
List<Long> pidsOrThrowException = myIdHelperService.getPidsOrThrowException(ids);
|
||||
|
@ -161,8 +158,15 @@ public class GroupBulkItemReader extends BaseBulkItemReader implements ItemReade
|
|||
//Now lets translate these pids into resource IDs
|
||||
Set<Long> uniquePids = new HashSet<>();
|
||||
goldenPidTargetPidTuple.forEach(uniquePids::addAll);
|
||||
Map<Long, Optional<String>> longOptionalMap = myIdHelperService.translatePidsToForcedIds(uniquePids);
|
||||
expandedIds = longOptionalMap.values().stream().map(Optional::get).collect(Collectors.toSet());
|
||||
|
||||
Map<Long, Optional<String>> pidToForcedIdMap = myIdHelperService.translatePidsToForcedIds(uniquePids);
|
||||
|
||||
//If the result of the translation is an empty optional, it means there is no forced id, and we can use the PID as the resource ID.
|
||||
Set<String> resolvedResourceIds = pidToForcedIdMap.entrySet().stream()
|
||||
.map(entry -> entry.getValue().isPresent() ? entry.getValue().get() : entry.getKey().toString())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
expandedIds.addAll(resolvedResourceIds);
|
||||
}
|
||||
|
||||
//Now manually add the members of the group (its possible even with mdm expansion that some members dont have MDM matches,
|
||||
|
|
|
@ -43,6 +43,7 @@ import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
|
|||
import org.hl7.fhir.instance.model.api.IIdType;
|
||||
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
||||
import org.hl7.fhir.r4.model.InstantType;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -54,9 +55,12 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.slf4j.LoggerFactory.getLogger;
|
||||
|
||||
|
||||
public class BulkDataExportProvider {
|
||||
public static final String FARM_TO_TABLE_TYPE_FILTER_REGEX = "(?:,)(?=[A-Z][a-z]+\\?)";
|
||||
private static final Logger ourLog = getLogger(BulkDataExportProvider.class);
|
||||
|
||||
@Autowired
|
||||
private IBulkDataExportSvc myBulkDataExportSvc;
|
||||
|
@ -90,8 +94,6 @@ public class BulkDataExportProvider {
|
|||
writePollingLocationToResponseHeaders(theRequestDetails, outcome);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private String getServerBase(ServletRequestDetails theRequestDetails) {
|
||||
return StringUtils.removeEnd(theRequestDetails.getServerBaseForRequest(), "/");
|
||||
}
|
||||
|
@ -109,6 +111,13 @@ public class BulkDataExportProvider {
|
|||
@OperationParam(name = JpaConstants.PARAM_EXPORT_MDM, min = 0, max = 1, typeName = "boolean") IPrimitiveType<Boolean> theMdm,
|
||||
ServletRequestDetails theRequestDetails
|
||||
) {
|
||||
ourLog.debug("Received Group Bulk Export Request for Group {}", theIdParam);
|
||||
ourLog.debug("_type={}", theIdParam);
|
||||
ourLog.debug("_since={}", theSince);
|
||||
ourLog.debug("_typeFilter={}", theTypeFilter);
|
||||
ourLog.debug("_mdm=", theMdm);
|
||||
|
||||
|
||||
validatePreferAsyncHeader(theRequestDetails);
|
||||
BulkDataExportOptions bulkDataExportOptions = buildGroupBulkExportOptions(theOutputFormat, theType, theSince, theTypeFilter, theIdParam, theMdm);
|
||||
validateResourceTypesAllContainPatientSearchParams(bulkDataExportOptions.getResourceTypes());
|
||||
|
|
|
@ -1015,6 +1015,7 @@ public class BulkDataExportSvcImplR4Test extends BaseJpaR4Test {
|
|||
createImmunizationWithIndex(i, patId);
|
||||
createCareTeamWithIndex(i, patId);
|
||||
}
|
||||
|
||||
myPatientGroupId = myGroupDao.update(group).getId();
|
||||
|
||||
//Manually create another golden record
|
||||
|
|
Loading…
Reference in New Issue