Verifiering av BOSDAT, Boende

Detta villkor är uppfyllt... ...om denna SQL... ...returnerar ett antal som ej överstiger gränsvärdet Antal Gränsvärde Kommentar
För sista boendeposten där sluttypen är död ska dödsdatumet överensstämma med PERSON. Finns det personer där detta inte stämmer?
with temp as (
select b.*, p.doddat,
  dense_rank() over(
        partition by b.ddbid
        order by b.bonr desc) ranknr
from k137.boende b
left join sv.person p on p.ddbid = b.ddbid
)
select count(*)
from temp
where ranknr = 1
  and bostyp = 2
  and bosdat != doddat
      
OK 0 0
Finns det 10 eller fler personer där slutåret för posten är större än personens dödsår?
select count(*)
 from k137.boende b
 left join sv.person p on p.ddbid = b.ddbid
where bosdat/10000 > doddat/10000
  and doddat > 0
      
OK 0 10
Finns det 10 eller fler personer där slutåret för posten är mindre än personens födelseår?
Sätter marginal på ETT år då det i källorna finns några fall som släpar efter.
select count(*)
 from k137.boende b
 left join sv.person p on p.ddbid = b.ddbid
where bosdat/10000 < foddat/10000 - 1
      
OK 0 10

Stickprov

Data från källtabeller hämtas med följande SQL-koden nedan. Den hämtar information om barn och mor.
with temp as (
select ddbid1 ddbid_barn, ddbid2 ddbid_mor
from sv.relation
where rtyp = 2 and foraldind = 1
and ddbid1 = 9210913
),
temp2 as (
select 'BARN' relation, ddbid_barn ddbid
from temp
union
select 'MOR' relation, ddbid_mor ddbid
from temp
)
select ddb.nofrs(n.postnr) nofrs, t.relation, t.ddbid, n.MATERIALTYP, i.postnr,
h.nobtyp, h.nobdat, h.nosdat, h.nostyp,
p.foddat foddat_p, p.dopdat dopdat_p,  p.doddat doddat_p, p.begdat begdat_p
from temp2 t
left join sv.individ i on i.ddbid = t.ddbid
left join sv.person p on p.ddbid = t.ddbid
join sv.notering n on i.postnr = n.postnr
left join sv.hl h on h.postnr = n.postnr
left join reg.kbsid ks on ks.kbsidid = n.kbsidid
where materialtyp in (1,3,6) and individtyp = 0
order by relation, nobdat, nosdat,p.foddat,p.doddat
Data från boendetabellen hämtas med följande SQL-koden nedan. Den hämtar information om barn och mor.
with temp as (
select ddbid1 ddbid_barn, ddbid2 ddbid_mor
from sv.relation
where rtyp = 2 and foraldind = 1
and ddbid1 = 9210913
),
temp2 as (
select 'BARN' relation, ddbid_barn ddbid
from temp
union
select 'MOR' relation, ddbid_mor ddbid
from temp
)
select *
from temp2 t
left join k137.boende i on i.ddbid = t.ddbid
order by relation, bonr

Barnet har dödsålder 4 dagar och saknar HL-notering. Mamman har HL-notering vid barnets födelse.

Personen har följande data:

Källdata

NOFRSRELATIONDDBIDMATERIALTYPPOSTNRNOBTYPNOBDATNOSDATNOSTYPFODDAT_PDOPDAT_PDODDAT_PBEGDAT_P
83350BARN92109133966410118280000182806031828052418281226
83350BARN92109136968343318280000182806031828052418281226
83350MOR4862639196534082178900001794000011789000001869102418691128
83350MOR4862639196258991179500001805000031789000001869102418691128
83350MOR4862639196223353180500001814000031789000001869102418691128
83350MOR4862639196217243181400001827000011789000001869102418691128
83350MOR4862639196479971182800001840000011789000001869102418691128
83350MOR4862639196504921184100001851000011789000001869102418691128
83350MOR4862639196434691185100001860000031789000001869102418691128
83350MOR4862639196411043186100001869102421789000001869102418691128
83350MOR4862639696851401789000001869102418691128

BOENDE- förväntat

Barnets boende ska följa mammans under barnets levnadstid. Detta blir dock ett negativt intervall.
RELATIONDDBIDBOREGPREFIXDDBIDBONRBOBTYPBOBDATBOSTYPBOSDAT
BARN9210913NIL92109131218280530218280000
MOR4862639NIL48626391217890000218691024

Kontroll!

Detta villkor är uppfyllt om denna SQL-sats returnerar
Barnet ska ha en notering i BOENDE.
select count(*)
from k137.boende
where ddbid in (9210913)
        
1
För denna notering i BOENDE ska följande gälla:
select count(*)
from k137.boende
where ddbid in (9210913)
 and boregprefix = 'NIL'
 and bonr = 1
 and bobtyp = 2
 and bobdat = 18280530
 and bostyp = 2
 and bosdat = 18280000
            
1
För noteringen i BOENDE ska BOBTYP vara 2.
select bobtyp
from k137.boende
where ddbid in (9210913)
 and bonr = 1
            
2
För noteringen i BOENDE ska BOBDAT vara 18280530.
select bobdat
from k137.boende
where ddbid in (9210913)
 and bonr = 1
            
18280530
För noteringen i BOENDE ska BOSTYP vara 2.
select bostyp
from k137.boende
where ddbid in (9210913)
 and bonr = 1
            
2
För noteringen i BOENDE ska BOSDAT vara 18280000.
select bosdat
from k137.boende
where ddbid in (9210913)
 and bonr = 1
            
18280000