Goal. Many independent clinics on one Medplum project. Each clinic sees only its own patients and notes. But a person treated at three clinics should see all three in one place in the patient portal. So: walled off between clinics, joined up for the patient. A clinic must never learn that another clinic is involved.
Method 1 — one Patient shared by all clinics, tagged with each in meta.accounts.
Trouble: a note saved at clinic A inherits the patient's whole tag list, so clinic B reads it too. Removing clinic B from the note as an admin works, but the doctor's next ordinary save re-copies the tags from the patient and clinic B comes back, silently. A bot re-tagging after each write cleans up after the exposure, not before it.
Method 2 — one Patient per clinic, each tagged with only that clinic, tied together by a Person linking them. Notes inherit a single clinic tag, so clinical isolation works exactly as we want.
Trouble: the Person is the only record that knows the copies are the same human, and has to be tagged with every clinic that person attends. So it effectively says "this human attends A, B, C and D", readable by all of them. A doctor at clinic A can search Person filtered by clinic B and learn which of their own patients also go there. Stripping name and DOB off the Person removes the detail but not the disclosure.
Questions
1. Which would you recommend for patient-centric records across tenants?
2. Any supported way to share one Patient (method 1) while a note stays visible only to the clinic that wrote it?
3. Any way to link records across clinics (method 2) without the linking record naming the clinics to each other?
4. At 100 clinics: method 1 gives one Patient with 100 tags and every note inheriting all 100; method 2 gives 100 records, a Person with 100 tags, and 100 access entries on the membership. Does either degrade?
Thank you