e.Toscana Compliance 
Request for Comments: RFC-RF-003
Del: 03/06/2008  
Categoria: Applicativa
Destinatari: Regione Toscana, Aziende Sanitarie ed Ospedaliere, Comuni, Amministrazioni locali, Associazioni

	Carta Sanitaria della Regione Toscana
	
Indice
======

1. Contesto di riferimento	
2. Analisi 
  2.1 Use cases
    2.1.1 Nuova prenotazione
    2.1.2 Conferma erogazione
    2.1.3 Revoca prenotazione
    2.1.4 Modifica prenotazione
  2.2 Eventi
    2.2.1 Nuova prenotazione
    2.2.2 Conferma erogazione
    2.2.3 Modifica prenotazione
    2.2.4 Revoca prenotazione
3. Schemi XSD
  3.1 XSD Tipi Base
  3.2 XSD Nuova prenotazione
  3.3 XSD Conferma erogazione
  3.4 XSD Revoca prenotazione
  3.5 XSD Modifica prenotazione
4. Bibliografia

1.Contesto di riferimento
=========================
Questo RFC  la declinazione del RFC-AUSL8-001 relativamente al servizio di prenotazione prestazioni sanitarie tramite sportello unico (CUP).
 
2. Analisi
==========
Gli eventi generati in questo ambito prendono spunto dai Casi d'Uso individuati di seguito.

2.1 Use cases
=============

2.1.1 Nuova prenotazione
========================
Il paziente si presenta ad uno sportello CUP (o telefona ad un call-center di cup telefonico) munito di una ricetta (o pi) del servizio sanitario nazionale, redatta dal medico curante.

La ricetta contiene i dati amministrativi obbligatori e la richiesta di un numero di prestazioni fino ad un massimo come da normativa vigente.

Il paziente che richiede il servizio di prenotazione puo' avere esenzioni dal pagamento della quota ticket per parte delle prestazioni da prenotare.

Lo sportellista CUP, sia per accesso diretto che telefonico, verifica tutti i dati di riconoscimento del paziente ed i dati amministrativi obbligatori che validano la ricetta.

Riconosciuto il paziente e validata la ricetta, vengono ad una ad una ricercate le prestazioni richieste e viene fornito un minimo elenco delle possibili date a disposizione in base alla normativa vigente sui tempi di attesa.

In questa fase, oltre a verificare le disponibilita' proprie dell'Azienda interrogata, e' possibile interrogare anche strutture di prenotazione di domini superiori (Sovra CUP).

Il paziente conferma le date ed i presidi a lui piu' congeniali. In base alle tipologie di esenzione ed alla normativa vigente, vengono calcolati gli importi di ticket dovuti.

Il paziente, invitato a ritirare la documentazione se la sessione e' telefonica, versati gli importi dovuti, riceve tutta la documentazione relativa agli appuntamenti fissati, alle preparazioni propedeutiche alle visite/analisi programmate, ai riferimenti necessari per presentarsi dove previsto, alla quietanza di quanto versato.


2.1.2 Conferma erogazione
=========================
Ogni ambulatorio/servizio che eroghi prestazioni prenotabili tramite CUP, effettuata la prestazione stessa, provvedera' a registrare le risultanze di quanto erogato.

Le registrazioni a chiusura delle prestazioni saranno legate dal presente evento alla originale prenotazione, cosi' chiudendo il ciclo "prenotazione/erogazione".

La registrazione a chiusura deve effettuarsi anche nel caso nel quale il paziente non si presenti, senza peraltro avere annullato la prenotazione nei tempi previsti. Tale chiusura con causale "non presentato" dara' atto anche alle azioni amministrative previste.


2.1.3 Revoca prenotazione
===============================
Il paziente si presenta ad uno sportello CUP (o telefona ad un call-center di cup telefonico), entro i tempi previsti dalla normativa vigente, facendo riferimento alla documentazione rilasciata all'atto della prenotazione.

Comunica l'impossibilita' di fruire - o la sopraggiunta inutilita' - della prestazione prenotata, chiedendone la cancellazione, azione che rende disponibile ad altri pazienti i tempi di agenda liberati.

Al paziente viene consegnata la documentazione necessaria al ritiro del rimborso quota ticket, se gia' versata, per le prestazioni cancellate.


