GDPR Article 9
Handling rodné číslo findings that reveal biological sex, triggering GDPR Article 9 considerations.
GDPR Article 9
Rodné číslo is not just an identifier. Its structure reveals date of birth, and for standard post-1954 forms it also reveals biological sex through the encoded month offset (women have +50 added to the month digit). This makes it sensitive in GDPR contexts, including Article 9 considerations where sex-related information can be inferred from the value itself.
Article 9 flag
FastPII includes an article_9 flag in the metadata of rodné číslo findings:
from fastpii import FastPII, DEFAULT_PRIORITY
from fastpii.countries.cz import CzechPack
engine = FastPII(priority=DEFAULT_PRIORITY)
engine.register(CzechPack())
result = engine.detect("RČ: 8001011238")
for finding in result.findings:
if finding.type == "rodne_cislo":
print(f"Article 9 applies: {finding.metadata.get('article_9', False)}")
print(f"Gender revealed: {finding.metadata.get('gender')}")Output:
Article 9 applies: True
Gender revealed: maleCompliance workflow
Use the article_9 flag to route findings through a compliance review:
from fastpii import FastPII, DEFAULT_PRIORITY
from fastpii.countries.cz import CzechPack
engine = FastPII(priority=DEFAULT_PRIORITY)
engine.register(CzechPack())
result = engine.detect("Patient Jan Novák, RČ: 805101/1234")
article_9_findings = [
f for f in result.findings
if f.metadata.get("article_9", False)
]
if article_9_findings:
# Route to compliance review instead of automatic processing
print(f"Found {len(article_9_findings)} Article 9 sensitive findings")
for f in article_9_findings:
print(f" {f.type}: {f.value}")Metadata fields for rodné číslo
| Field | Type | Description |
|---|---|---|
checksum_valid | bool | Whether the Mod 11 checksum passed |
birth_date | str | Decoded birth date (YYYY-MM-DD format) |
gender | str | Inferred gender ("male" or "female") |
article_9 | bool | Whether Article 9 applies (always True for valid rodné číslo) |
PESEL and Article 9 considerations
Polish PESEL also encodes gender information (odd serial number = male, even = female):
from fastpii.countries.pl import PolishPack
engine = FastPII(priority=DEFAULT_PRIORITY)
engine.register(PolishPack())
result = engine.validate("44051401458", "pesel")
print(result.metadata)
# {'sex': 'male', 'birth_date': '1944-05-14'}The PESEL detector includes sex and birth_date in validation metadata, which may also have GDPR implications depending on your processing context.