Search in sources :

Example 71 with Arende

use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.

the class ArendeServiceImpl method createMessage.

@Override
public ArendeConversationView createMessage(String intygId, ArendeAmne amne, String rubrik, String meddelande) {
    if (!VALID_VARD_AMNEN.contains(amne)) {
        throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INTERNAL_PROBLEM, "Invalid Amne " + amne + " for new question from vard!");
    }
    Utkast utkast = utkastRepository.findOne(intygId);
    validateArende(intygId, utkast);
    verifyEnhetsAuth(utkast.getEnhetsId(), false);
    Arende arende = ArendeConverter.createArendeFromUtkast(amne, rubrik, meddelande, utkast, LocalDateTime.now(systemClock), webcertUserService.getUser().getNamn(), hsaEmployeeService);
    Arende saved = processOutgoingMessage(arende, NotificationEvent.NEW_QUESTION_FROM_CARE);
    arendeDraftService.delete(intygId, null);
    return arendeViewConverter.convertToArendeConversationView(saved, null, null, new ArrayList<>(), null);
}
Also used : Utkast(se.inera.intyg.webcert.persistence.utkast.model.Utkast) MedicinsktArende(se.inera.intyg.webcert.persistence.arende.model.MedicinsktArende) Arende(se.inera.intyg.webcert.persistence.arende.model.Arende) WebCertServiceException(se.inera.intyg.webcert.common.service.exception.WebCertServiceException)

Example 72 with Arende

use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.

the class ArendeServiceImpl method answer.

@Override
public ArendeConversationView answer(String svarPaMeddelandeId, String meddelande) {
    if (Strings.isNullOrEmpty(meddelande)) {
        throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INTERNAL_PROBLEM, "SvarsText cannot be empty!");
    }
    Arende svarPaMeddelande = lookupArende(svarPaMeddelandeId);
    verifyEnhetsAuth(svarPaMeddelande.getEnhetId(), false);
    if (!Status.PENDING_INTERNAL_ACTION.equals(svarPaMeddelande.getStatus())) {
        throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INVALID_STATE, "Arende with id " + svarPaMeddelandeId + " has invalid state for saving answer(" + svarPaMeddelande.getStatus() + ")");
    }
    // Implement Business Rule FS-007
    if (ArendeAmne.PAMINN.equals(svarPaMeddelande.getAmne())) {
        throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INTERNAL_PROBLEM, "Arende with id " + svarPaMeddelandeId + " has invalid Amne(" + svarPaMeddelande.getAmne() + ") for saving answer");
    }
    if (ArendeAmne.KOMPLT.equals(svarPaMeddelande.getAmne())) {
        throw new WebCertServiceException(WebCertServiceErrorCodeEnum.INTERNAL_PROBLEM, "Arende with id " + svarPaMeddelandeId + " has invalid Amne(" + svarPaMeddelande.getAmne() + ") for saving answer");
    }
    Arende arende = ArendeConverter.createAnswerFromArende(meddelande, svarPaMeddelande, LocalDateTime.now(systemClock), webcertUserService.getUser().getNamn());
    Arende saved = processOutgoingMessage(arende, NotificationEvent.NEW_ANSWER_FROM_CARE);
    arendeDraftService.delete(svarPaMeddelande.getIntygsId(), svarPaMeddelandeId);
    return arendeViewConverter.convertToArendeConversationView(svarPaMeddelande, saved, null, arendeRepository.findByPaminnelseMeddelandeId(svarPaMeddelandeId), null);
}
Also used : MedicinsktArende(se.inera.intyg.webcert.persistence.arende.model.MedicinsktArende) Arende(se.inera.intyg.webcert.persistence.arende.model.Arende) WebCertServiceException(se.inera.intyg.webcert.common.service.exception.WebCertServiceException)

Example 73 with Arende

use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.

the class ArendeServiceImpl method getLatestMeddelandeIdForCurrentCareUnit.

@Override
public String getLatestMeddelandeIdForCurrentCareUnit(String intygsId) {
    WebCertUser user = webcertUserService.getUser();
    List<Arende> arendeList = filterKompletteringar(getArendeForIntygId(intygsId, user));
    return getLatestKomplArende(intygsId, arendeList).getMeddelandeId();
}
Also used : MedicinsktArende(se.inera.intyg.webcert.persistence.arende.model.MedicinsktArende) Arende(se.inera.intyg.webcert.persistence.arende.model.Arende) WebCertUser(se.inera.intyg.webcert.web.service.user.dto.WebCertUser)

Example 74 with Arende

use of se.inera.intyg.webcert.persistence.arende.model.Arende in project webcert by sklintyg.

