@@ -199,32 +199,35 @@ static String parseSyntheticNumber(String fodselsnummer) {
199
199
if (!isSynthetic (fodselsnummer )) {
200
200
return fodselsnummer ;
201
201
} else {
202
-
203
202
int monthNumber = Integer .parseInt (fodselsnummer .substring (2 , 4 ));
204
203
205
204
//Skatteetaten - synthetic numbers
206
- if (monthNumber >= 81 && monthNumber <= 92 ){
207
-
205
+ if (monthNumber >= 81 && monthNumber <= 92 ) {
208
206
return fodselsnummer .substring (0 , 2 ) + (getThirdDigit (fodselsnummer ) - 8 ) + fodselsnummer .substring (3 );
209
207
}
210
208
211
209
//Norsk helsenett - synthetic numbers
212
- if (monthNumber >= 66 && monthNumber <= 77 ) {
210
+ if (monthNumber >= 66 && monthNumber <= 77 ) {
213
211
String month = Integer .toString (monthNumber - 65 );
214
- if (month .length () == 1 ){
212
+ if (month .length () == 1 ) {
215
213
month = "0" + month ;
216
214
}
217
215
return fodselsnummer .substring (0 , 2 ) + month + fodselsnummer .substring (4 );
218
216
}
219
217
218
+ //Norwegian Labour and Welfare Administration (NAV) - synthetic numbers
219
+ if (monthNumber >= 41 && monthNumber <= 52 ) {
220
+ return fodselsnummer .substring (0 , 2 ) + (getThirdDigit (fodselsnummer ) - 4 ) + fodselsnummer .substring (3 );
221
+ }
222
+
220
223
throw new IllegalArgumentException (fodselsnummer + " is not a valid synthethic number" );
221
224
}
222
225
}
223
226
224
227
static boolean isSynthetic (String fodselsnummer ) {
225
228
try {
226
229
int monthNumber = Integer .parseInt (fodselsnummer .substring (2 , 4 ));
227
- if ((monthNumber >= 81 && monthNumber <= 92 ) || (monthNumber >= 66 && monthNumber <= 77 )) {
230
+ if ((monthNumber >= 81 && monthNumber <= 92 ) || (monthNumber >= 66 && monthNumber <= 77 ) || ( monthNumber >= 41 && monthNumber <= 52 ) ) {
228
231
return true ;
229
232
}
230
233
} catch (IllegalArgumentException e ) {
0 commit comments