2.1.4 Modifica prenotazione
===============================
Il paziente si presenta ad uno sportello CUP (o telefona ad un call-center di cup telefonico), entro i tempi previsti dalla normativa vigente, facendo riferimento alla documentazione rilasciata all'atto della prenotazione.

Comunica l'impossibilita' di fruire nei tempi e nei modi di una o piu' delle prestazioni prenotate, richiedendo lo spostamento nel tempo e/o nel luogo delle prestazioni stesse.

Riconosciuto il paziente e la prestazione gia' esistente tramite i riferimenti forniti, vengono ad una ad una ricercate le prestazioni da modificare e viene fornito un minimo elenco delle possibili date a disposizione in base alla normativa vigente sui tempi di attesa.

In questa fase, oltre a verificare le disponibilita' proprie dell'Azienda interrogata, e' possibile interrogare anche strutture di prenotazione di domini superiori (Sovra CUP).

Il paziente conferma le date ed i presidi a lui piu' congeniali.

Il paziente, invitato a ritirare la documentazione se la sessione e' telefonica, riceve tutta la nuova documentazione relativa agli appuntamenti sostitutivi fissati, alle preparazioni propedeutiche alle visite/analisi programmate, ai riferimenti necessari per presentarsi dove previsto.


2.2 Eventi
==========
In corrispondenza di ciascun Use Case sopra descritto, vengono qui definiti gli eventi opportuni, specificando la definizione generale data in [1].

2.2.1 Nuova prenotazione
========================
Il servizio interessato genera un evento con tali specifiche:
Livello:                  1
Origine/RFC ref:          RFC-RF-003
Origine/Numero evento:    0001
Ordinamento temporale:    B
Contenuto:                Amministrativo
Stato/Percentuale:        0
Dettaglio:                secondo le schema rfc_cup_ev_0001.xsd

2.2.2 Conferma erogazione
=========================
Livello:                  1
Origine/RFC ref:          RFC-RF-003
Origine/Numero evento:    0002
Ordinamento temporale:    E
Contenuto:                Amministrativo
Stato/Percentuale:        100
Dettaglio:                secondo le schema rfc_cup_ev_0002.xsd

2.2.3 Revoca prenotazione
===============================
Livello:                  1
Origine/RFC ref:          RFC-RF-003
Origine/Numero evento:    0003
Ordinamento temporale:    E
Contenuto:                Amministrativo
Stato/Percentuale:        100
Dettaglio:                secondo le schema rfc_cup_ev_0003.xsd

2.2.4 Modifica prenotazione
===============================
Livello:                  1
Origine/RFC ref:          RFC-RF-003
Origine/Numero evento:    0004
Ordinamento temporale:    B
Contenuto:                Amministrativo
Stato/Percentuale:        100
Dettaglio:                secondo le schema rfc_cup_ev_0004.xsd

3. Schemi XSD
=============
Vengono qui riportati gli schemi XSD introdotti nei paragrafi precedenti.

