use of gov.cms.qpp.conversion.api.model.Metadata in project qpp-conversion-tool by CMSgov.
the class AuditServiceImpl method success.
/**
* Audit a successful conversion.
*
* @param conversionReport report of the conversion
* @return future
*/
@Override
public CompletableFuture<Metadata> success(ConversionReport conversionReport) {
if (noAudit()) {
return null;
}
API_LOG.info("Writing success audit information");
Metadata metadata = initMetadata(conversionReport, Outcome.SUCCESS);
Source qrdaSource = conversionReport.getQrdaSource();
Source qppSource = conversionReport.getQppSource();
CompletableFuture<Void> allWrites = CompletableFuture.allOf(storeContent(qrdaSource).thenAccept(metadata::setSubmissionLocator), storeContent(qppSource).thenAccept(metadata::setQppLocator));
return allWrites.whenComplete((nada, thrown) -> persist(metadata, thrown)).thenApply(ignore -> metadata);
}
use of gov.cms.qpp.conversion.api.model.Metadata in project qpp-conversion-tool by CMSgov.
the class AuditServiceImpl method initMetadata.
/**
* Initializes {@link Metadata} from the {@link ConversionReport} and conversion outcome
*
* @param report Object containing metadata information
* @param outcome Status of the conversion
* @return Constructed metadata
*/
private Metadata initMetadata(ConversionReport report, MetadataHelper.Outcome outcome) {
Metadata metadata = MetadataHelper.generateMetadata(report.getDecoded(), outcome);
metadata.setFileName(report.getQrdaSource().getName());
metadata.setPurpose(report.getPurpose());
return metadata;
}
use of gov.cms.qpp.conversion.api.model.Metadata in project qpp-conversion-tool by CMSgov.
the class CpcApiAcceptance method createDatedCpcMetadata.
private Metadata createDatedCpcMetadata(String parsableDate) {
Metadata metadata = new Metadata();
metadata.setApm("T3STV47U3");
metadata.setTin("0001233212");
metadata.setNpi("012123123");
metadata.setCpc(Constants.CPC_DYNAMO_PARTITION_START + "15");
metadata.setCpcProcessed(false);
metadata.setFileName("acceptance_test.xml");
metadata.setConversionStatus(true);
metadata.setOverallStatus(true);
metadata.setValidationStatus(true);
metadata.setQppLocator("not-here?");
metadata.setValidationErrorLocator("not-there?");
metadata.setConversionErrorLocator("not-anywhere?");
metadata.setCreatedDate(Instant.parse(parsableDate));
return metadata;
}
use of gov.cms.qpp.conversion.api.model.Metadata in project qpp-conversion-tool by CMSgov.
the class QrdaControllerV1 method uploadQrdaFile.
/**
* Endpoint to transform an uploaded file into a valid or error json response
*
* @param file Uploaded file
* @param purpose the purpose for the conversion
* @return Valid json or error json content
*/
@PostMapping(headers = { "Accept=" + Constants.V1_API_ACCEPT })
public ResponseEntity<String> uploadQrdaFile(@RequestParam(name = "file") MultipartFile file, @RequestHeader(required = false, name = "Purpose") String purpose) {
String originalFilename = file.getOriginalFilename();
if (!StringUtils.isEmpty(purpose)) {
if (purpose.length() > MAX_PURPOSE_LENGTH) {
throw new InvalidPurposeException("Given Purpose (header) is too large. Max length is " + MAX_PURPOSE_LENGTH + ", yours was " + purpose.length());
}
API_LOG.info("Conversion request received for " + purpose);
} else {
// if it's an empty string, make it null
purpose = null;
API_LOG.info("Conversion request received");
}
ConversionReport conversionReport = qrdaService.convertQrda3ToQpp(new InputStreamSupplierSource(originalFilename, inputStream(file), purpose));
validationService.validateQpp(conversionReport);
Metadata metadata = audit(conversionReport);
API_LOG.info("Conversion request succeeded");
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
if (metadata != null) {
httpHeaders.add("Location", metadata.getUuid());
}
return new ResponseEntity<>(conversionReport.getEncoded().toString(), httpHeaders, HttpStatus.CREATED);
}
use of gov.cms.qpp.conversion.api.model.Metadata in project qpp-conversion-tool by CMSgov.
the class MetadataHelper method generateMetadata.
/**
* Generates a {@link Metadata} object from a {@link Node}.
* This {@link Metadata} does not contain data not found in a standard {@link Node}.
*
* @param node from which to extract metadata
* @param outcome to update with metadata
* @return metadata
*/
public static Metadata generateMetadata(Node node, Outcome outcome) {
Objects.requireNonNull(outcome, "outcome");
Metadata metadata = new Metadata();
if (node != null) {
metadata.setApm(findApm(node));
metadata.setTin(findTin(node));
metadata.setNpi(findNpi(node));
metadata.setCpc(deriveCpcHash(node));
metadata.setCpcProcessed(false);
}
outcome.setStatus(metadata);
return metadata;
}
Aggregations