Skip to content

Commit

Permalink
Remove dependency on IPA per #101
Browse files Browse the repository at this point in the history
  • Loading branch information
slagesse-epic committed Feb 8, 2024
1 parent 49fcaa4 commit 1acc4eb
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 7 deletions.
51 changes: 47 additions & 4 deletions input/fsh/PDQmPatient.fsh
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
Profile: PDQmPatient
Parent: http://hl7.org/fhir/uv/ipa/StructureDefinition/ipa-patient
Parent: Patient
Id: IHE.PDQm.Patient
Title: "PDQm Patient Profile"
Description: """
The PDQm Patient Profile, based on the IPA Patient Profile
#### Overview

The PDQm Patient Profile establiashes the following base requirements:
- when any element in FHIR Core Patient are known, and when authorized to return the element, then all elements that are core to FHIR Patient SHOULD be returned
- forbids modifier extensions and implicit rules - so that all uses do not need to be concerned with changes to the meaning of the core elements of the Patient resource
- adds the `patient-mothersMaidenName` extension as an extension available to hold the mother's maiden name

Following the IPA Patient Profile, `Patient.identifier` is REQUIRED. Including business identifiers in `Patient.identifier` is important for
#### Use of Business Identifiers

To facilitate working with and matching resources across specifications and servers, `Patient.identifier` is REQUIRED. Including business identifiers in `Patient.identifier` is important for
allowing the Patient resource to maintain identity outside of the context of the FHIR server on which it resides.
This would be the case when the resource is copied to another server, saved to a file, migrated to a new FHIR server, etc.

`Patient.identifier` is typically be populated with an identifier assigned by an assigning authority in the
`Patient.identifier` is typically populated with an identifier assigned by an assigning authority in the
local patient identifier domain. Populating with identifiers issued by jurisdictional authorities, such as
the patient's national identifier, drivers license number, jurisdictional healthcare identifier, etc., is also
typical when policy allows for those identifiers to be disclosed to the client system.
Expand All @@ -28,11 +32,50 @@ SHALL be `urn:ietf:rfc:3986`.
including the `urn:uuid:` prefix. In this case, the corresponding value for `Patient.identifier.system`
SHALL be `urn:ietf:rfc:3986`. The UUID SHOULD be persisted within the FHIR resource so that subsequent accesses
return the same identifier, but it is not REQUIRED in environments where doing so is not possible.

#### Handling of Patient.link
When multiple Patient Resources are used to represent the same Patient, Patient.link SHALL be used to describe
the relationship between the resources.

When returning Patient Resources, the Patient Demographics SHALL ensure that:
* No more that one Patient Resource referencing a Patient Identity contains `active=true`
* When returning multiple Patient Resources for the same Patient, `Patient.link` SHALL be used to describe the relationship between each Patient Resource
* When one Patient Resource has become subsumed by another, the subsumed Patient SHALL use `Patient.link` to point at the surviving Patinet Resource and `Patient.link.type` SHALL be `replaced-by`.

Patient Demographics Consumers SHOULD be able to traverse Patient.link and use Patient.active to determine if a given Patient is currently active in the system.
"""

* modifierExtension 0..0
* implicitRules 0..0
* identifier 1..*
* system 1..1
* ^short = "Assigning Authority ID or other identifiation namespace"
* ^definition = "Establishes the namespace for the value - that is, a URL that describes a set values that are unique. If the identifier is issued by an Assigning Authority, then the system SHALL be set to the Assigning Authority ID in the format \"urn:oid:[AAID]\". If the identifier value is a URI then system SHALL be set to \"urn:ietf:rfc:3986\"."
* value 1..1
* active MS
* ^condition = iti-pdqm-linkstatus
* name obeys iti-pdqm-patname
* name MS
* telecom MS
* birthDate MS
* address MS
* link MS
* ^condition = iti-pdqm-linkstatus
* type
* ^definition = "The type of link between this patient resource and another patient resource. When this Patient Resource has been subsumed by another, the type SHALL be replaced-by."
* extension contains http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName named MothersMaidenName 0..1
* obeys iti-pdqm-linkstatus

Invariant: iti-pdqm-patname
Description: "Either Patient.name.given and/or Patient.name.family and/or Patient.name.text SHALL be present or a Data Absent Reason Extension SHALL be present."
Expression: "(family.exists() or given.exists() or text.exists()) xor extension.where(url='http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()"
Severity: #error

Invariant: iti-pdqm-linkstatus
Description: "If Patient.link is present, then Patient.active SHALL be present"
Expression: "link.exists() implies active.exists()"
Severity: #error
XPath: "not(f:link) or f:active"

Profile: QueryPatientResourceResponseMessage
Parent: Bundle
Expand Down
3 changes: 0 additions & 3 deletions sushi-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,6 @@ dependencies:
id: iheitibasicaudit
uri: https://profiles.ihe.net/ITI/BALP/ImplementationGuide/ihe.iti.balp
version: 1.1.x
hl7.fhir.uv.ipa:
uri: http://hl7.org/fhir/uv/ipa/ImplementationGuide/hl7.fhir.uv.ipa
version: 1.0.x

parameters: # see https://confluence.hl7.org/display/FHIR/Implementation+Guide+Parameters
path-resource:
Expand Down

0 comments on commit 1acc4eb

Please sign in to comment.