{"openapi":"3.0.1","info":{"title":"Provider Access API","description":"API FHIR de datos masivos ($export) conforme a CMS-0057-F para que los proveedores accedan a datos poblacionales de pacientes. Compatible con autenticación SMART Backend Services.","version":"v1"},"paths":{"/health":{"get":{"tags":["Health"],"summary":"Indica que la aplicación responde, qué imagen la sirve y si la caché rechazó algún prefijo de clave de este servicio. Los campos de Redis van junto al estado sin cambiarlo; la verificación de despliegue los lee aparte. Solo nombres de prefijo: esta ruta es anónima.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}}}}}},"/Group":{"get":{"tags":["ProviderAccess"],"summary":"Búsqueda FHIR de Group: los grupos de exportación que este cliente puede usar (QA-22). Desde esta lista el proveedor inicia una exportación masiva, así que pasa por los mismos controles que la exportación, salvo el consentimiento, y el grupo de otro proveedor queda fuera del resultado en vez de rechazarse.","parameters":[{"name":"_id","in":"query","schema":{"type":"string"}},{"name":"api-version","in":"query","schema":{"type":"string"}},{"name":"x-api-version","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/GroupSearchBundle"}}}},"403":{"description":"Forbidden","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"503":{"description":"Service Unavailable","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}}}}},"/Group/{groupId}":{"get":{"tags":["ProviderAccess"],"summary":"Lectura FHIR de Group. Responde como la exportación: 404 para un id que no corresponde a ningún grupo, 403 para un grupo al que este cliente no tiene acceso.","parameters":[{"name":"groupId","in":"path","required":true,"schema":{"type":"string"}},{"name":"api-version","in":"query","schema":{"type":"string"}},{"name":"x-api-version","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/FhirGroup"}}}},"403":{"description":"Forbidden","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"404":{"description":"Not Found","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"503":{"description":"Service Unavailable","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}}}}},"/Group/{groupId}/$export":{"get":{"tags":["ProviderAccess"],"summary":"Exportación masiva de datos (Bulk Data) de Provider Access","parameters":[{"name":"groupId","in":"path","required":true,"schema":{"type":"string"}},{"name":"_type","in":"query","schema":{"type":"string"}},{"name":"_since","in":"query","schema":{"type":"string"}},{"name":"api-version","in":"query","schema":{"type":"string"}},{"name":"x-api-version","in":"header","schema":{"type":"string"}},{"name":"Prefer","in":"header","description":"Las solicitudes de inicio de Bulk Data son asíncronas; el servidor responde 202 con el Content-Location del trabajo. El único valor aceptado es respond-async.","required":true,"schema":{"enum":["respond-async"],"type":"string","default":"respond-async"}}],"responses":{"202":{"description":"Accepted"},"400":{"description":"Bad Request","content":{"text/plain":{"schema":{"type":"string"}}}},"403":{"description":"Forbidden","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"404":{"description":"Not Found","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"406":{"description":"Not Acceptable","content":{"text/plain":{"schema":{"type":"string"}}}},"503":{"description":"Service Unavailable","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}}}}},"/jobs/{jobId}":{"get":{"tags":["ProviderAccess"],"summary":"Consultar el estado de una exportación","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string"}},{"name":"api-version","in":"query","schema":{"type":"string"}},{"name":"x-api-version","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportStatusManifest"}}}},"202":{"description":"Accepted"},"404":{"description":"Not Found","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"500":{"description":"Internal Server Error","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}}}},"delete":{"tags":["ProviderAccess"],"summary":"Cancelar una exportación","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string"}},{"name":"api-version","in":"query","schema":{"type":"string"}},{"name":"x-api-version","in":"header","schema":{"type":"string"}}],"responses":{"202":{"description":"Accepted"},"404":{"description":"Not Found","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"409":{"description":"Conflict","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}}}}},"/jobs/{jobId}/files/{fileId}":{"get":{"tags":["ProviderAccess"],"summary":"Descargar un archivo de la exportación","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string"}},{"name":"fileId","in":"path","required":true,"schema":{"type":"string"}},{"name":"api-version","in":"query","schema":{"type":"string"}},{"name":"x-api-version","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/fhir+ndjson":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"404":{"description":"Not Found","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"502":{"description":"Bad Gateway","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}},"503":{"description":"Service Unavailable","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/OperationOutcome"}}}}}}},"/metadata":{"get":{"tags":["ProviderAccess"],"summary":"CapabilityStatement de FHIR (Bulk Data)","responses":{"200":{"description":"OK","content":{"application/fhir+json":{"schema":{"$ref":"#/components/schemas/CapabilityStatementSummary"}}}}}}},"/.well-known/smart-configuration":{"get":{"tags":["SmartConfiguration"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SmartConfiguration"}}}}},"summary":"Configuración SMART (smart-configuration)"}},"/openapi.json":{"get":{"tags":["Discovery"],"summary":"Este documento OpenAPI","description":"La descripción OpenAPI 3 de esta API. Anónima y de solo lectura.","operationId":"get-openapi","responses":{"200":{"description":"The OpenAPI document (application/json).","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[{}]}}},"components":{"schemas":{"BundleEntrySearch":{"type":"object","properties":{"mode":{"type":"string","nullable":true}},"additionalProperties":false},"BundleLink":{"type":"object","properties":{"relation":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}},"additionalProperties":false},"CapabilityStatementImplementation":{"type":"object","properties":{"description":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}},"additionalProperties":false},"CapabilityStatementSummary":{"type":"object","properties":{"resourceType":{"type":"string","nullable":true},"id":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"version":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"status":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"instantiates":{"type":"array","items":{"type":"string"},"nullable":true},"implementation":{"$ref":"#/components/schemas/CapabilityStatementImplementation"},"fhirVersion":{"type":"string","nullable":true},"format":{"type":"array","items":{"type":"string"},"nullable":true},"rest":{"type":"array","items":{},"nullable":true}},"additionalProperties":false,"description":"Schema only: the top-level elements of the CapabilityStatement GET /metadata\r\nreturns. The statement itself is built in the controller; this declares\r\nwhat a client can rely on without restating every nested element."},"ExportManifestFile":{"type":"object","properties":{"type":{"type":"string","nullable":true},"url":{"type":"string","nullable":true}},"additionalProperties":false},"ExportStatusManifest":{"type":"object","properties":{"transactionTime":{"type":"string","nullable":true},"request":{"type":"string","nullable":true},"requiresAccessToken":{"type":"boolean"},"output":{"type":"array","items":{"$ref":"#/components/schemas/ExportManifestFile"},"nullable":true},"error":{"type":"array","items":{"$ref":"#/components/schemas/ExportManifestFile"},"nullable":true}},"additionalProperties":false,"description":"The Bulk Data complete-status manifest returned by GET /jobs/{jobId}.\r\n`requiresAccessToken` is always true: every file URL is\r\n/jobs/{id}/files/{fileId} on this API, served under [Authorize], and the\r\nIG makes the element required so a client knows to send the token (QA-78)."},"FhirGroup":{"type":"object","properties":{"resourceType":{"type":"string","nullable":true},"id":{"type":"string","nullable":true},"active":{"type":"boolean"},"type":{"type":"string","nullable":true},"actual":{"type":"boolean"},"name":{"type":"string","nullable":true}},"additionalProperties":false,"description":"A FHIR R4 Group naming one Provider Access export group. It carries no\r\nmember: the configured ids are member numbers rather than Patient resource\r\nids, and listing them would disclose members who opted out before consent\r\nscreening has run. The members reach a provider through $export, screened."},"GroupBundleEntry":{"type":"object","properties":{"fullUrl":{"type":"string","nullable":true},"resource":{"$ref":"#/components/schemas/FhirGroup"},"search":{"$ref":"#/components/schemas/BundleEntrySearch"}},"additionalProperties":false},"GroupSearchBundle":{"type":"object","properties":{"resourceType":{"type":"string","nullable":true},"type":{"type":"string","nullable":true},"total":{"type":"integer","format":"int32"},"link":{"type":"array","items":{"$ref":"#/components/schemas/BundleLink"},"nullable":true},"entry":{"type":"array","items":{"$ref":"#/components/schemas/GroupBundleEntry"},"nullable":true}},"additionalProperties":false,"description":"A FHIR R4 searchset Bundle of Group resources."},"HealthStatus":{"type":"object","properties":{"status":{"type":"string","nullable":true},"gitSha":{"type":"string","nullable":true},"buildNumber":{"type":"string","nullable":true},"builtAt":{"type":"string","nullable":true},"redisKeyspaceProbe":{"type":"string","nullable":true},"redisKeyspacesRefused":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":false,"description":"The /health body."},"OperationOutcome":{"type":"object","properties":{"resourceType":{"type":"string","nullable":true},"issue":{"type":"array","items":{"$ref":"#/components/schemas/OperationOutcomeIssue"},"nullable":true}},"additionalProperties":false,"description":"A FHIR R4 OperationOutcome, the body of every refusal this API writes."},"OperationOutcomeIssue":{"type":"object","properties":{"severity":{"type":"string","nullable":true},"code":{"type":"string","nullable":true},"diagnostics":{"type":"string","nullable":true}},"additionalProperties":false},"SmartConfiguration":{"type":"object","properties":{"issuer":{"type":"string","nullable":true},"jwks_uri":{"type":"string","nullable":true},"authorization_endpoint":{"type":"string","nullable":true},"token_endpoint":{"type":"string","nullable":true},"token_endpoint_auth_methods_supported":{"type":"array","items":{"type":"string"},"nullable":true},"token_endpoint_auth_signing_alg_values_supported":{"type":"array","items":{"type":"string"},"nullable":true},"grant_types_supported":{"type":"array","items":{"type":"string"},"nullable":true},"scopes_supported":{"type":"array","items":{"type":"string"},"nullable":true},"code_challenge_methods_supported":{"type":"array","items":{"type":"string"},"nullable":true},"capabilities":{"type":"array","items":{"type":"string"},"nullable":true}},"additionalProperties":false,"description":"The SMART configuration document, in the snake_case SMART names."}},"securitySchemes":{"Bearer":{"type":"http","description":"Paste a JWT token.","scheme":"Bearer","bearerFormat":"JWT"},"oauth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://api-fmcom-interoppatientaccess-dev-001.azure-api.net/smart-auth/api/token","scopes":{"provider/Export.read":"Bulk export of attributed members"}}}}}},"security":[{"Bearer":[]},{"oauth2":["provider/Export.read"]}],"servers":[{"url":"https://api-fmcom-interoppatientaccess-dev-001.azure-api.net/provider-access"}]}