3.1 XSD Tipi Base - rfc_cup_ev.xsd
=====================================

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.erreeffe.it/schema/rfc_cup_ev" targetNamespace="http://www.erreeffe.it/schema/rfc_cup_ev" elementFormDefault="qualified">
	<xsd:complexType name="struttura">
		<xsd:annotation>
			<xsd:documentation>Codice HSP11 e HSP11bis</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="tns:valoreCodificato">
				<xsd:sequence>
					<xsd:element name="subStruttura" type="tns:valoreCodificato"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:simpleType name="estInt">
		<xsd:annotation>
			<xsd:documentation>Indica se il paziente  ricoverato (I) o no (E)</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="E"/>
			<xsd:enumeration value="I"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="numeroRicetta">
		<xsd:annotation>
			<xsd:documentation>Numero della ricetta SSN o interna</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:integer"/>
	</xsd:simpleType>
	<xsd:simpleType name="data">
		<xsd:annotation>
			<xsd:documentation>Il formato e' quello ISO 8601</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="\d{4}-\d{2}-\d{2}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="ora">
		<xsd:annotation>
			<xsd:documentation>Il formato e' quello ISO 8601</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="\d{2}:\d{2}:\d{2}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="valoreCodificato">
		<xsd:sequence>
			<xsd:element name="Codice" type="xsd:string"/>
			<xsd:element name="Descrizione" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:simpleType name="sesso">
		<xsd:annotation>
			<xsd:documentation>Indica il sesso di un paziente M o F</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="M"/>
			<xsd:enumeration value="F"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="codUsl">
		<xsd:annotation>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="\d{3}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="codRegione">
		<xsd:annotation>
			<xsd:documentation/>
		</xsd:annotation>
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="\d{3}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="usl">
		<xsd:sequence>
			<xsd:element name="codice" type="tns:codUsl"/>
			<xsd:element name="descrizione" type="xsd:string" minOccurs="0"/>
			<xsd:element name="codregione" type="tns:codRegione"/>
			<xsd:element name="regione" type="xsd:string" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="accesso">
		<xsd:sequence>
			<xsd:element name="CodiceAziendale" type="tns:valoreCodificato"/>
			<xsd:element name="CodiceReginale" type="tns:valoreCodificato"/>
			<xsd:element name="NumeroRicetta" type="tns:numeroRicetta" nillable="true" minOccurs="0"/>
			<xsd:element name="TipoProponente" type="tns:valoreCodificato" nillable="true" minOccurs="0"/>
			<xsd:element name="EstInt" type="tns:estInt"/>
			<xsd:element name="Finalita" type="tns:valoreCodificato" nillable="true" minOccurs="0"/>
			<xsd:element name="Proponente" type="xsd:string" nillable="true" minOccurs="0"/>
			<xsd:element name="USL" type="tns:usl" nillable="false"/>
			<xsd:element name="Reparto" type="tns:valoreCodificato" nillable="true" minOccurs="0"/>
			<xsd:element name="Disciplina" type="tns:valoreCodificato" nillable="true" minOccurs="0"/>
			<xsd:element name="CentroCosto" type="tns:valoreCodificato" nillable="true" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Prenotazione">
		<xsd:sequence>
			<xsd:element name="Codice" type="xsd:string"/>
			<xsd:element name="DataContatto" type="tns:data"/>
			<xsd:element name="ElencoImpegnative" type="tns:Impegnativa" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Medico">
		<xsd:sequence>
			<xsd:element name="CodiceAziendale" type="xsd:string"/>
			<xsd:element name="CodiceRegionale" type="xsd:string"/>
			<xsd:element name="CodiceUniversale" type="xsd:string"/>
			<xsd:element name="Codfisc" type="xsd:string" minOccurs="0"/>
			<xsd:element name="Cognome" type="xsd:string"/>
			<xsd:element name="Nome" type="xsd:string"/>
			<xsd:element name="DataNascita" type="tns:data"/>
			<xsd:element name="Sesso" type="tns:sesso"/>
			<xsd:element name="Usl" type="tns:usl"/>
			<xsd:element name="Tipo" type="tns:valoreCodificato" nillable="true"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Impegnativa">
		<xsd:sequence>
			<xsd:element name="Codzona" type="xsd:string" minOccurs="0"/>
			<xsd:element name="IDImpegnativa" type="xsd:int"/>
			<xsd:element name="Codice" type="tns:numeroRicetta" minOccurs="0"/>
			<xsd:element name="Tipo" type="xsd:string" minOccurs="0"/>
			<xsd:element name="Data" type="tns:data" nillable="true"/>
			<xsd:element name="Branca" type="tns:valoreCodificato"/>
			<xsd:element name="Medico" type="tns:Medico" nillable="true"/>
			<xsd:element name="QuotaRicetta" type="xsd:decimal" nillable="true"/>
			<xsd:element name="Importo" type="xsd:decimal" nillable="true"/>
			<xsd:element name="CodiceEsenzione" type="tns:valoreCodificato" minOccurs="0"/>
			<xsd:element name="VerificaCF" type="tns:valoreCodificato" minOccurs="0"/>
			<xsd:element name="Suggerita" type="tns:valoreCodificato" minOccurs="0"/>
			<xsd:element name="Priorita" type="tns:valoreCodificato" minOccurs="0"/>
			<xsd:element name="CompilataElettronicamente" type="tns:valoreCodificato" minOccurs="0"/>
			<xsd:element name="Accesso" type="tns:accesso"/>
			<xsd:element name="ElencoPrestazioni" type="tns:Prestazione" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Agenda">
		<xsd:sequence>
			<xsd:element name="Nome" type="xsd:string"/>
			<xsd:element name="Indirizzo" type="xsd:string"/>
			<xsd:element name="Indirizzo2" type="xsd:string"/>
			<xsd:element name="Telefono" type="xsd:string"/>
			<xsd:element name="Stanza" type="tns:valoreCodificato"/>
			<xsd:element name="Erogatore" type="tns:Agenda"/>
			<xsd:element name="Struttura" type="tns:struttura"/>
			<xsd:element name="TipoPresidio" type="tns:valoreCodificato"/>
			<xsd:element name="Reparto" type="tns:valoreCodificato"/>
			<xsd:element name="Disciplina" type="tns:valoreCodificato"/>
			<xsd:element name="CentroCosto" type="tns:valoreCodificato"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Prestazione">
		<xsd:sequence>
			<xsd:element name="CodiceRegionale" type="xsd:string"/>
			<xsd:element name="DescrizioneAziendale" type="xsd:string"/>
			<xsd:element name="CodiceAziendale" type="xsd:string" nillable="true"/>
			<xsd:element name="Quantita" type="xsd:nonNegativeInteger" default="1" nillable="true"/>
			<xsd:element name="ImportoUnitario" type="xsd:decimal" nillable="true"/>
			<xsd:element name="Preparazione" type="xsd:string" minOccurs="0"/>
			<xsd:element name="AvvertenzeOperatore" type="xsd:string" minOccurs="0"/>
			<xsd:element name="ElencoAppuntamenti" type="tns:Appuntamento" nillable="true" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="Appuntamento">
		<xsd:sequence>
			<xsd:element name="ProgressivoCiclo" type="xsd:short" nillable="true"/>
			<xsd:element name="Data" type="tns:data" nillable="true"/>
			<xsd:element name="Ora" type="tns:ora" minOccurs="0"/>
			<xsd:element name="PrimaDisp" type="tns:Appuntamento" nillable="true"/>
			<xsd:element name="Agenda" type="tns:Agenda" nillable="true"/>
			<xsd:element name="Erogato" type="xsd:boolean" nillable="true" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>




