In [61]:
def create_hetus(ddmmyyyy, gender):
# generator function to yield valid HETU numbers
# ppkkvvyzzzq
# pp - day
# kk - month
# vv - year
# y - century (+ for 1800, - for 1900, A for 2000)
# zzz - individual number (even for females, odd for males, values of 002-899)
# q - checkdigit, calculated as t = (ppkkvvzzz mod 31) as q = t~[0-9, A-Y]
checksum = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", \
"A", "B", "C", "D", "E", "F", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "U", "V", "W", "X", "Y"]
hetus = []
index = 0
if gender == "m":
index += 1
y = 0
ddmmyy = str(ddmmyyyy)[0:4] + str(ddmmyyyy)[6:]
if int(ddmmyyyy[4:6]) == 18:
y = "+"
elif int(ddmmyyyy[4:6]) == 19:
y = "-"
elif int(ddmmyyyy[4:6]) >= 20:
y = "A"
while index < 900:
index += 2
zzz = str("%03d" % index)
tmp = int(str(ddmmyy) + str(zzz))
q = checksum[tmp % 31]
het = str(ddmmyy) + str(y) + str(zzz) + str(q)
hetus.append(het)
return hetus
In [62]:
create_hetus("30061988", "male")
Out[62]:
In [41]:
def zzz_estimator():
# bY = total births for that year
# bD = bY / 365
In [ ]: