diff --git a/src/recordlinker/schemas/pii.py b/src/recordlinker/schemas/pii.py index c2ff16a9..d27ff50b 100644 --- a/src/recordlinker/schemas/pii.py +++ b/src/recordlinker/schemas/pii.py @@ -347,7 +347,7 @@ def feature_iter(self, feature: Feature) -> typing.Iterator[str]: if name.family: yield name.family elif attribute == FeatureAttribute.RACE: - if self.race: + if self.race and self.race not in [Race.UNKNOWN, Race.ASKED_UNKNOWN]: yield str(self.race) elif attribute == FeatureAttribute.TELECOM: for telecom in self.telecom: diff --git a/tests/unit/schemas/test_pii.py b/tests/unit/schemas/test_pii.py index cd61be2a..36525db0 100644 --- a/tests/unit/schemas/test_pii.py +++ b/tests/unit/schemas/test_pii.py @@ -148,6 +148,8 @@ def test_parse_race(self): assert record.race == pii.Race.BLACK record = pii.PIIRecord(race="native hawaiian or other pacific islander") assert record.race == pii.Race.HAWAIIAN + record = pii.PIIRecord(race="asked unknown") + assert record.race == pii.Race.ASKED_UNKNOWN record = pii.PIIRecord(race="asked but unknown") assert record.race == pii.Race.ASKED_UNKNOWN record = pii.PIIRecord(race="unknown") @@ -242,7 +244,7 @@ def test_feature_iter(self): assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.GIVEN_NAME))) == ["John", "L", "Jane"] assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.FIRST_NAME))) == ["John", "Jane"] assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.LAST_NAME))) == ["Doe", "Smith"] - assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == ["UNKNOWN"] + assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == [] assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.TELECOM))) == [ "555-123-4567", "(555) 987-6543", @@ -257,6 +259,18 @@ def test_feature_iter(self): # IDENTIFIER with suffix assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.IDENTIFIER, suffix="MR"))) == ["MR::123456"] assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.IDENTIFIER, suffix="SS"))) == ["SS::123-45-6789"] + + # Other fields work okay, few more checks on difference race yield values + record = pii.PIIRecord(race="asked unknown") + assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == [] + record = pii.PIIRecord(race="asked but unknown") + assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == [] + record = pii.PIIRecord(race="asian") + assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == ["ASIAN"] + record = pii.PIIRecord(race="african american") + assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == ["BLACK"] + record = pii.PIIRecord(race="white") + assert list(record.feature_iter(pii.Feature(attribute=pii.FeatureAttribute.RACE))) == ["WHITE"] def test_blocking_keys_invalid(self):