3.2 XSD Nuova prenotazione - rfc_cup_ev_0001.xsd
===================================================

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.erreeffe.it/schema/rfc_cup_ev" targetNamespace="http://www.erreeffe.it/schema/rfc_cup_ev" elementFormDefault="qualified">
	<xsd:include schemaLocation="rfc_cup_ev.xsd" id="rfc_cup_ev"/>
	<xsd:complexType name="CupEv0001">
		<xsd:sequence>
			<xsd:element name="PrenotazioniPrenotate" type="tns:Prenotazione" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>



3.3 XSD Conferma erogazione - rfc_cup_ev_0002.xsd
====================================================

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.erreeffe.it/schema/rfc_cup_ev"  targetNamespace="http://www.erreeffe.it/schema/rfc_cup_ev" elementFormDefault="qualified">
	<xsd:include schemaLocation="rfc_cup_ev.xsd" id="rfc_cup_ev"/>
	<xsd:complexType name="CupEv0002">
		<xsd:sequence>
			<xsd:element name="PrenotazioniErogate"   type="tns:Prenotazione" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>



3.4 XSD Revoca prenotazione - rfc_cup_ev_0003.xsd
==========================================================

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.erreeffe.it/schema/rfc_cup_ev" targetNamespace="http://www.erreeffe.it/schema/rfc_cup_ev" elementFormDefault="qualified">
	<xsd:include schemaLocation="rfc_cup_ev.xsd" id="rfc_cup_ev"/>
	<xsd:complexType name="CupEv0003">
		<xsd:sequence>
			<xsd:element name="DataAnnullamento" type="tns:data" nillable="false"/>
			<xsd:element name="Motivo" type="xsd:string"/>
			<xsd:element name="CodicePrenotazione" type="xsd:string" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>



3.5 XSD Modifica prenotazione - rfc_cup_ev_0004.xsd
==========================================================

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.erreeffe.it/schema/rfc_cup_ev" targetNamespace="http://www.erreeffe.it/schema/rfc_cup_ev" elementFormDefault="qualified">
	<xsd:include schemaLocation="rfc_cup_ev.xsd" id="rfc_cup_ev"/>
	<xsd:complexType name="CupEv0004">
		<xsd:sequence>
			<xsd:element name="PrenotazioniErogate" type="tns:Prenotazione" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>


4. Bibliografia
===============
[1]RFC-AUSL8-001 - Evento generato in ambiente sanitario
[2]http://www.cnipa.gov.it/site/_files/Architetture_applicative_r07.pdf
[3]W3C XML Schema - www.w3.org/XML/Schema
