use of se.inera.intyg.webcert.common.sender.exception.TemporaryException in project webcert by sklintyg.
the class CertificateRevokeProcessor method process.
public void process(@Body String xmlBody, @Header(Constants.INTYGS_ID) String intygsId, @Header(Constants.LOGICAL_ADDRESS) String logicalAddress, @Header(Constants.INTYGS_TYP) String intygsTyp) throws TemporaryException, PermanentException {
checkArgument(!Strings.isNullOrEmpty(intygsId), "Message of type %s does not have a %s header.", Constants.REVOKE_MESSAGE, Constants.INTYGS_ID);
checkArgument(!Strings.isNullOrEmpty(logicalAddress), "Message of type %s does not have a %s header.", Constants.REVOKE_MESSAGE, Constants.LOGICAL_ADDRESS);
checkArgument(!Strings.isNullOrEmpty(intygsTyp), "Message of type %s does not have a %s header.", Constants.REVOKE_MESSAGE, Constants.INTYGS_TYP);
try {
ModuleApi moduleApi = registry.getModuleApi(intygsTyp);
moduleApi.revokeCertificate(xmlBody, logicalAddress);
} catch (ExternalServiceCallException e) {
switch(e.getErroIdEnum()) {
case TECHNICAL_ERROR:
case APPLICATION_ERROR:
throw new TemporaryException(e.getMessage());
default:
throw new PermanentException(e.getMessage());
}
} catch (ModuleException e) {
throw new PermanentException(e.getMessage());
} catch (WebServiceException e) {
throw new TemporaryException(e.getMessage());
} catch (Exception e) {
throw new PermanentException(e.getMessage());
}
}
use of se.inera.intyg.webcert.common.sender.exception.TemporaryException in project webcert by sklintyg.
the class NotificationPatientEnricher method enrichWithPatient.
public void enrichWithPatient(Intyg intyg) throws TemporaryException {
// INTYG-4190, hämta patientens uppgifter från PU-tjänsten och klistra in i utlåtandet.
String intygsTyp = intyg.getTyp().getCode();
switch(intygsTyp.toLowerCase()) {
case "luse":
case "luae_na":
case "luae_fs":
case "lisjp":
String personId = intyg.getPatient().getPersonId().getExtension();
Personnummer personnummer = Personnummer.createPersonnummer(personId).orElseThrow(() -> new IllegalArgumentException("Cannot create Personummer object from personId: " + personId));
PersonSvar personSvar = puService.getPerson(personnummer);
if (personSvar.getStatus() == PersonSvar.Status.FOUND) {
if (!personSvar.getPerson().isSekretessmarkering()) {
intyg.setPatient(buildPatientFromPersonSvar(personSvar.getPerson()));
} else {
intyg.getPatient().setEfternamn(SEKRETESSMARKERING);
intyg.getPatient().setFornamn(EMPTY_STRING);
intyg.getPatient().setMellannamn(EMPTY_STRING);
intyg.getPatient().setPostadress(EMPTY_STRING);
intyg.getPatient().setPostnummer(EMPTY_STRING);
intyg.getPatient().setPostort(EMPTY_STRING);
}
} else if (personSvar.getStatus() == PersonSvar.Status.ERROR) {
throw new TemporaryException(new IllegalStateException("Could not query PU-service for enriching notification with patient data."));
} else {
LOG.warn("PU-service returned NOT_FOUND for personnummer: {}, not enriching notification.", personnummer.getPersonnummerHash());
}
break;
default:
// Do nothing
break;
}
}
Aggregations