diff --git a/input/fsh/PDQmPatient.fsh b/input/fsh/PDQmPatient.fsh index 2cc9338..72c51ac 100644 --- a/input/fsh/PDQmPatient.fsh +++ b/input/fsh/PDQmPatient.fsh @@ -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. @@ -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 diff --git a/sushi-config.yaml b/sushi-config.yaml index 2b16255..e14294b 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -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: