Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why is Address Line inputted as a List? #65

Closed
EricPHassey opened this issue Apr 2, 2021 · 10 comments
Closed

Why is Address Line inputted as a List? #65

EricPHassey opened this issue Apr 2, 2021 · 10 comments

Comments

@EricPHassey
Copy link

EricPHassey commented Apr 2, 2021

I'm new to FHIR, but I'm confused why the address "line" is required to be a list? According to the official documentation it should be a string.

https://www.hl7.org/fhir/datatypes-definitions.html#Address.line

@nazrulworld
Copy link
Owner

First of all, welcome to arena of FHIR.
Anyway if you look at the cardinality, it states 0..*.
This means line variable could occur zero time (optional) or multiple times. As it's data type is String, so list of optional string.

@EricPHassey
Copy link
Author

@nazrulworld Thank you for teaching me that. Just curious, when would you ever want to have multiple addresses (other fields I can understand I'm sure).

Also, thank you for this wonderful package as well.

@nazrulworld
Copy link
Owner

It completely depends on the use case,
If you look https://www.hl7.org/fhir/valueset-address-use.html and https://www.hl7.org/fhir/valueset-address-type.html

One person could have work and home together and also an Organization could have separate postal and physical address.

@alysivji
Copy link

alysivji commented Jun 7, 2021

When searching for a search for a patient by an identifier, I am returned a Bundle that contains a single Patient. The Patient's address field looks as follows:

          {
            "use": "old",
            "line": [
              "100 LaSalle St",
              ""
            ],
            "city": "Chicago",
            "district": "Cook",
            "state": "IL",
            "postalCode": "60606",
            "country": "USA"
          },

When converting the JSON into a Bundle, I get a pydantic error because the empty string in line causes a ValidationError. How do you recommend I handle this situation?

@nazrulworld
Copy link
Owner

As far as I see "" in the line list, which not a valid string according to FHIR Specification, that's why you are getting validation error.

@alysivji
Copy link

alysivji commented Jun 8, 2021

Totally understand that an empty string is not valid according to FHIR, but this is what is coming out of a production Epic instance. It's unfortunate that real-world use cases do not comply with the spec, but it's to be expected since data is messy.

Do you have suggestions on how to reconcile messy data with the FHIR specification?

Great library BTW! Makes parsing FHIR payloads straight-forward =D

@nazrulworld
Copy link
Owner

nazrulworld commented Jun 8, 2021

One easy solution could be to patch (depends on which fhir version you are using) https://github.com/nazrulworld/fhir.resources/blob/main/fhir/resources/fhirtypes.py#L99
class String. regex = re.compile(r".*")

@nazrulworld
Copy link
Owner

But maybe in the future, we could make the constraint configurable for String type like https://github.com/nazrulworld/fhir.resources/blob/main/fhir/resources/fhirtypes.py#L170 Id

nazrulworld added a commit that referenced this issue Jun 10, 2021
@nazrulworld
Copy link
Owner

@alysivji if you follow the referenced commit, now String type is configurable!

from fhir.resources.fhirtypes import String
String.configure_empty_str(allow=True)

@alysivji
Copy link

Thank you for adding this in! 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants