How to fix broken dates
In some cases, you can have invalid data in your database- after importing data, or an error in SQL migrations.
For example, we have Patient resource with incorrect birthDate
in the database. If we will try to search Patient by date, we will catch an error:
GET
/fhir/Patient?birthDate=2020-02-01
resourceType: OperationOutcome
id: >-
exception
text:
status: generated
div: 'ERROR: date/time field value out of range: "2020-02-30T00:00:00"'
issue:
- severity: fatal
code: exception
diagnostics: 'ERROR: date/time field value out of range: "2020-02-30T00:00:00"'
To fix this error we should find all incorrect dates in table via SQL query
select max((resource#>>'{birthDate}')::date) from patient;
In response we catch an error
ERROR: date/time field value out of range: "2020-02-30"
Now we can fix these dates:
update patient
set resource = resource || '{"birthDate": "2020-02-29"}'
where resource#>>'{birthDate}' = '2020-02-30';
Last updated
Was this helpful?