Enotna matična številka občana
Enotna matična številka občana (kratica EMŠO) je osebna identifikacijska številka v Republiki Sloveniji. EMŠO določi upravljavec centralnega registra prebivalstva (CRP) enotno za vse prebivalce Republike Slovenije, vključno s tujimi državljani. EMŠO je bil uveden leta 1976 v SFRJ in je še danes v uporabi v državah na območju bivše Jugoslavije vključno s Slovenijo. Hrvaška je ne uporablja od 1. 1. 2009 temveč zaradi pravice do zasebnosti uporablja negovoreči Osobni identifikacijski broj, ki ne vsebuje rojstnih podatkov.
EMŠO se vpisuje v osebne izkaznice, potne liste in druge javne listine.
Sestav EMŠO
[uredi | uredi kodo]EMŠO sestavlja trinajst števk (DDMMLLLRRZZZK), ki imajo naslednji pomen:
- od 1. do 7. števke: DDMMLLL - datum rojstva (dve mesti za dan, dve mesti za mesec in tri mesta za zadnje tri števke letnice rojstva)
- 8. in 9. števka: RR - številka registra[1]:
- 00-09 – tujci
- 10-19 – Bosna in Hercegovina
- 20-29 – Črna gora
- 30-39 – Hrvaška (33 - Zagreb)
- 40-49 – Makedonija
- 50-59 – Slovenija (uporabljena je samo 50)
- 60-69 – (Državljani z začasnim prebivališčem)
- 70-79 – Ožja Srbija (71 - Beograd)
- 80-89 – Pokrajina Vojvodina (80 - Novi Sad)
- 90-99 – Pokrajina Kosovo
- 10., 11. in 12. števka: ZZZ - zaporedna številka oziroma kombinacija spola in zaporedne številke za osebe, rojene istega dne (000-499 za moške in 500-999 za ženske)
- 13. števka: K - kontrolna števka, izračunana po modulu 11 (glej spodaj).
Če je EMŠO določena na napačen datum rojstva ali spol, jo upravljavec centralnega registra razveljavi in ponovno določi, razveljavljena EMŠO pa ostane v evidenci. Ob spremembah drugih osebnih podatkov oseba obdrži dodeljeno EMŠO. Razveljavljene EMŠO se ne sme dodeliti drugemu posamezniku.
Izračun kontrolne vsote
[uredi | uredi kodo]Postopek:
- prva številka EMŠO se pomnoži s 7
- druga številka EMŠO se pomnoži s 6
- tretja številka EMŠO se pomnoži s 5
- četrta številka EMŠO se pomnoži s 4
- peta številka EMŠO se pomnoži s 3
- šesta številka EMŠO se pomnoži z 2
- sedma številka EMŠO se pomnoži s 7
- osma številka EMŠO se pomnoži s 6
- deveta številka EMŠO se pomnoži s 5
- deseta številka EMŠO se pomnoži s 4
- enajsta številka EMŠO se pomnoži s 3
- dvanajsta številka EMŠO se pomnoži z 2.
Dobljeni zmnožki iz prvega odstavka se seštejejo. Seštevek se deli z enajst (delitev se omeji na celo število). Ostanek pri deljenju se odšteje od števila 11, razlika je kontrolna številka. Kontrolna številka je enomestna, ima lahko vrednost od 0 do 9. Če je ostanek pri deljenju 0, je kontrolna številka 0.
Kadar upravljavec CRP emšo določa in je ostanek pri deljenju enak 1, je razlika dvomestna in kontrolne številke ni mogoče izračunati. V takem primeru zaporedno število preskoči, vrednost zaporedne številke poveča za 1, izračun kontrolne številke pa ponovi po istem postopku. [2]
Excelova formula za preverjanje EMŠO
[uredi | uredi kodo]Če so v celici A1 podatki (prvih 12 števk EMŠO), lahko izračunamo kontrolno vsoto (zadnja števka) po formuli:
= IF(11-MOD((7*(MID(A1;1;1)+MID(A1;7;1)) + 6*(MID(A1;2;1)+MID(A1;8;1)) + 5*(MID(A1;3;1)+MID(A1;9;1)) + 4*(MID(A1;4;1)+MID(A1;10;1)) + 3*(MID(A1;5;1)+MID(A1;11;1)) + 2*(MID(A1;6;1)+MID(A1;12;1)));11) = 11; 0; 11-MOD((7*(MID(A1;1;1)+MID(A1;7;1)) + 6*(MID(A1;2;1)+MID(A1;8;1)) + 5*(MID(A1;3;1)+MID(A1;9;1)) + 4*(MID(A1;4;1)+MID(A1;10;1)) + 3*(MID(A1;5;1)+MID(A1;11;1)) + 2*(MID(A1;6;1)+MID(A1;12;1)));11))
Preverjanje EMŠO v programskem jeziku C#
[uredi | uredi kodo]private bool emso_verify(string emso) {
if ((emso == null) | (emso.Length != 13) | (!emso.All(c => char.IsDigit(c))))
return false;
int emso_sum = 0;
for (int i = 7; i > 1; i--)
emso_sum += i * (int.Parse(emso.Substring(7 - i, 1)) + int.Parse(emso.Substring(13 - i, 1)));
int control_digit = emso_sum % 11 == 0 ? 0 : 11 - (emso_sum % 11);
if (emso.Substring(12, 1) == control_digit.ToString())
return true;
return false;
}
Preverjanje EMŠO v programskem jeziku Python
[uredi | uredi kodo]def emso_verify(emso):
"""
Accepts an iterable of at least 12 digits and returns the number
as a 13 digit string with a valid 13th control digit.
Details about computation in
http://www.uradni-list.si/1/objava.jsp?urlid=19998&stevilka=345
"""
emso_factor_map = [7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
control_digit = sum([int(emso[i]) * emso_factor_map[i] for i in range(12)]) % 11
control_digit = 0 if control_digit == 0 else 11 - control_digit
return control_digit == int(emso[12])
Preverjanje EMŠO v programskem jeziku C++
[uredi | uredi kodo]bool emso_verify(string emso)
{
if (emso.empty() || emso.size() != 13) // 13 mestno
return false;
for (auto& c : emso)
if (!(c >= '0' && c <= '9')) // samo številke
return false;
static int factor_map[] = { 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 }; // https://www.uradni-list.si/glasilo-uradni-list-rs/vsebina?urlid=19998&stevilka=345
short control_digit = 0, sum = 0;
for (int i = 0; i < 12; ++i)
sum += (int)(emso[i] - '0') * factor_map[i];
control_digit = sum % 11 == 0 ? 0 : 11 - (sum % 11);// Seštevek se deli z enajst (delitev se omeji na celo število).
// Ostanek pri delitvi se odšteje od števila 11, razlika je kontrolna številka.Kontrolna številka je enomestna, ima lahko vrednost od 0 do 9.
// Če je ostanek pri delitvi O je kontrolna številka 0.
return control_digit == (int)(emso[12] - '0');
}
Primer
[uredi | uredi kodo]Prvi fantek, rojen v Sloveniji 1. januarja 2006, ima EMŠO 0101006500006.
Sklici
[uredi | uredi kodo]- ↑ »Uradni list - Vsebina Uradnega lista«. www.uradni-list.si. Pridobljeno 8. julija 2020.
- ↑ »Uredba o načinu določanja osebne identifikacijske številke«. Uradni list RS, št. 8/1999. 10. februar 1999.