Download OpenAPI specification:
Combined OpenAPI entry point that references the FHIR and OAuth2 specifications.
The production PCM OAuth origin is https://pcm2m.health.gov.il, and the
production PCM FHIR base is https://pcm2m.health.gov.il/r4; non-production
deployments use their assigned environment values. Participant hosts under
example.org are placeholders. Canonical, identifier-system, and other named
protocol URIs remain the published identifiers. Every PCM HTTP endpoint
requires mTLS, including discovery, metadata, authorization, token,
introspection, and FHIR interactions.
Public FHIR POST/PUT interactions use closed request projections and reject
prohibited content atomically with OperationOutcome responses. MoH/PCM owns
Organization.active; Data Sources expose runtime availability through the
status of their currently referenced Endpoint; Service Providers control only
the documented HealthcareService instance business-status transitions.
For FHIR searches, authorization is a hard ceiling: every primary match must both
satisfy the supplied search criteria and be authorized for the caller to read.
Search filters can only narrow the authorized primary-result set. _include and
_include:iterate can add only related resources that the caller is authorized
to read under the same resource-visibility rules; they never widen access.
Search organizations by supported parameters. Used for discovery and retrieval, including searches by active flag or identifier.
| _id | string |
| identifier | string FHIR identifier search parameter. |
| active | string Search by activation status (token; true|false). |
| type | string Search by Organization.type code. |
| partof | string |
| _lastUpdated | string Standard FHIR instant search parameter on server-managed |
| _include | Array of strings (OrganizationIncludeValues) Items Enum: "Organization:endpoint" "Organization:partof" Include authorized Organization endpoints or parents using repeatable FHIR |
| _include:iterate | Array of strings (OrganizationIncludeValues) Items Enum: "Organization:endpoint" "Organization:partof" Recursively include authorized Organization endpoints or parents using repeatable FHIR |
{- "resourceType": "Bundle",
- "id": "bundle-organization-source-include-parent",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "Organization",
- "id": "org-ds-hmo-b",
- "meta": {
- "lastUpdated": "2025-01-01T13:28:17Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "org-ds-hmo-b"
}
], - "active": true,
- "name": "HMO B - Clinical Data Source",
- "type": [
- {
- "coding": [
- {
- "code": "source",
- "display": "Data Source"
}
]
}, - {
- "coding": [
- {
- "code": "73",
- "display": "קופות חולים"
}
]
}
], - "partOf": {
- "reference": "Organization/org-parent-hmo-b"
}, - "endpoint": [
- {
- "reference": "Endpoint/endpoint-hmo-b"
}
], - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "HMO B FHIR Operations"
}, - "telecom": [
- {
- "system": "email",
- "value": "fhir-ops@hmo-b.example.org"
}
]
}
]
}
}, - {
- "search": {
- "mode": "include"
}, - "resource": {
- "resourceType": "Organization",
- "id": "org-parent-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:00:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-ORG-HMO-B-PARENT-001"
},
], - "active": true,
- "name": "HMO B (Parent Legal Entity)",
- "type": [
- {
- "coding": [
- {
- "code": "parent-org",
- "display": "Parent Organization"
}
]
}, - {
- "coding": [
- {
- "code": "73",
- "display": "קופות חולים"
}
]
}
], - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0200"
}
], - "address": [
- {
- "text": "10 HMO B Ave, Tel Aviv"
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "HMO B - Administration"
}, - "telecom": [
- {
- "system": "email",
- "value": "admin@hmo-b.example.org"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "HMO B - Patient Information"
}, - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0210"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "HMO B - Security"
}, - "telecom": [
- {
- "system": "email",
- "value": "soc@hmo-b.example.org"
}
]
}
]
}
}
]
}After PCM separately authorizes Service Provider expansion, creates one Service Provider child under the authenticated organization's Parent. PCM derives and validates the Parent and role, assigns the logical and PCM business identifiers and authoritative name, and returns the child. PCM manages the optional read-only redirect projection from its OAuth client registration; a supplied redirect URI or other prohibited field rejects the complete request. The interaction does not allocate an OAuth client or register a certificate. Parent and Data Source child creation are not supported.
| resourceType required | string Value: "Organization" |
| id | string Optional FHIR create metadata; ignored by PCM. |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
| name required | string non-empty |
Array of objects (Extension) Unknown ordinary non-modifier extensions only. | |
Array of objects (PCMOrganizationRequestContact) |
{- "resourceType": "Organization",
- "meta": {
}, - "name": "Hospital A - Patient App (Service Provider)",
- "contact": [
- {
- "purpose": {
- "coding": [
- {
- "code": "OPS",
- "display": "Operations"
}
]
}, - "name": {
- "text": "Hospital A App Operations"
}, - "telecom": [
- {
- "system": "email",
- "value": "app-ops@hospital-a.example.org"
}
]
}
]
}{- "resourceType": "Organization",
- "id": "org-sp-hospital-a",
- "meta": {
- "lastUpdated": "2025-01-01T13:28:17Z",
}, - "active": true,
- "name": "Hospital A - Patient App (Service Provider)",
- "identifier": [
- {
- "use": "official",
- "value": "PCM-ORG-HOSP-A-SP-001"
}
], - "type": [
- {
- "coding": [
- {
- "code": "service-provider",
- "display": "Service Provider"
}
]
}, - {
- "coding": [
]
}
], - "partOf": {
- "reference": "Organization/org-parent-hospital-a"
}, - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "eiVFuKs_ZspXC6MYLWLzThgD1yj5U6Cgs_4JSQEBx_c"
}, - {
- "url": "thumbprint",
- "valueString": "zHVQke4ePAOhosYm2tgQ8hCC4wlNBJkV3iJ7w_LlL9Y"
}
]
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "Hospital A App Operations"
}, - "telecom": [
- {
- "system": "email",
- "value": "app-ops@hospital-a.example.org"
}
]
}
]
}Equivalent to GET /Organization with the same supported parameters, authorization ceiling, result profile, and errors.
| _id | string |
| identifier | string |
| active | string |
| type | string |
| partof | string |
| _lastUpdated | string |
| _include | Array of strings (OrganizationIncludeValues) Items Enum: "Organization:endpoint" "Organization:partof" |
| _include:iterate | Array of strings (OrganizationIncludeValues) Items Enum: "Organization:endpoint" "Organization:partof" |
{- "resourceType": "Bundle",
- "id": "bundle-organization-source-include-parent",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "Organization",
- "id": "org-ds-hmo-b",
- "meta": {
- "lastUpdated": "2025-01-01T13:28:17Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "org-ds-hmo-b"
}
], - "active": true,
- "name": "HMO B - Clinical Data Source",
- "type": [
- {
- "coding": [
- {
- "code": "source",
- "display": "Data Source"
}
]
}, - {
- "coding": [
- {
- "code": "73",
- "display": "קופות חולים"
}
]
}
], - "partOf": {
- "reference": "Organization/org-parent-hmo-b"
}, - "endpoint": [
- {
- "reference": "Endpoint/endpoint-hmo-b"
}
], - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "HMO B FHIR Operations"
}, - "telecom": [
- {
- "system": "email",
- "value": "fhir-ops@hmo-b.example.org"
}
]
}
]
}
}, - {
- "search": {
- "mode": "include"
}, - "resource": {
- "resourceType": "Organization",
- "id": "org-parent-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:00:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-ORG-HMO-B-PARENT-001"
},
], - "active": true,
- "name": "HMO B (Parent Legal Entity)",
- "type": [
- {
- "coding": [
- {
- "code": "parent-org",
- "display": "Parent Organization"
}
]
}, - {
- "coding": [
- {
- "code": "73",
- "display": "קופות חולים"
}
]
}
], - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0200"
}
], - "address": [
- {
- "text": "10 HMO B Ave, Tel Aviv"
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "HMO B - Administration"
}, - "telecom": [
- {
- "system": "email",
- "value": "admin@hmo-b.example.org"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "HMO B - Patient Information"
}, - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0210"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "HMO B - Security"
}, - "telecom": [
- {
- "system": "email",
- "value": "soc@hmo-b.example.org"
}
]
}
]
}
}
]
}| id required | string |
{- "resourceType": "Organization",
- "id": "org-parent-hospital-a",
- "meta": {
- "lastUpdated": "2025-01-01T13:28:17Z",
}, - "active": true,
- "name": "Hospital A (Parent Legal Entity)",
- "identifier": [
- {
- "use": "official",
- "value": "PCM-ORG-HOSP-A-PARENT-001"
}, - {
- "use": "official",
- "value": "HOSP-A-001"
}
], - "type": [
- {
- "coding": [
- {
- "code": "parent-org",
- "display": "Parent Organization"
}
]
}, - {
- "coding": [
]
}
], - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0100"
}
], - "address": [
- {
- "text": "1 Hospital A Rd, Jerusalem"
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "Hospital A - Administration"
}, - "telecom": [
- {
- "system": "email",
- "value": "admin@hospital-a.example.org"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "Hospital A - Patient Information"
}, - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0101"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "Hospital A - Security"
}, - "telecom": [
- {
- "system": "email",
- "value": "soc@hospital-a.example.org"
}
]
}
]
}Used by organizations to update allowed fields depending on Organization type.
Parent Organization updates are limited to contact details. Service Provider
children may update contact overrides. Data Source children may update contact
overrides and their own validated Endpoint linkage. MoH/PCM exclusively
controls Parent and child Organization.active. Parent inactivity gates child
use without rewriting the child active values.
The body id must equal the URL id. The complete client-writable
projection is replaced: omitted optional writable fields are removed and
repeating fields replace the stored collection. Every other business element,
including identifier, active, role, Parent linkage, OAuth redirect projection,
and applicable-certificate inventory, is prohibited. Its presence rejects the
whole update. Submitted meta.versionId and meta.lastUpdated are
prohibited. Accepted updates use last-write-wins
only after complete validation; If-Match and PATCH are not supported.
| id required | string |
| resourceType required | string Value: "Organization" |
| id required | string |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
| name required | string non-empty Unchanged authoritative Parent name; this request does not rename it. |
Array of objects (Extension) Unknown ordinary non-modifier extensions only. | |
Array of objects (PCMOrganizationRequestContact) |
{- "resourceType": "Organization",
- "id": "org-parent-hmo-b-update",
- "meta": {
}, - "name": "HMO B (Parent Legal Entity)",
- "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "HMO B - Administration"
}, - "telecom": [
- {
- "system": "email",
- "value": "admin@hmo-b.example.org"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "HMO B - Patient Information"
}, - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0210"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "HMO B - Security"
}, - "telecom": [
- {
- "system": "email",
- "value": "soc@hmo-b.example.org"
}
]
}
]
}{- "resourceType": "Organization",
- "id": "org-parent-hospital-a",
- "meta": {
- "lastUpdated": "2025-01-01T13:28:17Z",
}, - "active": true,
- "name": "Hospital A (Parent Legal Entity)",
- "identifier": [
- {
- "use": "official",
- "value": "PCM-ORG-HOSP-A-PARENT-001"
}, - {
- "use": "official",
- "value": "HOSP-A-001"
}
], - "type": [
- {
- "coding": [
- {
- "code": "parent-org",
- "display": "Parent Organization"
}
]
}, - {
- "coding": [
]
}
], - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0100"
}
], - "address": [
- {
- "text": "1 Hospital A Rd, Jerusalem"
}
], - "contact": [
- {
- "purpose": {
}, - "name": {
- "text": "Hospital A - Administration"
}, - "telecom": [
- {
- "system": "email",
- "value": "admin@hospital-a.example.org"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "Hospital A - Patient Information"
}, - "telecom": [
- {
- "system": "phone",
- "value": "+972-3-555-0101"
}
]
}, - {
- "purpose": {
}, - "name": {
- "text": "Hospital A - Security"
}, - "telecom": [
- {
- "system": "email",
- "value": "soc@hospital-a.example.org"
}
]
}
]
}| _id | string |
| _lastUpdated | string Standard FHIR instant search parameter on server-managed |
| thumbprint | string^[A-Za-z0-9_-]{43}$ Example: thumbprint=AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo Token search on the nested thumbprint value in PCM's read-only
|
{- "resourceType": "Bundle",
- "id": "bundle-endpoint-search",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "Endpoint",
- "id": "endpoint-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:20:00Z",
}, - "status": "active",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
], - "managingOrganization": {
- "reference": "Organization/org-ds-hmo-b"
}, - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
]
}
}
]
}Creates an Endpoint owned by the authenticated Data Source. The request
supplies an exact HTTPS FHIR base address and initial status active or
suspended; creation as off is invalid. connectionType and payloadType
are fixed request-envelope values. PCM derives managingOrganization.
Identity, ownership, and certificate-inventory input is prohibited.
| resourceType required | string Value: "Endpoint" |
| id | string Optional FHIR create metadata; ignored by PCM. |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
Array of objects (Extension) Unknown ordinary non-modifier extensions only. | |
| status required | string Enum: "active" "suspended" |
required | object (PCMEndpointConnectionType) |
required | Array of objects (PCMEndpointPayloadType) = 1 items |
| address required | string <uri> |
{- "resourceType": "Endpoint",
- "status": "active",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
],
}{- "resourceType": "Endpoint",
- "id": "endpoint-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:20:00Z",
}, - "status": "active",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
], - "managingOrganization": {
- "reference": "Organization/org-ds-hmo-b"
}, - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
]
}Equivalent to GET /Endpoint with the same supported parameters, authorization ceiling, result profile, and errors.
| _id | string |
| _lastUpdated | string |
| thumbprint | string^[A-Za-z0-9_-]{43}$ Token search on PCM's read-only associated-certificate inventory. Matching does not register or authorize a certificate, describe the complete trust store, prove current presentation, or declare token binding. |
This filter reads PCM's associated-certificate inventory. It does not register or authorize a certificate, describe the complete trust store, prove current certificate presentation, declare token binding, or widen the caller's authorized Endpoint result set.
thumbprint=AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo{- "resourceType": "Bundle",
- "id": "bundle-endpoint-search",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "Endpoint",
- "id": "endpoint-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:20:00Z",
}, - "status": "active",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
], - "managingOrganization": {
- "reference": "Organization/org-ds-hmo-b"
}, - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
]
}
}
]
}{- "resourceType": "Endpoint",
- "id": "endpoint-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:20:00Z",
}, - "status": "active",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
], - "managingOrganization": {
- "reference": "Organization/org-ds-hmo-b"
}, - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
]
}Replaces the complete Data Source-writable Endpoint projection. The body
id must equal the URL id. The owner controls status through active,
suspended, and terminal off: active and suspended are reversible,
active/suspended may become off, off cannot be restored, and same-state
requests are idempotent. An address change is accepted only while the
current Endpoint is suspended and immediately invalidates the old audience.
A referenced Endpoint cannot be turned off; create and validate a replacement,
link it from the Data Source Organization, then retire the old Endpoint.
PCM derives ownership. managingOrganization, identity, certificate inventory,
and every other prohibited element reject the whole request. Submitted
meta.versionId and meta.lastUpdated are prohibited. Only the currently
referenced active Endpoint is eligible for source-token issuance and active
introspection. Suspension/off does not mutate Consent or waive reporting, and
PCM management access remains available for resume/replacement. If-Match
and PATCH are not supported.
| id required | string |
| resourceType required | string Value: "Endpoint" |
| id required | string |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
Array of objects (Extension) Unknown ordinary non-modifier extensions only. | |
| status required | string Enum: "active" "suspended" "off" |
required | object (PCMEndpointConnectionType) |
required | Array of objects (PCMEndpointPayloadType) = 1 items |
| address required | string <uri> |
{- "resourceType": "Endpoint",
- "id": "endpoint-hmo-b-update",
- "status": "suspended",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
],
}{- "resourceType": "Endpoint",
- "id": "endpoint-hmo-b",
- "meta": {
- "lastUpdated": "2026-01-05T08:20:00Z",
}, - "status": "active",
- "connectionType": {
- "code": "hl7-fhir-rest",
- "display": "HL7 FHIR"
}, - "payloadType": [
- {
}
], - "managingOrganization": {
- "reference": "Organization/org-ds-hmo-b"
}, - "extension": [
- {
- "extension": [
- {
- "url": "thumbprint",
- "valueString": "AzYdwvaDPYEcNh9kZXLhKkjeo2_nO1Sx9FrqT9AxCXo"
}
]
}
]
}Search canonical catalog services and provider service registrations.
Use _tag=http://pcm.fhir.health.gov.il/cs/pcm-meta-tag|catalog to search
catalog definitions only, and _tag=http://pcm.fhir.health.gov.il/cs/pcm-meta-tag|instance
to search organization registration/instance records only. Instance registry
searches can also use organization to find registrations owned by a Service
Provider, and based-on to find all registrations tied to a canonical catalog
service.
Identifier searches can target either PCM HealthcareService identifier system:
http://pcm.fhir.health.gov.il/identifier/pcm-healthcareservice-catalog-id
for canonical catalog entries, or
http://pcm.fhir.health.gov.il/identifier/pcm-healthcareservice-instance-id
for provider service registrations.
Catalog search is a client catalog-discovery surface. For
_tag=http://pcm.fhir.health.gov.il/cs/pcm-meta-tag|catalog, PCM returns only
active/registrable catalog services; passing active=true is redundant, and
active=false is not a supported way to discover pending, frozen, rejected, or
cancelled catalog records.
Instance search is the client registry surface. For
_tag=http://pcm.fhir.health.gov.il/cs/pcm-meta-tag|instance, omitting active
returns instance registrations visible to the caller, including active instances
and pending instances published for objection. active=true narrows to externally
usable instances. active=false returns visible inactive instances according to
the client visibility rules: pending registrations are visible for objection
handling; rejected/frozen/suspended registrations are visible only to the
owning Service Provider HO. Cancelled registrations remain owner-visible for
audit and idempotent retries but are excluded from ordinary discovery.
| _id | string |
| identifier | string FHIR identifier search parameter. |
| active | string Search by activation status (token; true|false). |
| service-category | string FHIR R4 search by HealthcareService.category. |
| service-type | string FHIR R4 search by HealthcareService.type. |
| name | string Search by HealthcareService.name. |
| organization | string FHIR R4 search by HealthcareService.providedBy (instance profile only). |
| _tag | string FHIR token search on meta.tag. For HealthcareService use |
| based-on | string Search HealthcareService instance registrations by the canonical catalog HealthcareService referenced in the basedOn extension. |
| pcm-business-status | string Search by the PCM-managed business-status extension for HealthcareService or Consent. |
| _lastUpdated | string Standard FHIR instant search parameter on server-managed |
{- "resourceType": "Bundle",
- "id": "bundle-healthcareservice-active-catalog",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "link": [
- {
- "relation": "self",
}
], - "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "HealthcareService",
- "id": "svc-catalog-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:05:00Z",
- "tag": [
]
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CAT-0101"
}
], - "active": true,
- "extension": [
- {
- "valueCoding": {
- "code": "active",
- "display": "Active"
}
}, - {
- "valueCode": "continuous"
}, - {
}, - {
- "valueString": "GET [FHIR BASE]/Observation?category=laboratory&_lastUpdated=ge{{period.start}}"
}, - {
- "valueString": "GET [FHIR BASE]/MedicationRequest?_lastUpdated=ge{{period.start}}"
}, - {
- "valueBoolean": true
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "laboratoryTests",
- "display": "בדיקות מעבדה"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "medications",
- "display": "תרופות"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}
], - "name": "Cross-Organization Patient Summary",
- "category": [
- {
- "coding": [
- {
- "code": "35",
- "display": "Hospital"
}
], - "text": "Hospital / continuity of care"
}
], - "type": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "extraDetails": "Lets a care team view recent laboratory results and medication information to understand current treatment, avoid duplicate tests, and reduce medication-safety risks."
}
}
]
}Service providers discover active catalog services first with
GET /HealthcareService?_tag=http://pcm.fhir.health.gov.il/cs/pcm-meta-tag|catalog&active=true.
If a suitable active canonical catalog service exists, the provider posts a
minimal instance HealthcareService with the basedOn extension to register
for that service. If no suitable service exists, the provider posts a full
new-service registration request through the same instance flow, including
service name, purpose, information buckets, history depth, access mode,
access duration, clinical information, and example queries.
The calling Service Provider child Organization must be operationally active: child and Parent are active and all documented policy preconditions permit use.
Submit profiles are interaction-specific server validation profiles; their
canonicals are not required in request meta.profile. Direct create requests
must omit meta.tag. PCM adds the authoritative HealthcareService
classification tag to each returned resource: catalog for a catalog
definition and instance for a provider registration. A client-supplied
meta.tag is a prohibited field and is rejected with 400 Bad Request and
the ordinary validation OperationOutcome.
basedOn present means an existing catalog registration; no basedOn with
a full service definition means a new-service registration request.
Created/read response examples use the returned
pcm-healthcareservice-instance profile.
External clients do not directly create canonical catalog services. The
request shape, including whether basedOn is present, selects the create
path; clients do not select it with a tag.
For a valid new-service registration request, PCM creates
both the canonical catalog service and the provider's organization
registration with businessStatus=pending and active=false. Activation and
any required review or exception handling are managed outside this FHIR
operation. Clients observe the result through extension[businessStatus],
HealthcareService.active, and OperationOutcome responses, not through
separate public review resources.
Full service definitions require a human-readable service purpose. The public
FHIR representation for that purpose is HealthcareService.extraDetails, carrying
the service description/purpose ("תיאור השירות (מטרה)"). Client-supplied active,
businessStatus, identifiers, ownership, or other fields outside the selected
closed submit schema reject the whole request. PCM assigns
the stable provider-registration business identifier using system
http://pcm.fhir.health.gov.il/identifier/pcm-healthcareservice-instance-id; clients
must omit identifier and meta.tag. The interaction profile canonical is
not required in request meta.profile. The separate
$request-catalog-update operation carries a complete proposed catalog
resource, so that proposal retains its fixed catalog classification tag.
| resourceType required | string Value: "HealthcareService" |
| id | string Optional FHIR create metadata; ignored by PCM. |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
required | Array of PCMBasedOnHealthcareServiceExtension (object) or objects non-empty |
{- "resourceType": "HealthcareService",
- "meta": {
}, - "extension": [
- {
- "valueReference": {
- "reference": "HealthcareService/svc-catalog-cross-org-summary"
}
}
]
}{- "resourceType": "HealthcareService",
- "id": "svc-instance-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:07:00Z",
- "tag": [
- {
- "code": "instance",
- "display": "Instance"
}
]
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-HS-INST-0101"
}
], - "active": true,
- "providedBy": {
- "reference": "Organization/org-sp-hospital-a"
}, - "name": "Cross-Organization Patient Summary",
- "category": [
- {
- "coding": [
- {
- "code": "35",
- "display": "Hospital"
}
], - "text": "Hospital / continuity of care"
}
], - "type": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "extraDetails": "Lets a care team view recent laboratory results and medication information to understand current treatment, avoid duplicate tests, and reduce medication-safety risks.",
- "extension": [
- {
- "valueCoding": {
- "code": "active",
- "display": "Active"
}
}, - {
- "valueReference": {
- "reference": "HealthcareService/svc-catalog-cross-org-summary"
}
}, - {
- "valuePeriod": {
- "start": "2026-01-01T00:00:00+02:00",
- "end": "2026-01-31T00:00:00+02:00"
}
}, - {
- "valueCode": "continuous"
}, - {
}, - {
- "valueString": "GET [FHIR BASE]/Observation?category=laboratory&_lastUpdated=ge{{period.start}}"
}, - {
- "valueString": "GET [FHIR BASE]/MedicationRequest?_lastUpdated=ge{{period.start}}"
}, - {
- "valueBoolean": true
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "laboratoryTests",
- "display": "בדיקות מעבדה"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "medications",
- "display": "תרופות"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}
]
}Equivalent to GET /HealthcareService with the same supported parameters, visibility rules, authorization ceiling, result profile, and errors.
| _id | string |
| identifier | string |
| active | string |
| service-category | string |
| service-type | string |
| name | string |
| organization | string |
| _tag | string |
| based-on | string |
| pcm-business-status | string |
| _lastUpdated | string |
{- "resourceType": "Bundle",
- "id": "bundle-healthcareservice-active-catalog",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "link": [
- {
- "relation": "self",
}
], - "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "HealthcareService",
- "id": "svc-catalog-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:05:00Z",
- "tag": [
]
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CAT-0101"
}
], - "active": true,
- "extension": [
- {
- "valueCoding": {
- "code": "active",
- "display": "Active"
}
}, - {
- "valueCode": "continuous"
}, - {
}, - {
- "valueString": "GET [FHIR BASE]/Observation?category=laboratory&_lastUpdated=ge{{period.start}}"
}, - {
- "valueString": "GET [FHIR BASE]/MedicationRequest?_lastUpdated=ge{{period.start}}"
}, - {
- "valueBoolean": true
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "laboratoryTests",
- "display": "בדיקות מעבדה"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "medications",
- "display": "תרופות"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}
], - "name": "Cross-Organization Patient Summary",
- "category": [
- {
- "coding": [
- {
- "code": "35",
- "display": "Hospital"
}
], - "text": "Hospital / continuity of care"
}
], - "type": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "extraDetails": "Lets a care team view recent laboratory results and medication information to understand current treatment, avoid duplicate tests, and reduce medication-safety risks."
}
}
]
}Reads a HealthcareService visible to the authenticated client. Client FHIR
reads may return a non-searchable pending/frozen catalog when the caller
obtained its direct URL from a visible instance basedOn reference. Rejected
or cancelled canonical resources outside client visibility are returned as
not found. A cancelled provider instance remains readable only to its owning
Service Provider for audit and idempotent retries.
| id required | string |
{- "resourceType": "HealthcareService",
- "id": "svc-catalog-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:05:00Z",
- "tag": [
]
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CAT-0101"
}
], - "active": true,
- "name": "Cross-Organization Patient Summary",
- "category": [
- {
- "coding": [
- {
- "code": "35",
- "display": "Hospital"
}
], - "text": "Hospital / continuity of care"
}
], - "type": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "extraDetails": "Lets a care team view recent laboratory results and medication information to understand current treatment, avoid duplicate tests, and reduce medication-safety risks.",
- "extension": [
- {
- "valueCoding": {
- "code": "active",
- "display": "Active"
}
}, - {
- "valueCode": "continuous"
}, - {
}, - {
- "valueString": "GET [FHIR BASE]/Observation?category=laboratory&_lastUpdated=ge{{period.start}}"
}, - {
- "valueString": "GET [FHIR BASE]/MedicationRequest?_lastUpdated=ge{{period.start}}"
}, - {
- "valueBoolean": true
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "laboratoryTests",
- "display": "בדיקות מעבדה"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "medications",
- "display": "תרופות"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}
]
}The owning Service Provider submits exactly one target
extension[businessStatus] through the closed request schema. Runtime rules
permit pending -> cancelled as withdrawal, active -> suspended, and
suspended -> active|cancelled; repeating an already-achieved owner target is
idempotent. Direct owner active -> cancelled, PCM/MoH-only targets, changes
while frozen, and cancelled reactivation are rejected. For a coupled pending
new-service request, withdrawal also cancels its linked pending canonical;
withdrawal against an existing canonical cancels only the instance.
A PCM/MoH freeze preserves the pre-freeze owner state (active or
suspended) and restores that state when the freeze is lifted; the owner
cannot change it while frozen.
Suspension temporarily inactivates affected eligible Consents; resumption may
restore them only after PCM revalidates every current authorization condition.
Withdrawal or termination permanently inactivates the affected Consents.
HealthcareService.active is prohibited in the request and derived by PCM.
Every definition, identity, ownership, linkage, review, or HealthcareService
classification-tag field (meta.tag) is prohibited. Submitted
meta.versionId and meta.lastUpdated are also prohibited.
The interaction profile canonical is not required in request meta.profile.
This operation does not accept canonical catalog changes. Non-material catalog
update requests use POST /HealthcareService/{id}/$request-catalog-update.
Material catalog changes must be submitted through the new-service registration
flow.
The body id must equal the URL id. If-Match and PATCH are not supported.
An accepted transition updates that same provider-instance resource: the
response retains its logical id and PCM business identifier; state names are
never appended to either identity.
Owner status transitions preserve the existing PCM-managed approvalWindow
unchanged, including in a terminal cancelled response. The request must not
include that extension.
active=true if and only if businessStatus=active; pending, rejected,
frozen, suspended, and cancelled resources have active=false.
| id required | string |
| resourceType required | string Value: "HealthcareService" |
| id required | string |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
required | Array of PCMOwnerServiceBusinessStatusExtension (object) or objects non-empty |
{- "resourceType": "HealthcareService",
- "id": "svc-instance-hosp-a-cross-org-summary",
- "meta": {
}, - "extension": [
- {
- "valueCoding": {
- "code": "suspended",
- "display": "Suspended"
}
}
]
}{- "resourceType": "HealthcareService",
- "id": "svc-instance-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-12T08:00:00Z",
- "tag": [
- {
- "code": "instance",
- "display": "Instance"
}
]
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-HS-INST-0101"
}
], - "active": false,
- "providedBy": {
- "reference": "Organization/org-sp-hospital-a"
}, - "name": "Cross-Organization Patient Summary",
- "category": [
- {
- "coding": [
- {
- "code": "35",
- "display": "Hospital"
}
], - "text": "Hospital / continuity of care"
}
], - "type": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "extraDetails": "Lets a care team view recent laboratory results and medication information to understand current treatment, avoid duplicate tests, and reduce medication-safety risks.",
- "extension": [
- {
- "valueReference": {
- "reference": "HealthcareService/svc-catalog-cross-org-summary"
}
}, - {
- "valuePeriod": {
- "start": "2026-01-01T00:00:00+02:00",
- "end": "2026-01-31T00:00:00+02:00"
}
}, - {
- "valueCode": "continuous"
}, - {
}, - {
- "valueBoolean": true
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "laboratoryTests",
- "display": "בדיקות מעבדה"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "medications",
- "display": "תרופות"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "valueString": "GET [FHIR BASE]/Observation?category=laboratory&_lastUpdated=ge{{period.start}}"
}, - {
- "valueString": "GET [FHIR BASE]/MedicationRequest?_lastUpdated=ge{{period.start}}"
}, - {
- "valueCoding": {
- "code": "suspended",
- "display": "Suspended"
}
}
]
}Submit a proposed non-material update to an existing canonical HealthcareService catalog entry for PCM/MoH review. This is a FHIR operation, not a REST update interaction: the active canonical HealthcareService is not changed by the operation response.
The request body is a FHIR Parameters resource. Parameter
proposedCatalog contains the complete proposed canonical HealthcareService
representation after the requested change and its id must match the operation
target. Optional parameter reason carries requester rationale.
Only name, extraDetails, and extension[exampleQuery] may differ
semantically from the current catalog entry; a changed name remains subject
to the catalog uniqueness check. PCM rejects any known protected-field difference in
category, type, information buckets or history depth, tagged details,
accessMode, accessDuration, allowPatientBucketChange, identifiers,
tags, lifecycle state, linkage, or any other field as material or
unsupported. The outer Parameters request prohibits meta.versionId and
meta.lastUpdated; the embedded complete proposedCatalog may retain both
optional values copied from the retrieved canonical. PCM removes them before
comparison, and neither provides optimistic concurrency. Comparison is
otherwise semantic rather than raw JSON: proposal version/timestamp metadata,
coding display text, representation ordering, and unknown ordinary
non-modifier extensions are neutral. Unknown ordinary extensions are accepted without interpretation or
a round-trip guarantee; unsupported modifier extensions reject the request.
Material changes use the new-service registration flow.
Ordinary canonical PUT /HealthcareService/{id} remains unsupported.
| id required | string |
| resourceType required | string Value: "Parameters" |
| id | string |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
required | Array of PCMProposedCatalogParameter (object) or PCMRequestCatalogReasonParameter (object) [ 1 .. 2 ] items |
{- "resourceType": "Parameters",
- "meta": {
}, - "parameter": [
- {
- "name": "proposedCatalog",
- "resource": {
- "resourceType": "HealthcareService",
- "id": "svc-catalog-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:05:00Z",
- "tag": [
]
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CAT-0101"
}
], - "active": true,
- "name": "Cross-Organization Patient Summary",
- "category": [
- {
- "coding": [
- {
- "code": "35",
- "display": "Hospital"
}
], - "text": "Hospital / continuity of care"
}
], - "type": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "extraDetails": "Lets a care team view recent laboratory results, medication information, and allergy information to understand current treatment, avoid duplicate tests, and reduce medication-safety risks.",
- "extension": [
- {
- "valueCoding": {
- "code": "active",
- "display": "Active"
}
}, - {
- "valueCode": "continuous"
}, - {
}, - {
- "valueString": "GET [FHIR BASE]/Observation?category=laboratory&_lastUpdated=ge{{period.start}}"
}, - {
- "valueString": "GET [FHIR BASE]/MedicationRequest?_lastUpdated=ge{{period.start}}"
}, - {
- "valueBoolean": true
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "laboratoryTests",
- "display": "בדיקות מעבדה"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}, - {
- "extension": [
- {
- "url": "bucket",
- "valueCodeableConcept": {
- "coding": [
- {
- "code": "medications",
- "display": "תרופות"
}
]
}
}, - {
- "url": "historyDepth",
}
]
}
]
}
}, - {
- "name": "reason",
- "valueString": "Clarifies the patient-facing service purpose. All fields other than extraDetails remain unchanged."
}
]
}{- "resourceType": "Parameters",
- "meta": {
}, - "parameter": [
- {
- "name": "requestId",
- "valueString": "catalog-update-req-20260105-0001"
}, - {
- "name": "status",
- "valueCode": "received"
}, - {
- "name": "message",
- "valueString": "PCM accepted the catalog update request for PCM/MoH review. The active HealthcareService remains unchanged until the request is approved and applied."
}
]
}Consent request creation, owned consent read/search, and owned consent deactivation. Deletion is not supported.
Search consents by supported parameters. Use _include to return actor organizations, endpoints, and parent orgs in a single bundle.
| _id | string |
| identifier | string FHIR identifier search parameter. |
| status | string |
| patient | string Search by patient logical reference. Identifier search uses patient:identifier=system|value. |
| patient:identifier | string Search Consent.patient by logical identifier, formatted as system|value. |
| pcm-service | string Search by pcmService extension reference (HealthcareService instance). |
| pcm-business-status | string Search by the PCM-managed business-status extension for HealthcareService or Consent. |
| _lastUpdated | string Standard FHIR instant search parameter on server-managed |
| _include | Array of strings (ConsentIncludeValues) Include authorized Consent actors using repeatable FHIR |
| _include:iterate | Array of strings (ConsentIterateIncludeValues) Items Enum: "Organization:endpoint" "Organization:partof" Recursively include authorized Organization endpoints or parents using repeatable FHIR |
{- "resourceType": "Bundle",
- "id": "bundle-consent-proposed-patient-search",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "Consent",
- "id": "consent-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:10:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CONSENT-0101"
}
], - "status": "proposed",
- "dateTime": "2026-01-05T10:10:00+02:00",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "continuous",
- "display": "Continuous"
}
]
}, - {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "patient": {
- "identifier": {
- "value": "324573740"
}
}, - "extension": [
- {
- "valueCoding": {
- "code": "requested",
- "display": "Requested"
}
}, - {
- "valueReference": {
- "reference": "HealthcareService/svc-instance-hosp-a-cross-org-summary"
}
}
], - "policy": [
- {
}
], - "provision": {
- "type": "permit",
- "purpose": [
- {
- "code": "TREAT",
- "display": "treatment"
}
], - "actor": [
- {
- "role": {
- "coding": [
- {
- "code": "IRCP",
- "display": "information recipient"
}
]
}, - "reference": {
- "reference": "Organization/org-sp-hospital-a"
}
}
]
}
}
}
]
}Create a proposed consent request for a patient and a service provider's
HealthcareService instance. The pcm-service extension must reference an
existing active instance service. PCM rejects requests that omit the service,
point to a canonical catalog service, or point to an inactive or otherwise
unusable instance. The calling Service Provider child Organization must be
operationally active: the child and Parent are active and all documented
policy preconditions permit use. Token issuance later repeats Organization and service
state checks, so an
existing active Consent does not authorize data-source access after the
Service Provider, target Data Source, service instance, or referenced catalog
becomes inactive/non-usable. The accepted request shape is documented
by the interaction-specific pcm-consent-submit server validation profile;
its canonical is not required in request meta.profile.
scope=patient-privacy, category=INFA, and the fixed legal policy are
mandatory on submit. Created/read response examples use the returned
pcm-consent profile. Every other Consent business element is prohibited in
the request and rejects the whole request.
The selected service supplies the initial requested/default access mode and
maximum duration. An authorized patient decision, including an assisted or
delegated flow outside this client API, may narrow continuous access to
one-time and/or approve a shorter period or later shorten it. The authoritative
returned Consent carries the requested mode while proposed and the effective
approved mode and period after approval; it never widens or extends the service
limits.
POST is not idempotent. If the client cannot determine whether a request
succeeded, it searches its own Consents by patient, service, and status
before deciding whether to retry; a retry can create a second Consent.
| resourceType required | string Value: "Consent" |
| id | string Optional FHIR create metadata; ignored by PCM. |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
| status required | string Value: "proposed" |
required | object (PCMConsentScope) |
required | Array of objects (PCMConsentInformationAccessCategory) = 1 items |
required | object (PCMLogicalPatientReference) |
required | Array of objects (PCMConsentPolicy) = 1 items |
required | Array of PCMConsentServiceExtension (object) or objects non-empty |
{- "resourceType": "Consent",
- "status": "proposed",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "patient": {
- "identifier": {
- "value": "324573740"
}
}, - "policy": [
- {
}
], - "extension": [
- {
- "valueReference": {
- "reference": "HealthcareService/svc-instance-hosp-a-cross-org-summary"
}
}
]
}{- "resourceType": "Consent",
- "id": "consent-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:10:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CONSENT-0101"
}
], - "status": "proposed",
- "dateTime": "2026-01-05T10:10:00+02:00",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "continuous",
- "display": "Continuous"
}
]
}, - {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "patient": {
- "identifier": {
- "value": "324573740"
}
}, - "extension": [
- {
- "valueCoding": {
- "code": "requested",
- "display": "Requested"
}
}, - {
- "valueReference": {
- "reference": "HealthcareService/svc-instance-hosp-a-cross-org-summary"
}
}
], - "policy": [
- {
}
], - "provision": {
- "type": "permit",
- "purpose": [
- {
- "code": "TREAT",
- "display": "treatment"
}
], - "actor": [
- {
- "role": {
- "coding": [
- {
- "code": "IRCP",
- "display": "information recipient"
}
]
}, - "reference": {
- "reference": "Organization/org-sp-hospital-a"
}
}
]
}
}Equivalent to GET /Consent with the same supported parameters, authorization ceiling, result profile, and errors.
| _id | string |
| identifier | string |
| status | string |
| patient | string |
| patient:identifier | string |
| pcm-service | string |
| pcm-business-status | string |
| _lastUpdated | string |
| _include | Array of strings (ConsentIncludeValues) |
| _include:iterate | Array of strings (ConsentIterateIncludeValues) Items Enum: "Organization:endpoint" "Organization:partof" |
{- "resourceType": "Bundle",
- "id": "bundle-consent-proposed-patient-search",
- "meta": {
}, - "type": "searchset",
- "total": 1,
- "link": [
], - "entry": [
- {
- "search": {
- "mode": "match"
}, - "resource": {
- "resourceType": "Consent",
- "id": "consent-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:10:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CONSENT-0101"
}
], - "status": "proposed",
- "dateTime": "2026-01-05T10:10:00+02:00",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "continuous",
- "display": "Continuous"
}
]
}, - {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "patient": {
- "identifier": {
- "value": "324573740"
}
}, - "extension": [
- {
- "valueCoding": {
- "code": "requested",
- "display": "Requested"
}
}, - {
- "valueReference": {
- "reference": "HealthcareService/svc-instance-hosp-a-cross-org-summary"
}
}
], - "policy": [
- {
}
], - "provision": {
- "type": "permit",
- "purpose": [
- {
- "code": "TREAT",
- "display": "treatment"
}
], - "actor": [
- {
- "role": {
- "coding": [
- {
- "code": "IRCP",
- "display": "information recipient"
}
]
}, - "reference": {
- "reference": "Organization/org-sp-hospital-a"
}
}
]
}
}
}
]
}{- "resourceType": "Consent",
- "id": "consent-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:25:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CONSENT-0101"
}
], - "status": "active",
- "dateTime": "2026-01-05T10:10:00+02:00",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "continuous",
- "display": "Continuous"
}
]
}, - {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "patient": {
- "identifier": {
- "value": "324573740"
}
}, - "extension": [
- {
- "valueCoding": {
- "code": "active",
- "display": "Active"
}
}, - {
- "valueReference": {
- "reference": "HealthcareService/svc-instance-hosp-a-cross-org-summary"
}
}
], - "policy": [
- {
}
], - "provision": {
- "type": "permit",
- "purpose": [
- {
- "code": "TREAT",
- "display": "treatment"
}
], - "period": {
- "start": "2026-01-05T10:20:00+02:00",
- "end": "2026-07-05T10:20:00+03:00"
}, - "actor": [
- {
- "role": {
- "coding": [
- {
- "code": "IRCP",
- "display": "information recipient"
}
]
}, - "reference": {
- "reference": "Organization/org-sp-hospital-a"
}
}, - {
- "role": {
- "coding": [
- {
- "code": "CST",
- "display": "custodian"
}
]
}, - "reference": {
- "reference": "Organization/org-ds-hmo-b"
}
}
]
}
}Service providers may deactivate a Consent request they created by setting
status=inactive. PCM FHIR API does not expose patient approval, rejection,
revocation, delegation, or assisted-consent flows; those are handled outside
this API. Service providers may update only consents they created; deletion
is not supported.
The body id must equal the URL id. The closed request contains only
status=inactive, fixed scope=patient-privacy, category=INFA, and legal
policy, optional ordinary unknown extensions, and an optional request-profile
declaration in meta.profile.
Identity, patient, service, actor, period, access-mode, business-status, and
every other Consent business element are prohibited; their presence rejects
the whole request. Submitted meta.versionId and meta.lastUpdated are
also prohibited.
Accepted updates use last-write-wins after complete transition validation;
If-Match and PATCH are not supported. The returned inactive Consent retains
the same logical id and PCM business identifier.
| id required | string |
| resourceType required | string Value: "Consent" |
| id required | string |
object (PCMInteractionMeta) FHIR interaction metadata accepted in client requests. Clients may declare the applicable request profile, but PCM validates the interaction shape independently. versionId and lastUpdated, along with all other unsupported Meta business/security content, are prohibited. | |
| status required | string Value: "inactive" |
required | object (PCMConsentScope) |
required | Array of objects (PCMConsentInformationAccessCategory) = 1 items |
required | Array of objects (PCMConsentPolicy) = 1 items |
Array of objects |
{- "resourceType": "Consent",
- "id": "consent-hosp-a-cross-org-summary",
- "status": "inactive",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "policy": [
- {
}
]
}{- "resourceType": "Consent",
- "id": "consent-hosp-a-cross-org-summary",
- "meta": {
- "lastUpdated": "2026-01-05T08:30:00Z",
}, - "identifier": [
- {
- "use": "official",
- "value": "PCM-CONSENT-0101"
}
], - "status": "inactive",
- "dateTime": "2026-01-05T10:10:00+02:00",
- "scope": {
- "coding": [
- {
- "code": "patient-privacy",
- "display": "Privacy Consent"
}
]
}, - "category": [
- {
- "coding": [
- {
- "code": "continuous",
- "display": "Continuous"
}
]
}, - {
- "coding": [
- {
- "code": "INFA",
- "display": "information access"
}
]
}
], - "patient": {
- "identifier": {
- "value": "324573740"
}
}, - "extension": [
- {
- "valueCoding": {
- "code": "service-provider-cancelled",
- "display": "Service Provider cancelled"
}
}, - {
- "valueReference": {
- "reference": "HealthcareService/svc-instance-hosp-a-cross-org-summary"
}
}
], - "policy": [
- {
}
], - "provision": {
- "type": "permit",
- "purpose": [
- {
- "code": "TREAT",
- "display": "treatment"
}
], - "period": {
- "start": "2026-01-05T10:20:00+02:00",
- "end": "2026-07-05T10:20:00+03:00"
}, - "actor": [
- {
- "role": {
- "coding": [
- {
- "code": "IRCP",
- "display": "information recipient"
}
]
}, - "reference": {
- "reference": "Organization/org-sp-hospital-a"
}
}, - {
- "role": {
- "coding": [
- {
- "code": "CST",
- "display": "custodian"
}
]
}, - "reference": {
- "reference": "Organization/org-ds-hmo-b"
}
}
]
}
}Returns the PCM server CapabilityStatement describing supported resources, interactions, and search parameters. Retrieval requires mTLS.
{- "resourceType": "CapabilityStatement",
- "id": "pcm-capabilitystatement",
- "version": "0.3.2",
- "description": "Public FHIR capabilities supported by PCM for participant onboarding data, service registration, and Consent management.",
- "format": [
- "json"
], - "software": {
- "name": "PCM FHIR Server"
}, - "implementation": {
- "description": "Production PCM FHIR endpoint for consent and service orchestration. Non-production environments use their assigned PCM FHIR base URL. Every PCM endpoint requires mTLS, including discovery and metadata.",
}, - "rest": [
- {
- "mode": "server",
- "documentation": "PCM supports only the declared interactions. Every public POST/PUT is validated against its closed interaction-specific request profile and fails atomically when prohibited content or a runtime rule is violated. FHIR create ignores a submitted id and assigns the authoritative logical id; update requires the body id to match the URL. Submitted meta.versionId and meta.lastUpdated are prohibited in every direct create/update request and in the outer request-catalog-update Parameters metadata. The complete proposedCatalog may retain optional versionId and lastUpdated copied from the retrieved canonical; PCM removes them before semantic comparison, and they do not provide optimistic concurrency. Unknown non-modifier extensions are not interpreted and are not guaranteed to round-trip; unsupported modifier extensions are rejected. Every failure handled by the FHIR API returns an appropriate HTTP status and OperationOutcome. HEAD is supported on resource read URLs, and every declared type search supports GET and form-encoded POST _search. Transaction, delete, PATCH, update-as-create, and version-aware If-Match updates are not supported.",
- "security": {
- "description": "Every PCM endpoint uses mandatory mTLS, including discovery, metadata, and FHIR interactions. FHIR resource calls additionally use an audience-restricted PCM access token. Confidential clients authenticate at the token endpoint with private_key_jwt using the client identity and certificate assigned to the calling role or application. The coarse system/*.crus scope is an authorization ceiling and does not override the declared interaction, caller role, ownership, field, state, visibility, or operation requirements."
}, - "resource": [
- {
- "type": "Organization",
- "supportedProfile": [
], - "documentation": "Returned Organization profiles expose the complete authoritative resource. MoH/PCM exclusively controls every Parent and child Organization.active value as well as logical/business identity, role, Parent linkage, name, the optional read-only OAuth redirect projection, and the read-only associated-certificate inventory. Parent inactivity prevents operational use of its children without rewriting their own active values. Initial fallback onboarding creates a Parent and Data Source role. An inactive, partially onboarded Data Source may omit its Endpoint; an active Data Source must reference one Endpoint, but technical availability is determined separately by that Endpoint.status. POST creates a Service Provider child only after PCM separately authorizes expansion. PUT uses the applicable closed request profile for Parent contacts, Service Provider contact overrides, or Data Source Endpoint/contact overrides. Any supplied prohibited field, including active, identifier, redirect URI, or certificate inventory, rejects the entire write.",
- "updateCreate": false,
- "interaction": [
- {
- "code": "read"
}, - {
- "code": "search-type"
}, - {
- "code": "update"
}, - {
- "code": "create"
}
], - "searchParam": [
- {
- "name": "_id",
- "type": "token",
- "documentation": "Search by logical id."
}, - {
- "name": "identifier",
- "type": "token",
- "documentation": "Search by organization business identifier."
}, - {
- "name": "active",
- "type": "token",
- "documentation": "Search by activation status."
}, - {
- "name": "type",
- "type": "token",
- "documentation": "Search by organization type."
}, - {
- "name": "partof",
- "type": "reference",
- "documentation": "Search by parent organization reference."
}, - {
- "name": "_lastUpdated",
- "type": "date",
- "documentation": "Search by the server-managed resource update timestamp."
}
], - "searchInclude": [
- "Organization:endpoint",
- "Organization:partof"
]
}, - {
- "type": "Endpoint",
- "supportedProfile": [
], - "documentation": "Returned Endpoint profiles expose the complete authoritative Endpoint. A Data Source may create and update only its own participant Endpoint through the closed request profiles. It controls technical availability with status active or suspended and may place an existing Endpoint permanently off; off cannot be restored and an Endpoint cannot be created off. Address changes are accepted only while suspended and invalidate authorization for the previous audience. A referenced Endpoint must be replaced on the owning Data Source Organization before it is turned off. Only a referenced active Endpoint is eligible for Data Source token issuance and active introspection. Endpoint suspension/off does not change Consent lifecycle and does not replace required operational reporting. PCM derives immutable managingOrganization and manages the read-only certificate inventory; both are prohibited in participant requests. PCM system Endpoints remain PCM-managed.",
- "updateCreate": false,
- "interaction": [
- {
- "code": "read"
}, - {
- "code": "search-type"
}, - {
- "code": "create"
}, - {
- "code": "update"
}
], - "searchParam": [
- {
- "name": "_id",
- "type": "token",
- "documentation": "Search by logical id."
}, - {
- "name": "_lastUpdated",
- "type": "date",
- "documentation": "Search by the server-managed resource update timestamp."
}, - {
- "name": "thumbprint",
- "type": "token",
- "documentation": "Search authorized Endpoint resources by a thumbprint in PCM's read-only associated-certificate inventory. A match does not register or authorize a certificate, describe the complete trust store, prove current use, or declare token binding."
}
]
}, - {
- "type": "HealthcareService",
- "supportedProfile": [
], - "documentation": "Catalog definitions and provider-instance registrations tied to organizations. Returned resources conform to the complete catalog or instance profile, include that canonical in meta.profile, and carry the PCM-managed HealthcareService classification tag. Create uses one of two closed submit profiles: an existing-catalog request contains basedOn and an optional request-profile declaration; a new-service request contains the writable service definition. Direct create requests must omit meta.tag, meta.versionId, and meta.lastUpdated because PCM assigns the authoritative response metadata and classification. Clients may declare the applicable request profile in meta.profile, as the examples do, but the declaration is optional and PCM validates the request shape independently. A valid new-service request creates the coupled catalog and instance as pending and inactive. PUT is limited to the owning Service Provider's strict instance business-status request. Runtime transitions permit pending to cancelled as withdrawal, active to suspended, and suspended to active or cancelled; direct owner active to cancelled and owner changes to PCM/MoH-only states are rejected. PCM derives HealthcareService.active. Canonical PUT is rejected; non-material canonical proposals use $request-catalog-update, whose complete proposed catalog representation retains the fixed catalog classification tag and may retain optional comparison-neutral meta.versionId and meta.lastUpdated copied from the retrieved canonical. Suspension temporarily inactivates affected eligible Consents and a validated resume may restore them; withdrawal or termination permanently inactivates them. Cancelled instances are terminal. The owner retains direct read/search visibility of its cancelled registrations for audit and idempotent retries, while they remain outside ordinary discovery.",
- "updateCreate": false,
- "interaction": [
- {
- "code": "read"
}, - {
- "code": "search-type"
}, - {
- "code": "create"
}, - {
- "code": "update"
}
], - "operation": [
- {
- "name": "request-catalog-update",
- "documentation": "Submit a complete proposed canonical for non-material review. Its id must match the operation target; only name, extraDetails, and exampleQuery may differ semantically from the current canonical. Any other known protected business-field difference rejects the whole request. The outer Parameters versionId and lastUpdated are prohibited. Within proposedCatalog, optional versionId, lastUpdated, coding display text, representation ordering, and unknown ordinary non-modifier extensions are comparison-neutral. Unknown ordinary extensions are not interpreted or guaranteed to round-trip; unsupported modifier extensions are rejected. The active catalog resource is not changed by the operation response."
}
], - "searchParam": [
- {
- "name": "_id",
- "type": "token",
- "documentation": "Search by logical id."
}, - {
- "name": "active",
- "type": "token",
- "documentation": "Search by effective activation status. For catalog searches, client discovery returns active/registrable catalog entries; active=false is only meaningful for visible instance registry searches."
}, - {
- "name": "identifier",
- "type": "token",
- "documentation": "Search by HealthcareService business identifier (catalog or instance identifier system)."
}, - {
- "name": "service-category",
- "type": "token",
- "documentation": "Search by HealthcareService.category using the FHIR R4 service-category search parameter."
}, - {
- "name": "service-type",
- "type": "token",
- "documentation": "Search by HealthcareService.type using the FHIR R4 service-type search parameter."
}, - {
- "name": "name",
- "type": "string",
- "documentation": "Search by HealthcareService.name."
}, - {
- "name": "organization",
- "type": "reference",
- "documentation": "Search by HealthcareService.providedBy using the FHIR R4 organization search parameter (instance profile only)."
}, - {
- "name": "_tag",
- "type": "token",
- "documentation": "Filter catalog definitions and provider-instance registrations by the PCM HealthcareService classification tag: http://pcm.fhir.health.gov.il/cs/pcm-meta-tag|catalog or |instance."
}, - {
- "name": "based-on",
- "type": "reference",
- "documentation": "Search HealthcareService instance registrations by the canonical catalog HealthcareService referenced in extension[basedOn]."
}, - {
- "name": "pcm-business-status",
- "type": "token",
- "documentation": "Search by the authoritative HealthcareService business status, including provider-instance suspended."
}, - {
- "name": "_lastUpdated",
- "type": "date",
- "documentation": "Search by the server-managed resource update timestamp."
}
]
}, - {
- "type": "Consent",
- "documentation": "Consent request creation, owned Consent read/search, and owned Consent deactivation for PCM services. Returned resources conform to PCMConsent and include that canonical in meta.profile. Create uses a closed submit profile whose business content is proposed status, patient identifier, and service reference plus the base-required fixed scope/category envelope and fixed legal policy. Deactivation uses a closed PUT profile containing inactive status plus the same fixed envelope and policy. All other client-nonwritable, server-managed Consent content is prohibited rather than silently ignored. PCM initializes the proposed Consent access mode from the selected service and treats the service duration as a maximum; an authorized patient decision, including an assisted or delegated flow outside this client API, may narrow continuous access to one-time and/or shorten the period. The authoritative returned Consent carries the requested mode while proposed and the effective approved mode and period after approval. Clients may declare the applicable request profile in meta.profile, as the examples do, but the declaration is optional and PCM validates the interaction shape independently. Supports _include=Consent:actor and _include:iterate=Organization:endpoint|Organization:partof on Consent searches.",
- "updateCreate": false,
- "interaction": [
- {
- "code": "read"
}, - {
- "code": "search-type"
}, - {
- "code": "create"
}, - {
- "code": "update"
}
], - "searchParam": [
- {
- "name": "_id",
- "type": "token",
- "documentation": "Search by logical id."
}, - {
- "name": "identifier",
- "type": "token",
- "documentation": "Search by PCM consent business identifier."
}, - {
- "name": "status",
- "type": "token",
- "documentation": "Search by Consent.status."
}, - {
- "name": "patient",
- "type": "reference",
- "documentation": "Search by patient logical reference. Identifier search uses the FHIR reference identifier modifier: patient:identifier=system|value."
}, - {
- "name": "pcm-service",
- "type": "reference",
- "documentation": "Search by the pcmService extension reference (HealthcareService instance)."
}, - {
- "name": "pcm-business-status",
- "type": "token",
- "documentation": "Search by the PCM-managed Consent business status."
}, - {
- "name": "_lastUpdated",
- "type": "date",
- "documentation": "Search by the server-managed resource update timestamp."
}
], - "searchInclude": [
- "Consent:actor",
- "Organization:endpoint",
- "Organization:partof"
]
}
]
}
], - "name": "PcmCapabilityStatement",
- "title": "PCM FHIR Capability Statement",
- "status": "active",
- "experimental": false,
- "date": "2026-07-28",
- "publisher": "PCM",
- "kind": "instance",
- "fhirVersion": "4.0.1"
}OAuth2/SMART discovery document for the PCM authorization server.
Retrieval of this discovery document requires mTLS. PCM supports standard
SMART App Launch v2 patient-level resource-scope syntax, including
query-constrained scopes with search modifiers, chaining, and reverse
chaining. user/... app-launch scopes and _filter scope constraints are
not supported. PCM does not enumerate standard SMART scopes through
scopes_supported and advertises no custom non-FHIR scopes.
{- "grant_types_supported": [
- "authorization_code",
- "client_credentials"
], - "response_types_supported": [
- "code"
], - "response_modes_supported": [
- "query"
], - "token_endpoint_auth_methods_supported": [
- "private_key_jwt"
], - "token_endpoint_auth_signing_alg_values_supported": [
- "ES256"
], - "introspection_endpoint_auth_methods_supported": [
- "private_key_jwt"
], - "introspection_endpoint_auth_signing_alg_values_supported": [
- "ES256"
], - "tls_client_certificate_bound_access_tokens": false,
- "code_challenge_methods_supported": [
- "S256"
], - "capabilities": [
- "launch-standalone",
- "client-confidential-asymmetric",
- "permission-patient",
- "permission-v2"
]
}Returns OAuth2 authorization server metadata for the PCM issuer, including authorization, token, and introspection endpoint locations. The metadata request itself requires mTLS.
{- "grant_types_supported": [
- "authorization_code",
- "client_credentials"
], - "response_types_supported": [
- "code"
], - "code_challenge_methods_supported": [
- "S256"
], - "token_endpoint_auth_methods_supported": [
- "private_key_jwt"
], - "token_endpoint_auth_signing_alg_values_supported": [
- "ES256"
], - "introspection_endpoint_auth_methods_supported": [
- "private_key_jwt"
], - "introspection_endpoint_auth_signing_alg_values_supported": [
- "ES256"
], - "tls_client_certificate_bound_access_tokens": false
}Issues an opaque access token using either the standalone SMART
authorization-code exchange or a supported client-credentials token class.
The endpoint requires mTLS as a transport-level policy, while OAuth2
client authentication is performed with private_key_jwt.
Each request uses a fresh assertion signed with a certificate registered
out of band for the opaque client_id. The assertion audience is this
exact token endpoint. When one certificate is registered for the calling
role/application, it is used for transport mTLS and assertion signing. If
PCM registered different certificates for that client, the assertion SHOULD include
cnf.x5t#S256 identifying the certificate actually presented on this
mTLS connection; PCM validates a supplied value against the connection.
For data source access, the client_assertion MUST include the HL7 B2B
authorization extension object as profiled by PCM, including version,
requester organization identity, purpose of use, consent policy, and an
absolute Consent reference. PCM uses the B2B object syntax without claiming
the full UDAP token-request profile.
PCM issues tokens only for role/application clients mapped to operationally
active Organizations. For child Organization identities, this requires the child to be active=true,
the parent to be active, and all externally documented role/state
preconditions to permit use.
For data source access, PCM also rechecks the target Data Source Organization
and parent, its currently referenced participant Endpoint, the referenced
Consent, the HealthcareService instance, and the instance's canonical catalog
before issuing the token. Data Source-access and presence tokens are issued
only when that referenced Endpoint is active and the request's exact
resource equals its current Endpoint.address; suspended and off
Endpoints are ineligible and an old/replaced address is no longer an audience.
Token issuance is
allowed only when the relevant Organizations are operationally active, the
Consent is active, and both the instance and catalog are
businessStatus=active and active=true.
Endpoint status does not gate PCM-management token issuance: an otherwise
authorized Data Source retains management access while its Endpoint is
suspended or off so it can resume or replace it.
PCM issues each access token for exactly one resource server. The token
request MUST contain exactly one RFC 8707 resource parameter; requests
containing more than one resource parameter fail with invalid_target.
Clients request one token per resource server.
PCM-management and introspection-authentication bearer requests use
scope=system/*.crus. Data Source-access and presence requests use their
separately derived scopes and never use that management scope.
| grant_type required | string Value: "authorization_code" |
| code required | string non-empty Short-lived, single-use code returned by the authorization endpoint. |
| redirect_uri required | string <uri> Exact URI used in the authorization request and registered for this client. |
| code_verifier required | string [ 43 .. 128 ] characters |
| client_assertion_type required | string (ClientAssertionType) Value: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer" |
| client_assertion required | string <application/jwt> (ClientAssertion) Fresh compact private_key_jwt assertion signed with ES256 and the key
registered out of band for the opaque client ID. |
The client assertion is newly generated for this exchange and
has iss=sub=pcm-client-hospital-a, aud equal to the exact
PCM token endpoint, a unique jti, and a short expiry. The
compact value uses the required ES256 header; its
ExampleSignature segment is illustrative rather than a
cryptographic test vector.
grant_type=authorization_code&code=v4LTC1JxW9Q2example&redirect_uri=https%3A%2F%2Fapp.hospital-a.example.org%2Fpcm%2Foauth2%2Fcallback&code_verifier=8Zp7n4mTQ2xV6cK9rB3wF5sL1yH0dJ4uN7aE6gC2iP8&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwY20tY2xpZW50LWhvc3BpdGFsLWEiLCJzdWIiOiJwY20tY2xpZW50LWhvc3BpdGFsLWEiLCJhdWQiOiJodHRwczovL3BjbTJtLmhlYWx0aC5nb3YuaWwvdG9rZW4iLCJpYXQiOjE3MDY2NDAwMDAsImV4cCI6MTcwNjY0MDMwMCwianRpIjoiYXV0aC1jb2RlLWV4Y2hhbmdlLTAwMDEifQ.ExampleSignature
scope reports the app-launch grant returned to the client.
It is not the Data Source's final enforcement scope. PCM derives
the effective permissions from the applicable service
definition and returns them to the Data Source through active
token introspection.
{- "access_token": "9d984f7d-c183-49f1-9b7b-9d7426204f17",
- "token_type": "Bearer",
- "expires_in": 30,
- "scope": "patient/*.rs"
}Validates a subject access token and returns its associated authorization
context to the Data Source that owns the token audience.
Protected with transport-level mTLS. The introspecting client can
authenticate either with a 30-second bearer token whose exact resource is
this introspection endpoint, or with private_key_jwt fields directly in
the form body. Supplying both methods is invalid.
PCM re-evaluates Organization, the target Data Source's currently referenced
Endpoint, Consent, HealthcareService instance, and canonical catalog state
during introspection. An active response requires that Endpoint to remain
active and that the subject token audience still equal its exact current
address. A token does not authorize access after the Service Provider, target
Data Source, Endpoint, instance, or catalog is no longer operationally
active/usable. Endpoint suspension or retirement therefore yields
active=false without changing the Consent.
For a one-time Consent, each approved Data Source has its own one-hour
access window beginning with that Data Source's first qualifying active
introspection. That window does not authorize another Data Source and is
not a shared global window. Introspection returns active=false for that
Data Source after its window ends.
Unknown, inactive, wrong-audience, and other-Data-Source subject tokens
receive the same privacy-safe {"active":false} response.
A Data Source MAY cache an active introspection result only until the
returned token exp. PCM currently issues source tokens with a 30-second
lifetime, so the cache lasts no longer than the token's remaining lifetime
and never more than 30 seconds. The Data Source MAY introspect more often,
but need not call introspection again for each protected request while the
unexpired result is cached; it MUST continue to enforce the cached audience,
scope, context, and all other returned constraints and stop using the result
at exp.
Every active response includes pcm_authentication_context, recording
the mTLS certificate and client-assertion signing certificate observed
when the subject token was issued. This PCM-specific field is
informational: the access token remains Bearer, no standard top-level
cnf is returned, and the Data Source MAY compare the current
protected-resource mTLS certificate with
token_endpoint_mtls.x5t#S256 under its local policy.
| token required | string Opaque subject token to introspect; distinct from the caller bearer credential. |
| token_type_hint | string Value: "access_token" |
token=2f1b8b7e-2d1a-4b0b-9e9a-9f02a7b3b6a1
{- "active": true,
- "scope": "patient/Observation.rs",
- "client_id": "pcm-client-hospital-a",
- "organization_id": "http://pcm.fhir.health.gov.il/identifier/pcm-organization-id#PCM-ORG-HOSP-A-SP-001",
- "pcm_authentication_context": {
- "token_endpoint_mtls": {
- "x5t#S256": "eiVFuKs_ZspXC6MYLWLzThgD1yj5U6Cgs_4JSQEBx_c"
}, - "client_assertion_signing": {
- "x5t#S256": "zHVQke4ePAOhosYm2tgQ8hCC4wlNBJkV3iJ7w_LlL9Y"
}, - "correlation_verified": true
}, - "fhirContext": [
- {
- "type": "Patient",
- "identifier": {
- "value": "000000018"
}
}, - {
- "type": "Consent",
- "identifier": {
- "value": "PCM-CONSENT-0001"
}
}, - {
- "type": "HealthcareService",
- "identifier": {
- "value": "PCM-HS-INST-0101"
}
}
], - "exp": 1706640030,
- "iat": 1706640000,
- "sub": "pcm-client-hospital-a"
}