技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
behandlingsresultat【数据与研究】Expert knowledge of Behandlingsresultat (treatment result) domain in melosys-api. Use when: (1) Understanding result types and their meaning (FASTSATT_LOVVALGSLAND, MEDLEM_I_FOLKETRYGDEN, etc.), (2) Working with periods - Lovvalgsperiode, Medlemskapsperiode, Anmodningsperiode, Utpekingsperiode, (3) Debugging vedtak/decision metadata, criteria evaluat…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Behandlingsresultat captures the outcome of a Behandling, including which law applies, membership status, periods, decision metadata, and eligibility criteria results.
Behandling (1)
↓ OneToOne
Behandlingsresultat
├─ VedtakMetadata (decision date, appeal deadline)
├─ Lovvalgsperiode* (law choice periods)
│ └─ Trygdeavgiftsperiode*
├─ Medlemskapsperiode* (membership periods)
│ └─ Trygdeavgiftsperiode*
├─ Anmodningsperiode* (Article 16 request periods)
│ └─ AnmodningsperiodeSvar
├─ Utpekingsperiode* (designation periods)
├─ Vilkaarsresultat* (eligibility criteria)
├─ Kontrollresultat* (verification results)
├─ Avklartefakta* (clarified facts)
└─ HelseutgiftDekkesPeriode (EEA pensioner health coverage)
| Attribute | Type | Description |
|---|---|---|
type | Behandlingsresultattyper | IKKE_FASTSATT, FASTSATT_LOVVALGSLAND, MEDLEM_I_FOLKETRYGDEN, etc. |
behandlingsmåte | Behandlingsmaate | AUTOMATISERT, MANUELT, DELVIS_AUTOMATISERT |
fastsattAvLand | Land_iso2 | Country that determined the result |
vedtakMetadata | VedtakMetadata | Decision date and appeal deadline |
begrunnelseFritekst | String? | Free-text justification |
| Type | Description | Use Case |
|---|---|---|
IKKE_FASTSATT | Not determined | Initial state |
FASTSATT_LOVVALGSLAND | Law choice country set | EU/EEA lovvalg |
MEDLEM_I_FOLKETRYGDEN | Member of Norwegian NI | FTRL membership |
UNNTATT_MEDLEMSKAP | Exempt from membership | Non-member |
AVSLAG_SØKNAD | Application denied | Rejection |
OPPHØRT | Membership terminated | Termination |
ANMODNING_OM_UNNTAK | Article 16 exception request | Sent to foreign authority |
REGISTRERT_UNNTAK | Registered exception | Exception approved |
HENLEGGELSE | Case dismissed | Dropped case |
FERDIGBEHANDLET | Completed | Generic completion |
MEDHOLD | Appeal upheld | Klage result |
OMGJORT | Decision reversed | Klage result |
Determines which country's social security law applies.
lovvalgsperiode.lovvalgsland // Land_iso2 - chosen country
lovvalgsperiode.bestemmelse // LovvalgBestemmelse - regulation (Art. 11, 13, etc.)
lovvalgsperiode.innvilgelsesresultat // INNVILGET, AVSLAATT, OPPHØRT
lovvalgsperiode.medlemskapstype // PLIKTIG, FRIVILLIG, UNNTATT
lovvalgsperiode.dekning // Trygdedekninger
Membership in Norwegian National Insurance (folketrygden).
medlemskapsperiode.innvilgelsesresultat // INNVILGET, AVSLAATT, OPPHØRT
medlemskapsperiode.medlemskapstype // PLIKTIG, FRIVILLIG, UNNTATT
medlemskapsperiode.trygdedekning // Coverage type
medlemskapsperiode.bestemmelse // Membership-specific provision
Request for exception under EU Regulation Article 16.
anmodningsperiode.sendtUtland // Sent to foreign authority
anmodningsperiode.anmodetAv // Requested by
anmodningsperiode.anmodningsperiodeSvar // Response from authority
Provisional designation of applicable law (EU/EFTA).
// Basic fetch
val resultat = behandlingsresultatService.hentBehandlingsresultat(behandlingId)
// With specific relations loaded
val resultat = behandlingsresultatService.hentBehandlingsresultatMedAnmodningsperioder(behandlingId)
val resultat = behandlingsresultatService.hentResultatMedMedlemskapOgLovvalg(behandlingId)
resultat.erInnvilgelse() // Is approval (lovvalg)
resultat.erAvslag() // Is denial
resultat.erOpphørt() // Is terminated
resultat.erAnmodningOmUnntak() // Is Article 16 request
resultat.erUtpeking() // Is designation
resultat.erAutomatisert() // Was auto-processed
resultat.erRegistrertUnntak() // Is registered exception
// Single period (throws if multiple exist)
val lovvalg = resultat.hentLovvalgsperiode()
val anmodning = resultat.hentAnmodningsperiode()
// Optional access
val lovvalg: Optional<Lovvalgsperiode> = resultat.finnLovvalgsperiode()
// Validated period (any type)
val periode: PeriodeOmLovvalg? = resultat.finnValidertPeriodeOmLovvalg()
// Collections
val medlemsperioder = resultat.medlemskapsperioder // Set<Medlemskapsperiode>
// Get all charge-liable periods
val avgiftsPerioder = resultat.finnAvgiftspliktigPerioder()
// Check overlap with tax year
resultat.harInnvilgetAvgiftspliktigPeriodeSomOverlapperMedÅr(2024)
// Get all charge periods
val trygdeavgift = resultat.trygdeavgiftsperioder
resultat.harVedtak() // Has decision metadata
// Set decision
resultat.settVedtakMetadata(
vedtaksdato = Instant.now(),
vedtakKlagefrist = LocalDate.now().plusWeeks(6)
)
// Clear all periods and clarifications
behandlingsresultatService.tømBehandlingsresultat(resultat)
// Clear only membership periods
behandlingsresultatService.tømMedlemskapsperioder(resultat)
Implemented by: Lovvalgsperiode, Anmodningsperiode, Utpekingsperiode
interface PeriodeOmLovvalg {
val lovvalgsland: Land_iso2
val bestemmelse: LovvalgBestemmelse?
// ...
}
Implemented by: Lovvalgsperiode, Medlemskapsperiode
interface AvgiftspliktigPeriode {
val trygdeavgiftsperioder: Set<Trygdeavgiftsperiode>
// ...
}
hentBehandlingsresultat() - Fetch by IDlagreNyttBehandlingsresultat() - Create (initial: IKKE_FASTSATT, MANUELT)oppdaterBehandlingsresultattype() - Update typetømBehandlingsresultat() - Clear for reprocessingoppdaterBehandlingsresultattypeOgAvsluttFagsakOgBehandling() - Set type with validation and close casereplikerBehandlingsresultat() - Clone result for replicated treatmentSome methods assume only one period of a type exists:
// Throws if multiple lovvalgsperioder exist
resultat.hentLovvalgsperiode()
// Safe alternative
resultat.finnLovvalgsperiode() // Returns Optional
Business logic depends heavily on type and fagsak.erLovvalg():
// Different period collections based on case type
val perioder = if (fagsak.erLovvalg()) {
resultat.lovvalgsperioder
} else {
resultat.medlemskapsperioder
}
All child entities use CascadeType.ALL with orphanRemoval = true.
Removing a period from the collection deletes it from the database.
Use specific service methods to optimize loading:
// Only loads anmodningsperioder
hentBehandlingsresultatMedAnmodningsperioder()
// Loads both membership and lovvalg
hentResultatMedMedlemskapOgLovvalg()
SELECT br.* FROM behandlingsresultat br
WHERE br.id = :behandlingId;
-- Lovvalgsperioder
SELECT * FROM lovvalgsperiode WHERE behandlingsresultat_id = :id;
-- Medlemskapsperioder
SELECT * FROM medlemskapsperiode WHERE behandlingsresultat_id = :id;
-- Anmodningsperioder
SELECT * FROM anmodningsperiode WHERE behandlingsresultat_id = :id;
SELECT br.id, b.status
FROM behandlingsresultat br
JOIN behandling b ON b.id = br.id
LEFT JOIN vedtak_metadata vm ON vm.behandlingsresultat_id = br.id
WHERE vm.id IS NULL
AND br.type != 'IKKE_FASTSATT';
SELECT br.id, COUNT(*) as period_count
FROM behandlingsresultat br
JOIN lovvalgsperiode lp ON lp.behandlingsresultat_id = br.id
GROUP BY br.id
HAVING COUNT(*) > 1;