the class ArendeServiceImpl method answerKomplettering.

@Override
@Transactional
public List<ArendeConversationView> answerKomplettering(final String intygsId, final String meddelande) {
    Preconditions.checkArgument(!Strings.isNullOrEmpty(intygsId));
    Preconditions.checkArgument(!Strings.isNullOrEmpty(meddelande));
    WebCertUser user = webcertUserService.getUser();
    List<Arende> allArende = getArendeForIntygId(intygsId, user);
    List<Arende> arendeList = filterKompletteringar(allArende);
    Arende latestKomplArende = getLatestKomplArende(intygsId, arendeList);
    verifyEnhetsAuth(latestKomplArende.getEnhetId(), false);
    boolean verified = authoritiesValidator.given(user, latestKomplArende.getIntygTyp()).privilege(AuthoritiesConstants.PRIVILEGE_BESVARA_KOMPLETTERINGSFRAGA).isVerified();
    if (!verified) {
        throw new WebCertServiceException(WebCertServiceErrorCodeEnum.AUTHORIZATION_PROBLEM, "Arende with id " + latestKomplArende.getId() + " and amne (" + latestKomplArende.getAmne() + ") can only be answered by user that is Lakare");
    }
    Arende answer = ArendeConverter.createAnswerFromArende(meddelande, latestKomplArende, LocalDateTime.now(systemClock), user.getNamn());
    Arende saved = processOutgoingMessage(answer, NotificationEvent.NEW_ANSWER_FROM_CARE);
    arendeList.stream().forEach(this::closeArendeAsHandled);
    allArende.add(saved);
    return getArendeConversationViewList(intygsId, allArende);
}
Also used : MedicinsktArende(se.inera.intyg.webcert.persistence.arende.model.MedicinsktArende) Arende(se.inera.intyg.webcert.persistence.arende.model.Arende) WebCertServiceException(se.inera.intyg.webcert.common.service.exception.WebCertServiceException) WebCertUser(se.inera.intyg.webcert.web.service.user.dto.WebCertUser) Transactional(org.springframework.transaction.annotation.Transactional)

Example 75 with Arende

use of se.inera.intyg.webcert.persistence.arende.model.Arende 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;
}
Also used : JAXBException(javax.xml.bind.JAXBException) MedicinsktArende(se.inera.intyg.webcert.persistence.arende.model.MedicinsktArende) Arende(se.inera.intyg.webcert.persistence.arende.model.Arende) SendMessageToRecipientType(se.riv.clinicalprocess.healthcond.certificate.sendMessageToRecipient.v2.SendMessageToRecipientType) WebCertServiceException(se.inera.intyg.webcert.common.service.exception.WebCertServiceException) CertificateSenderException(se.inera.intyg.webcert.web.service.certificatesender.CertificateSenderException)

Aggregations

Arende (se.inera.intyg.webcert.persistence.arende.model.Arende)125 MedicinsktArende (se.inera.intyg.webcert.persistence.arende.model.MedicinsktArende)95 Test (org.junit.Test)88 Filter (se.inera.intyg.webcert.persistence.model.Filter)32 LocalDateTime (java.time.LocalDateTime)20 Utkast (se.inera.intyg.webcert.persistence.utkast.model.Utkast)20 Matchers.anyString (org.mockito.Matchers.anyString)17 WebCertServiceException (se.inera.intyg.webcert.common.service.exception.WebCertServiceException)16 WebCertUser (se.inera.intyg.webcert.web.service.user.dto.WebCertUser)15 ArendeConversationView (se.inera.intyg.webcert.web.web.controller.api.dto.ArendeConversationView)14 ArendeAmne (se.inera.intyg.webcert.persistence.arende.model.ArendeAmne)12 QueryFragaSvarParameter (se.inera.intyg.webcert.web.service.fragasvar.dto.QueryFragaSvarParameter)11 QueryFragaSvarResponse (se.inera.intyg.webcert.web.service.fragasvar.dto.QueryFragaSvarResponse)11 ArendeView (se.inera.intyg.webcert.web.web.controller.api.dto.ArendeView)8 ImmutableList (com.google.common.collect.ImmutableList)6 Signatur (se.inera.intyg.webcert.persistence.utkast.model.Signatur)6 NotificationEvent (se.inera.intyg.webcert.web.service.notification.NotificationEvent)6 ArendeListItem (se.inera.intyg.webcert.web.web.controller.api.dto.ArendeListItem)6 SendMessageToRecipientType (se.riv.clinicalprocess.healthcond.certificate.sendMessageToRecipient.v2.SendMessageToRecipientType)6 ArrayList (java.util.ArrayList)5