Search in sources :

Example 1 with Status

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

the class FragaSvarRepositoryImpl method createPredicate.

private Predicate createPredicate(Filter filter, CriteriaBuilder builder, Root<FragaSvar> root) {
    Predicate pred = builder.conjunction();
    pred = builder.and(pred, root.get("vardperson").get("enhetsId").in(filter.getEnhetsIds()));
    pred = builder.and(pred, root.get("intygsReferens").get("intygsTyp").in(filter.getIntygsTyper()));
    if (filter.isQuestionFromFK()) {
        pred = builder.and(pred, builder.equal(root.get("frageStallare"), "FK"));
    }
    if (filter.isQuestionFromWC()) {
        pred = builder.and(pred, builder.equal(root.get("frageStallare"), "WC"));
    }
    if (!Strings.isNullOrEmpty(filter.getHsaId())) {
        pred = builder.and(pred, builder.equal(root.get("vardperson").get("hsaId"), filter.getHsaId()));
    }
    if (filter.getVidarebefordrad() != null) {
        pred = builder.and(pred, builder.equal(root.<Boolean>get("vidarebefordrad"), filter.getVidarebefordrad()));
    }
    if (filter.getChangedFrom() != null) {
        pred = builder.and(pred, builder.greaterThanOrEqualTo(root.<LocalDateTime>get("senasteHandelse"), filter.getChangedFrom()));
    }
    if (filter.getChangedTo() != null) {
        pred = builder.and(pred, builder.lessThan(root.<LocalDateTime>get("senasteHandelse"), filter.getChangedTo()));
    }
    if (filter.getReplyLatest() != null) {
        pred = builder.and(pred, builder.lessThanOrEqualTo(root.<LocalDate>get("sistaDatumForSvar"), filter.getReplyLatest()));
    }
    switch(filter.getVantarPa()) {
        case ALLA_OHANTERADE:
            pred = builder.and(pred, builder.notEqual(root.<Status>get("status"), Status.CLOSED));
            break;
        case HANTERAD:
            pred = builder.and(pred, builder.equal(root.<Status>get("status"), Status.CLOSED));
            break;
        case KOMPLETTERING_FRAN_VARDEN:
            pred = builder.and(pred, builder.equal(root.<Status>get("status"), Status.PENDING_INTERNAL_ACTION), builder.equal(root.<Amne>get("amne"), Amne.KOMPLETTERING_AV_LAKARINTYG));
            break;
        case SVAR_FRAN_VARDEN:
            Predicate careReplyAmnePred = builder.or(builder.equal(root.<Amne>get("amne"), Amne.OVRIGT), builder.equal(root.<Amne>get("amne"), Amne.ARBETSTIDSFORLAGGNING), builder.equal(root.<Amne>get("amne"), Amne.AVSTAMNINGSMOTE), builder.equal(root.<Amne>get("amne"), Amne.KONTAKT));
            pred = builder.and(pred, builder.equal(root.<Status>get("status"), Status.PENDING_INTERNAL_ACTION), careReplyAmnePred);
            break;
        case SVAR_FRAN_FK:
            pred = builder.and(pred, builder.equal(root.<Status>get("status"), Status.PENDING_EXTERNAL_ACTION), builder.notEqual(root.<Amne>get("amne"), Amne.MAKULERING_AV_LAKARINTYG));
            break;
        case MARKERA_SOM_HANTERAD:
            Predicate amnePred1;
            amnePred1 = builder.and(builder.equal(root.<Status>get("status"), Status.PENDING_INTERNAL_ACTION), builder.equal(root.<Amne>get("amne"), Amne.MAKULERING_AV_LAKARINTYG));
            Predicate amnePred2;
            amnePred2 = builder.and(builder.equal(root.<Status>get("status"), Status.PENDING_INTERNAL_ACTION), builder.equal(root.<Amne>get("amne"), Amne.PAMINNELSE));
            pred = builder.and(pred, builder.or(amnePred1, amnePred2, builder.equal(root.<Status>get("status"), Status.ANSWERED)));
            break;
        case ALLA:
            break;
    }
    return pred;
}
Also used : Status(se.inera.intyg.webcert.persistence.model.Status) Amne(se.inera.intyg.webcert.persistence.fragasvar.model.Amne) Predicate(javax.persistence.criteria.Predicate)

