use of se.inera.intyg.webcert.web.service.certificatesender.CertificateSenderException in project webcert by sklintyg.
the class ArendeServiceTest method answerKompltQuestionClosesAllCompletionsAsHandled.
@Test
public void answerKompltQuestionClosesAllCompletionsAsHandled() throws CertificateSenderException {
final String svarPaMeddelandeId = "svarPaMeddelandeId";
Arende fraga = buildArende(svarPaMeddelandeId, ENHET_ID);
fraga.setStatus(Status.PENDING_INTERNAL_ACTION);
fraga.setAmne(ArendeAmne.KOMPLT);
fraga.setPatientPersonId(PERSON_ID);
Arende komplt1 = buildArende(UUID.randomUUID().toString(), ENHET_ID);
komplt1.setStatus(Status.PENDING_INTERNAL_ACTION);
komplt1.setAmne(ArendeAmne.KOMPLT);
komplt1.setPatientPersonId(PERSON_ID);
Arende komplt2 = buildArende(UUID.randomUUID().toString(), ENHET_ID);
komplt2.setStatus(Status.PENDING_INTERNAL_ACTION);
komplt2.setAmne(ArendeAmne.KOMPLT);
komplt2.setPatientPersonId(PERSON_ID);
Arende otherSubject = buildArende(UUID.randomUUID().toString(), ENHET_ID);
otherSubject.setStatus(Status.PENDING_INTERNAL_ACTION);
otherSubject.setAmne(ArendeAmne.AVSTMN);
otherSubject.setPatientPersonId(PERSON_ID);
when(arendeRepository.findByIntygsId(INTYG_ID)).thenReturn(Arrays.asList(fraga, komplt1, otherSubject, komplt2));
when(webcertUserService.isAuthorizedForUnit(anyString(), anyBoolean())).thenReturn(true);
WebCertUser webcertUser = createUser();
when(webcertUserService.getUser()).thenReturn(webcertUser);
List<ArendeConversationView> result = service.answerKomplettering(INTYG_ID, "svarstext");
verify(notificationService).sendNotificationForQAs(INTYG_ID, NotificationEvent.NEW_ANSWER_FROM_CARE);
verify(arendeRepository).findByIntygsId(INTYG_ID);
verify(arendeDraftService, times(3)).delete(eq(INTYG_ID), anyString());
assertTrue(result.stream().map(ArendeConversationView::getFraga).filter(f -> f.getAmne() == ArendeAmne.KOMPLT).allMatch(f -> f.getStatus() == Status.CLOSED));
assertNotNull(result.stream().map(ArendeConversationView::getSvar).filter(Objects::nonNull).map(ArendeView::getInternReferens).collect(MoreCollectors.onlyElement()));
}
use of se.inera.intyg.webcert.web.service.certificatesender.CertificateSenderException in project webcert by sklintyg.
the class IntygServiceImpl method revokeIntyg.
/*
* (non-Javadoc)
*
* @see se.inera.intyg.webcert.web.service.intyg.IntygService#revokeIntyg(java.lang.String, java.lang.String)
*/
@Override
public IntygServiceResult revokeIntyg(String intygsId, String intygsTyp, String revokeMessage, String reason) {
LOG.debug("Attempting to revoke intyg {}", intygsId);
IntygContentHolder intyg = getIntygData(intygsId, intygsTyp, false);
verifyEnhetsAuth(intyg.getUtlatande(), true);
verifyIsSigned(intyg.getStatuses());
if (intyg.isRevoked()) {
LOG.debug("Certificate with id '{}' is already revoked", intygsId);
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INVALID_STATE, "Certificate is already revoked");
}
try {
certificateSenderService.revokeCertificate(intygsId, modelFacade.getRevokeCertificateRequest(intygsTyp, intyg.getUtlatande(), IntygConverterUtil.buildHosPersonalFromWebCertUser(webCertUserService.getUser(), null), revokeMessage), intygsTyp);
whenSuccessfulRevoke(intyg.getUtlatande(), reason);
return IntygServiceResult.OK;
} catch (CertificateSenderException | ModuleException | IntygModuleFacadeException e) {
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.UNKNOWN_INTERNAL_PROBLEM, e.getMessage());
}
}
use of se.inera.intyg.webcert.web.service.certificatesender.CertificateSenderException in project webcert by sklintyg.
the class ArendeServiceImpl method processOutgoingMessage.
private Arende processOutgoingMessage(Arende arende, NotificationEvent notificationEvent) {
Arende saved = arendeRepository.save(arende);
monitoringLog.logArendeCreated(arende.getIntygsId(), arende.getIntygTyp(), arende.getEnhetId(), arende.getAmne(), arende.getSvarPaId() != null);
updateRelated(arende);
SendMessageToRecipientType request = SendMessageToRecipientTypeBuilder.build(arende, webcertUserService.getUser(), sendMessageToFKLogicalAddress);
// Send to recipient
try {
certificateSenderService.sendMessageToRecipient(arende.getIntygsId(), SendMessageToRecipientTypeConverter.toXml(request));
} catch (JAXBException | CertificateSenderException e) {
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INTERNAL_PROBLEM, e.getMessage());
}
sendNotification(saved, notificationEvent);
return saved;
}
use of se.inera.intyg.webcert.web.service.certificatesender.CertificateSenderException in project webcert by sklintyg.
the class IntygServiceStoreTest method testStoreIntygThrowsCertificateSenderException.
@Test(expected = WebCertServiceException.class)
public void testStoreIntygThrowsCertificateSenderException() throws Exception {
doThrow(new CertificateSenderException("")).when(certificateSenderService).storeCertificate(eq(INTYG_ID), eq(INTYG_TYP_FK), anyString());
intygService.storeIntyg(createUtkast());
}
use of se.inera.intyg.webcert.web.service.certificatesender.CertificateSenderException in project webcert by sklintyg.
the class IntygServiceImpl method sendIntygToCertificateSender.
protected IntygServiceResult sendIntygToCertificateSender(SendIntygConfiguration sendConfig, Utlatande intyg, boolean delay) {
String intygsId = intyg.getId();
String recipient = sendConfig.getRecipient();
String intygsTyp = intyg.getTyp();
HoSPersonal skickatAv = IntygConverterUtil.buildHosPersonalFromWebCertUser(webCertUserService.getUser(), null);
try {
LOG.debug("Sending intyg {} of type {} to recipient {}", intygsId, intygsTyp, recipient);
// Ask the certificateSenderService to post a 'send' message onto the queue.
certificateSenderService.sendCertificate(intygsId, intyg.getGrundData().getPatient().getPersonId(), objectMapper.writeValueAsString(skickatAv), recipient, delay);
// Notify stakeholders when a certificate is sent
notificationService.sendNotificationForIntygSent(intygsId);
return IntygServiceResult.OK;
} catch (WebServiceException wse) {
LOG.error("An WebServiceException occured when trying to send intyg: " + intygsId, wse);
return IntygServiceResult.FAILED;
} catch (RuntimeException e) {
LOG.error("Module problems occured when trying to send intyg " + intygsId, e);
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.MODULE_PROBLEM, e);
} catch (JsonProcessingException e) {
LOG.error("Error writing skickatAv as string when trying to send intyg " + intygsId, e);
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.MODULE_PROBLEM, e);
} catch (CertificateSenderException e) {
throw new WebCertServiceException(WebCertServiceErrorCodeEnum.MODULE_PROBLEM, e);
}
}
Aggregations