Vai al contenuto

Flusso G — Annullamento referto già pubblicato su T4MED

Operazione: PUT /DocumentReference/{id} Flusso: G — grepoServicesgt4medServices → T4MED


Contesto

Il Flusso G si applica quando un referto già pubblicato su T4MED (tramite Flusso E o Flusso F) deve essere revocato — ad esempio a seguito di un annullamento richiesto dal medico entro la finestra di tempo disponibile dopo la firma (vedi 05-vincoli-e-eccezioni.md).

A differenza dei Flussi E/F (Bundle transaction con POST), l'annullamento si esegue con un PUT sul DocumentReference originale, impostando status = "entered-in-error".

Richiede il T4MedDocumentId del DocumentReference da annullare. Come chiarito in Flusso E — "Relazione tra gli identificativi", questo id non è derivabile dallo UniqueDocumentId del documento da annullare: è il valore genuinamente assegnato da T4MED e già acquisito da gt4medServices dalla response al momento della pubblicazione originale (Flusso E o Flusso F) — non richiede quindi una nuova chiamata dedicata a T4MED, ma nemmeno un calcolo a partire da altri campi.

L'attachment referenzia il Binary già esistente tramite il T4MedBinaryId (Binary/<T4MedBinaryId-originale>), anch'esso genuinamente assegnato da T4MED, non derivabile, e conservato da gt4medServices al momento della pubblicazione originale.

document-version viene comunque incrementato (> 1) e riportato anche in questo messaggio, per uniformità con gli altri scenari, sebbene non sia strettamente necessario per l'annullamento.


Dati del caso di esempio

Campo Valore
T4MED Appointment ID T00450
Codice fiscale (= T4MED Patient ID) RSVDMN11A41H620X
Paziente ROSAVIOLA DALMINA (nome di fantasia)
UniqueDocumentId (documento da annullare) urn:uuid:e7c3f91b-8a42-4d5e-9f16-3b8c7a2e5d41
T4MedDocumentId (documento originale) DOC-T4MED-000123 (acquisito dalla response del Flusso E, non derivato dallo UniqueDocumentId)
T4MedBinaryId (documento originale) BIN-T4MED-000123 (acquisito dalla response del Flusso E)
Codice Azione SINED CAD

Conformità allo standard FHIR R4

Per il Flusso G la specifica T4MED e lo standard FHIR R4 coincidono: PUT /DocumentReference/{id} con sostituzione completa della risorsa e status = "entered-in-error" è il meccanismo standard FHIR R4 per marcare una risorsa come erroneamente pubblicata.

Per il formato dell'identificativo (DocumentReference.identifier) e il limite di lunghezza, vedi le sezioni corrispondenti nel Flusso E — si applicano invariati anche al Flusso G.


Endpoint e autenticazione

PUT https://biocaretest.evisus.it/api/fhir/DocumentReference/DOC-T4MED-000123
Content-Type: application/fhir+json
X-API-Key: <chiave>

Endpoint di TEST. In PROD: https://biocaresuite.evisus.it/api/fhir. Autenticazione tramite header custom X-API-Key.


Referto annullativo

REQUEST

PUT https://biocaretest.evisus.it/api/fhir/DocumentReference/DOC-T4MED-000123
Content-Type: application/fhir+json
X-API-Key: <chiave>
{
  "resourceType": "DocumentReference",
  "id": "DOC-T4MED-000123",
  "status": "entered-in-error",
  "identifier": [
    {
      "system": "urn:ietf:rfc:3986",
      "value": "urn:uuid:e7c3f91b-8a42-4d5e-9f16-3b8c7a2e5d41"
    }
  ],
  "type": {
    "coding": [
      {
        "system": "http://loinc.org",
        "code": "11488-4",
        "display": "Consult note"
      }
    ]
  },
  "subject": {
    "reference": "Patient/RSVDMN11A41H620X",
    "display": "ROSAVIOLA DALMINA"
  },
  "date": "2026-06-03T11:00:00+02:00",

  "securityLabel": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality",
          "code": "R",
          "display": "restricted"
        }
      ]
    }
  ],

  "extension": [
    {
      "url": "http://t4med.it/fhir/StructureDefinition/patient-visibility-authorized",
      "valueCode": "S"
    },
    {
      "url": "http://t4med.it/fhir/StructureDefinition/ticket-payment-status",
      "valueCode": "P"
    },
    {
      "url": "http://t4med.it/fhir/StructureDefinition/document-version",
      "valueInteger": 2
    }
  ],

  "content": [
    {
      "attachment": {
        "contentType": "application/pdf",
        "url": "Binary/BIN-T4MED-000123"
      }
    }
  ],
  "context": {
    "related": [
      {
        "reference": "Appointment/T00450"
      }
    ]
  }
}

RESPONSE ATTESA

HTTP/1.1 200 OK
Content-Type: application/fhir+json
{
  "resourceType": "DocumentReference",
  "id": "DOC-T4MED-000123",
  "status": "entered-in-error",
  "...": "(resto della risorsa invariato)"
}

Azione gt4medServices dopo la risposta:

  • Aggiornare lo stato interno del documento come annullato, in modo coerente con l'annullamento già effettuato lato REPO/FSE.

Nota — Aggiornamento dei soli metadati (stesso meccanismo, senza cambio di stato)

Il Flusso G riusa l'endpoint PUT /DocumentReference/{id}, che serve anche per un caso distinto dall'annullamento: l'aggiornamento di un metadato di riservatezza/visibilità (es. ticket-payment-status) senza variare il PDF, la versione, né lo status (che resta "current"). Questo scenario è documentato separatamente nel Flusso H, a cui si rimanda.


Response di fallimento

Per il formato generale e l'elenco completo degli scenari di errore vedi 06-response-failure.md.

DocumentReference originale non trovato

HTTP/1.1 404 Not Found
Content-Type: application/fhir+json
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "not-found",
      "details": {
        "text": "Nessuna risorsa DocumentReference trovata con id '<id-t4med-del-documento-originale>'"
      },
      "diagnostics": "PUT /DocumentReference/<id-t4med-del-documento-originale>"
    }
  ]
}

Documento già annullato (status già entered-in-error)

HTTP/1.1 409 Conflict
Content-Type: application/fhir+json
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "conflict",
      "details": {
        "text": "Il DocumentReference '<id-t4med-del-documento-originale>' e' gia' nello stato 'entered-in-error'"
      },
      "diagnostics": "PUT /DocumentReference/<id-t4med-del-documento-originale>"
    }
  ]
}

AZIONE gt4medServices:

  • Su 404/409: non ritentare, segnalare il disallineamento per verifica (vedi Eccezione E2 in 05-vincoli-e-eccezioni.md) — il referto risulterà annullato su REPO/FSE ma non correttamente riflesso su T4MED.