Example 2 with Status

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

the class ArendeServiceImpl method determineNotificationEvent.

private NotificationEvent determineNotificationEvent(Arende arende, boolean arendeIsAnswered) {
    FrageStallare frageStallare = FrageStallare.getByKod(arende.getSkickatAv());
    Status arendeSvarStatus = arende.getStatus();
    if (FrageStallare.FORSAKRINGSKASSAN.equals(frageStallare)) {
        if (Status.PENDING_INTERNAL_ACTION.equals(arendeSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_RECIPIENT_HANDLED;
        } else if (Status.CLOSED.equals(arendeSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_RECIPIENT_UNHANDLED;
        }
    }
    if (FrageStallare.WEBCERT.equals(frageStallare)) {
        if (Status.ANSWERED.equals(arendeSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_CARE_WITH_ANSWER_HANDLED;
        } else if (Status.CLOSED.equals(arendeSvarStatus) && arendeIsAnswered) {
            return NotificationEvent.QUESTION_FROM_CARE_WITH_ANSWER_UNHANDLED;
        } else if (Status.CLOSED.equals(arendeSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_CARE_UNHANDLED;
        } else {
            return NotificationEvent.QUESTION_FROM_CARE_HANDLED;
        }
    }
    return null;
}
Also used : Status(se.inera.intyg.webcert.persistence.model.Status) SekretessStatus(se.inera.intyg.webcert.common.model.SekretessStatus) FrageStallare(se.inera.intyg.webcert.web.service.fragasvar.dto.FrageStallare)

Example 3 with Status

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

the class ArendeListItemConverterTest method testConvertArende.

@Test
public void testConvertArende() {
    final ArendeAmne amne = ArendeAmne.KONTKT;
    final String intygsId = "intygsId";
    final String intygTyp = "luse";
    final String meddelandeId = "meddelandeId";
    final String patientPersonId = "patientPersonId";
    final String signeratAvName = "signeratAvName";
    final String skickatAv = "skickatAv";
    final LocalDateTime skickatTidpunkt = LocalDateTime.now();
    final Status status = Status.ANSWERED;
    final Boolean vidarebefordrad = Boolean.TRUE;
    final String enhetsnamn = "enhetsnamn";
    final String vardgivarnamn = "vardgivarnamn";
    Arende arende = createArende(amne, intygsId, intygTyp, meddelandeId, patientPersonId, signeratAvName, skickatAv, skickatTidpunkt, status, vidarebefordrad, enhetsnamn, vardgivarnamn);
    ArendeListItem result = ArendeListItemConverter.convert(arende);
    assertEquals(amne.name(), result.getAmne());
    assertEquals(intygsId, result.getIntygId());
    assertEquals(intygTyp, result.getIntygTyp());
    assertEquals(meddelandeId, result.getMeddelandeId());
    assertEquals(patientPersonId, result.getPatientId());
    assertEquals(signeratAvName, result.getSigneratAvNamn());
    assertEquals(skickatAv, result.getFragestallare());
    assertEquals(skickatTidpunkt, result.getReceivedDate());
    assertEquals(status, result.getStatus());
    assertEquals(true, result.isVidarebefordrad());
    assertEquals(enhetsnamn, result.getEnhetsnamn());
    assertEquals(vardgivarnamn, result.getVardgivarnamn());
}
Also used : LocalDateTime(java.time.LocalDateTime) Status(se.inera.intyg.webcert.persistence.model.Status) ArendeListItem(se.inera.intyg.webcert.web.web.controller.api.dto.ArendeListItem) ArendeAmne(se.inera.intyg.webcert.persistence.arende.model.ArendeAmne) Arende(se.inera.intyg.webcert.persistence.arende.model.Arende) Test(org.junit.Test)

Example 4 with Status

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

the class ArendeListItemConverterTest method testConvert.

@Test
public void testConvert() {
    final String fragestallare = "fragestallare";
    final String intygId = "intygId";
    final String intygTyp = "intygTyp";
    final long internReferens = 13;
    final LocalDateTime senasteHandelse = LocalDateTime.now();
    final String signeratAv = "signeratAv";
    final String enhetsnamn = "enhetsnamn";
    final String vardgivarnamn = "vardgivarnamn";
    final Amne amne = Amne.AVSTAMNINGSMOTE;
    final boolean vidarebefordrad = false;
    final Status status = Status.PENDING_INTERNAL_ACTION;
    FragaSvar fs = createFragaSvar(fragestallare, intygId, intygTyp, patientId, internReferens, senasteHandelse, signeratAv, enhetsnamn, vardgivarnamn, amne, vidarebefordrad, status);
    ArendeListItem arende = ArendeListItemConverter.convert(fs);
    assertNotNull(arende);
    assertEquals(fragestallare, arende.getFragestallare());
    assertEquals(intygId, arende.getIntygId());
    assertEquals(intygTyp, arende.getIntygTyp());
    assertEquals(patientId, arende.getPatientId());
    assertEquals(Long.toString(internReferens), arende.getMeddelandeId());
    assertEquals(senasteHandelse, arende.getReceivedDate());
    assertEquals(signeratAv, arende.getSigneratAvNamn());
    assertEquals(enhetsnamn, arende.getEnhetsnamn());
    assertEquals(vardgivarnamn, arende.getVardgivarnamn());
    assertEquals(ArendeAmne.AVSTMN.name(), arende.getAmne());
    assertEquals(vidarebefordrad, arende.isVidarebefordrad());
    assertEquals(status, arende.getStatus());
}
Also used : LocalDateTime(java.time.LocalDateTime) Status(se.inera.intyg.webcert.persistence.model.Status) ArendeListItem(se.inera.intyg.webcert.web.web.controller.api.dto.ArendeListItem) FragaSvar(se.inera.intyg.webcert.persistence.fragasvar.model.FragaSvar) Amne(se.inera.intyg.webcert.persistence.fragasvar.model.Amne) ArendeAmne(se.inera.intyg.webcert.persistence.arende.model.ArendeAmne) Test(org.junit.Test)

Example 5 with Status

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

the class FragaSvarServiceImpl method determineNotificationEvent.

private NotificationEvent determineNotificationEvent(FragaSvar fragaSvar) {
    FrageStallare frageStallare = FrageStallare.getByKod(fragaSvar.getFrageStallare());
    Status fragaSvarStatus = fragaSvar.getStatus();
    if (FrageStallare.FORSAKRINGSKASSAN.equals(frageStallare)) {
        if (Status.PENDING_INTERNAL_ACTION.equals(fragaSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_RECIPIENT_HANDLED;
        } else if (Status.CLOSED.equals(fragaSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_RECIPIENT_UNHANDLED;
        }
    }
    if (FrageStallare.WEBCERT.equals(frageStallare)) {
        if (Status.ANSWERED.equals(fragaSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_CARE_WITH_ANSWER_HANDLED;
        } else if (Status.CLOSED.equals(fragaSvarStatus) && !Strings.isNullOrEmpty(fragaSvar.getSvarsText())) {
            return NotificationEvent.QUESTION_FROM_CARE_WITH_ANSWER_UNHANDLED;
        } else if (Status.CLOSED.equals(fragaSvarStatus)) {
            return NotificationEvent.QUESTION_FROM_CARE_UNHANDLED;
        } else {
            return NotificationEvent.QUESTION_FROM_CARE_HANDLED;
        }
    }
    return null;
}
Also used : Status(se.inera.intyg.webcert.persistence.model.Status) SekretessStatus(se.inera.intyg.webcert.common.model.SekretessStatus) FrageStallare(se.inera.intyg.webcert.web.service.fragasvar.dto.FrageStallare)

Aggregations

Status (se.inera.intyg.webcert.persistence.model.Status)5 LocalDateTime (java.time.LocalDateTime)2 Test (org.junit.Test)2 SekretessStatus (se.inera.intyg.webcert.common.model.SekretessStatus)2 ArendeAmne (se.inera.intyg.webcert.persistence.arende.model.ArendeAmne)2 Amne (se.inera.intyg.webcert.persistence.fragasvar.model.Amne)2 FrageStallare (se.inera.intyg.webcert.web.service.fragasvar.dto.FrageStallare)2 ArendeListItem (se.inera.intyg.webcert.web.web.controller.api.dto.ArendeListItem)2 Predicate (javax.persistence.criteria.Predicate)1 Arende (se.inera.intyg.webcert.persistence.arende.model.Arende)1 FragaSvar (se.inera.intyg.webcert.persistence.fragasvar.model.FragaSvar)1