Workflow
PROBLEM
The workflow requires our application to find or create a patient and create an encounter. In the domain, the patient has a CMRN which is constant across all organizations and facilities, and MRN aliases that are assigned from different pools for respective organizations and facilities.
When searching for a patient, we can validate whether there is or is not a patient that exists at the ambulatory facility based on the MRN aliases - the acute MRN begins with ‘B’ and the ambulatory MRN begins with ‘A’. In the scenario where the patient has a ‘B’ MRN but no ‘A’ MRN (e.g., they have an acute MRN alias attached to their PERSON_ID but no ambulatory MRN attached to their PERSON_ID), it seems to be impossible to use the FHIR Patient resource to attach an additional MRN identifier (in this case prefixed with ‘A’) to the same person.
CREATE Patient
If a request to CREATE Patient endpoint is executed, the system creates another person with a distinct and different PERSON_ID. We have tried adding the identifier.assigner organization for the MRN and attaching the identifier.type, identifier.system, and identifier.value of the CMRN, however, the system (urn:oid) is not present on the CMRN identifier that is returned in the search operation and is therefore unknown. We tried this method on the Historical CMRN and received a 409 response indicating a resource conflict likely from the duplicate CMRNs. Why is there no identifier.system on the CMRN? Is this because it’s assigned from an external system that manages EMPI assignment? If we performed this POST request with the assigner organization for the MRN and the CMRN identifier, would it attach a new MRN alias to the existing person_id or return a 409 response also?
PATCH Patient
It does appear possible to call the PATCH patient endpoint to add an identifier, in this instance, an MRN alias. However, the identifier.value is a required field and the value of the MRN is not known which prevents this request. Is it possible to add an alias with an identifier.system and identifier.type but without a unique value in the identifier.value property?
CREATE Encounter
We have also tried to skip over the CREATE/PATCH Patient requests since the person is already in the system and make a request to the CREATE Encounter endpoint. Our intention was that the appropriate MRN (prefixed with ‘A’) would be assigned from the encounter organization’s MRN alias pool. This did not happen and an encounter was created without the associated MRN.
The bottom line: the client has an existing person that relates to a distinct person_id in the database. The person can have multiple MRNs and one CMRN. It is required that when a person exists but does not have the right MRN assigned from the appropriate organization alias pool, a new MRN is attached to the person to create an encounter without creating a new person. Is there a way to do this?