PackagesCanonicalsLogsProblems
    Packages
    ca.qc.sq.sgrdv@1.1.1
    http://sante.quebec/fhir/CapabilityStatement/sgrdv
{
  "description": "Capacités FHIR R4 de SGRDV en tant que serveur vis-à-vis des portails utilisateurs. Décrit les opérations de recherche de disponibilités ($find), d'agrégation ($aggregate), de verrouillage ($lock), de prolongation de verrou ($extend-lock), de retrait de verrou ($release-lock) et de réservation ($book) acceptées en provenance des portails et des DMÉs.",
  "_filename": "CapabilityStatement-SGRDVCapabilityStatement.json",
  "package_name": "ca.qc.sq.sgrdv",
  "format": [ "json", "xml" ],
  "date": "2026-04-20",
  "publisher": "Santé Québec",
  "fhirVersion": "4.0.1",
  "name": "SGRDVCapabilityStatement",
  "type": null,
  "experimental": "true",
  "resourceType": "CapabilityStatement",
  "title": "SGRDV — CapabilityStatement Surface API",
  "package_version": "1.1.1",
  "status": "active",
  "id": "34e26f19-41b4-4fa3-8cd2-b26dbdeaa1b8",
  "kind": "requirements",
  "url": "http://sante.quebec/fhir/CapabilityStatement/sgrdv",
  "version": "1.1.1",
  "rest": [ {
    "mode": "server",
    "resource": [ {
      "type": "Appointment",
      "operation": [ {
        "name": "lock",
        "definition": "http://sante.quebec/fhir/OperationDefinition/sgrdv-appointment-lock",
        "documentation": "Verrouille une disponibilité candidate parmi une liste ordonnée. Contrat portail : sans lockIdentifier ni lockEndTime en entrée."
      }, {
        "name": "find",
        "definition": "http://sante.quebec/fhir/OperationDefinition/sgrdv-appointment-find",
        "documentation": "Recherche des disponibilités de rendez-vous selon les critères fournis par le portail. Retourne un Bundle searchset."
      }, {
        "name": "aggregate",
        "definition": "http://sante.quebec/fhir/OperationDefinition/sgrdv-appointment-aggregate",
        "documentation": "Agrège les disponibilités de rendez-vous selon les critères fournis. Retourne un Parameters avec comptage groupé par date."
      }, {
        "name": "extend-lock",
        "definition": "http://sante.quebec/fhir/OperationDefinition/sgrdv-appointment-extend-lock",
        "documentation": "Prolonge un verrou existant identifié par lockIdentifier. Retourne un Bundle identique à celui du $lock (lockIdentifier conservé + nouveau lockEndTime)."
      }, {
        "name": "release-lock",
        "definition": "http://sante.quebec/fhir/OperationDefinition/sgrdv-appointment-release-lock",
        "documentation": "Retire un verrou existant identifié par lockIdentifier. En sortie : HTTP 204 sans corps en cas de succès, HTTP 400 avec OperationOutcome en cas d'erreur."
      }, {
        "name": "book",
        "definition": "http://sante.quebec/fhir/OperationDefinition/sgrdv-appointment-book",
        "documentation": "Réserve un rendez-vous sur une disponibilité préalablement verrouillée via $lock. Contrat actuellement en draft (status = #draft) — le contrat peut évoluer avant stabilisation. En entrée : appointment + slot en logical reference, patient enrichi (telecom + sms + rank), orientation-id, encounter-reason, location-string, lockIdentifier et Provenance multi-agents. En sortie : Bundle collection contenant un Parameters qui expose la disponibilité réservée en logical reference (Reference.identifier seul) en cas de succès — l'Appointment et les ressources associées ne sont pas rématérialisés, le portail dispose déjà de l'information via $find ; OperationOutcome seul en cas de refus (verrou expiré ou refus DMÉ)."
      } ],
      "interaction": [ {
        "code": "create"
      } ],
      "documentation": "Gestion des disponibilités (recherche, agrégation, verrouillage, prolongation et retrait de verrou, réservation) par les portails.",
      "supportedProfile": [ "http://sante.quebec/fhir/StructureDefinition/sgrdv-find-request-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-find-response-bundle", "http://sante.quebec/fhir/StructureDefinition/sgrdv-aggregate-request-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-aggregate-response-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-lock-request-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-lock-response-bundle", "http://sante.quebec/fhir/StructureDefinition/sgrdv-extend-lock-request-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-release-lock-request-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-book-request-parameters", "http://sante.quebec/fhir/StructureDefinition/sgrdv-book-response-bundle" ]
    } ],
    "documentation": "SGRDV agit comme serveur FHIR R4 pour les portails. Les portails recherchent des disponibilités via POST Appointment/$find, obtiennent des comptages agrégés via POST Appointment/$aggregate, soumettent des demandes de verrou via POST Appointment/$lock, prolongent un verrou existant via POST Appointment/$extend-lock, retirent un verrou via POST Appointment/$release-lock, et réservent un rendez-vous sur une disponibilité verrouillée via POST Appointment/$book.\n\n**HTTP headers X-Correlation-Id et X-Discussion-Id** — Tous les appels (toutes opérations confondues) doivent inclure les headers `X-Correlation-Id` (identifiant unique de transaction, UUID recommandé, généré par le portail client) et `X-Discussion-Id` (identifiant de fil de discussion, regroupant plusieurs transactions d'un même fil). SGRDV retourne ces mêmes identifiants en écho dans la réponse HTTP, les propage aux appels en aval (DMÉ/SIP-C) et les journalise. La corrélation avec le citoyen (NIU) et, le cas échéant, le professionnel relève de la responsabilité du portail/DMÉ qui a initié la transaction. Ce mécanisme est strictement HTTP — il n'est pas représenté dans le payload FHIR."
  } ]
}