e.Toscana Compliance 
Request for Comments: NNN rev. 0.3
Del: 24/03/2010 
Categoria: Applicativo
Destinatari: Regione Toscana, Aziende Sanitarie

  RFC Gestione dati sportelli per l'attivazione 
  della Carta Sanitaria Elettronica
  ----------------------------------------------

Indice
================================================================================
1. Contesto di riferimento	
2. Obiettivi	
3. Analisi 
3.1. Contenuto dei messaggi
3.2. XML Schema dei messaggi
3.3. Esempi XML
4. Prodotti attesi
5. Bibliografia
6. Storico Versioni


1. Contesto di riferimento	
================================================================================
Il contesto in cui si colloca questo documento RFC e' quello della Carta 
Sanitaria Elettronica (CSE) e degli sportelli abilitati sul territorio toscano. 
Il cittadino si deve recare presso uno di questi sportelli per attivare la 
propria CSE ed eventualmente esprimere il consenso anche per l'attivazione del 
Fascicolo Sanitario Elettronico (FSE).
 
In ogni Azienda Sanitaria viene identificato un "Responsabile d'Azienda" che  
abilitato e autorizzato alla gestione dei dati di sportello tramite l'utilizzo
di un'apposita applicazione, il Card Management System (CMS).
Le informazioni che vengono gestite sono:
- i dati anagrafici degli sportelli
- l'orario di apertura e chiusura
- le news per la notifica di comunicazioni o eventi particolari. 

Alla Carta Sanitaria Elettronica  stata dedicata un'apposita sezione
informativa sul sito web istituzione di Regione Toscana 
(www.regione.toscana.it/cartasanitaria). All'interno di quest'area viene reso 
disponibile l'elenco di tutti gli sportelli attivati presso le varie strutture
delle Aziende e il relativo orario di apertura giornaliera - con validit 
settimanale.

Si rende quindi necessario comunicare a RT tutte le modifiche riguardanti gli
sportelli in modo che le relative pagine del sito web possano essere aggiornate 
e mantenute allineate con quanto deciso dal responsabile d'Azienda.
  

2. Obiettivi	
================================================================================
Assunto il contesto di riferimento descritto nel precedente paragrafo, obiettivo
di questo documento RFC e' descrivere il modello organizzativo adottato, i suoi 
scenari e casi d'uso, la tipologia di informazioni e gli eventi al verificarsi 
dei quali tali informazioni sono generate e trasmesse dalle Aziende (tramite il
CMS) verso i destinatari.

L'invio di queste informazioni ha l'obiettivo di mantenere i destinatari
aggiornati sulle variazioni dei dati oggetti della comunicazione e permettere
loro di attivare tutte quelle azioni che ritengono necessarie. 


3. Analisi
================================================================================ 
Le differenze tecniche dei sistemi cooperanti e le diverse caratteristiche
organizzative interne del singolo Ente richiedono l'adozione di un modello di 
cooperazione che permetta un accoppiamento lasco tra i sistemi partecipanti. 
Il modello di cooperazione per eventi del CART soddisfa questa esigenza. 
Esso individua due ruoli tra i SIL partecipanti:
 - Pubblicatore: un SIL assume il ruolo di pubblicatore quando invia eventi 
   nel sistema; 
 - Sottoscrittore: ruolo ricoperto da SIL che comunicano all'infrastruttura 
   interesse per un certo tipo di eventi e sono poi abilitati a ricevere i dati. 

La comunicazione delle modifiche avviene attraverso messaggi XML (i cui 
schemi sono definiti in sezione 3.2.) utilizzando i servizi erogati da Regione 
Toscana ed esposti alle Aziende dall'infrastruttura di cooperazione applicativa 
CART. Nello specifico si far riferimento ad una modalit di trasmissione e 
ricezione via Integration Manager.
Il dettaglio sulla modalita' di interfacciamento con l'infrastruttura e' 
descritto in [1][2].

Nel dominio della CSE, si individuano le seguenti tipologie di evento:
 - Aggiornamento anagrafica: inserimento, modifica e cancellazione di uno
   sportello 
 - Variazione orario: variazione dellorario di apertura/chiusura (che ha 
   validit settimanale) 
 - Comunicazione news: comunicazione generica (riferita ad un singolo
   sportello) da mettere on-line in tempo reale. 
 

3.1. Contenuto dei messaggi
--------------------------------------------------------------------------------
Le informazioni presenti nei messaggi XML per la comunicazione delle variazioni
ai dati di sportello sono le seguenti:
 - indentificativo univoco dello sportello
 - tipo e data dell'operazione
 - dati anagrafici dello sportello
 - orari di apertura/chiusura giornaliera
 - news.

In funzione dell'evento verr utilizzato solo uno specifico sottinsieme di tali
dati. Per il campo "tipoOperazione", che risulta signaficativo solo per 
l'evento aggiornamento anagrafica, si utilizzata la seguente codifica:
 - 01: inserimento
 - 02: modifica
 - 03: cancellazione.

Nelle sezioni seguenti viene prima descritto in dettaglio il formato dei 
messaggi (utilizzando la notazione XML Schema [3]) per poi dare alcuni esempi 
esplicativi di messaggio.

 
3.2. XML Schema dei messaggi 
--------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.regione.toscana.it/cartasanitaria" elementFormDefault="qualified">
	<xs:element name="AggiornamentoAnagraficaSportello">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="idSportello" type="rfc:String16" minOccurs="1" maxOccurs="1" />
				<xs:element name="tipoOperazione" type="rfc:String2" minOccurs="1" maxOccurs="1">
					<xs:annotation>
						<xs:documentation>
							Codice che indica il tipo di operazione. Campo codificato. I valori
							ammissibili sono i seguenti:
							01  Inserimento
							02  Modifica
							03  Cancellazione
						</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="dataOperazione" type="rfc:String10" minOccurs="1" maxOccurs="1"/>			
				<xs:element name="azienda" type="rfc:String24" minOccurs="1" maxOccurs="1"/>
				<xs:element name="provincia" type="rfc:String16" minOccurs="1" maxOccurs="1" />
				<xs:element name="comune" type="rfc:String24" minOccurs="1" maxOccurs="1">
				<xs:element name="indirizzo" type="rfc:String24" minOccurs="1" maxOccurs="1" />
				<xs:element name="CAP" type="rfc:String5" minOccurs="0" maxOccurs="1">
				<xs:element name="note" type="rfc:String255" minOccurs="0" maxOccurs="1">
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- Tipi comuni -->

	<xs:simpleType name="String255">
		<xs:restriction base="xs:string">
			<xs:length value="255" />
		</xs:restriction>
	</xs:simpleType>	
	<xs:simpleType name="String24">
		<xs:restriction base="xs:string">
			<xs:length value="24" />
		</xs:restriction>
	</xs:simpleType>	
	<xs:simpleType name="String16">
		<xs:restriction base="xs:string">
			<xs:length value="16" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String10">
		<xs:restriction base="xs:string">
			<xs:length value="10" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String5">
		<xs:restriction base="xs:string">
			<xs:length value="5" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String2">
		<xs:restriction base="xs:string">
			<xs:length value="2" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.regione.toscana.it/cartasanitaria" elementFormDefault="qualified">
	<xs:element name="VariazioneOrario">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="idSportello" type="rfc:String16" minOccurs="1" maxOccurs="1" />
				<xs:element name="dataOperazione" type="rfc:String10" minOccurs="1" maxOccurs="1"/>			
				<xs:element name="luned">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="marted">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="mercoled">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="gioved">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="venerd">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="sabato">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="domenica">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="mattinaApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="mattinaChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioApertura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
							<xs:element name="pomeriggioChiusura" type="rfc:String5" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- Tipi comuni -->

	<xs:simpleType name="String16">
		<xs:restriction base="xs:string">
			<xs:length value="16" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String10">
		<xs:restriction base="xs:string">
			<xs:length value="10" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String5">
		<xs:restriction base="xs:string">
			<xs:length value="5" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.regione.toscana.it/cartasanitaria" elementFormDefault="qualified">
	<xs:element name="ComunicazioneNews">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="idSportello" type="rfc:String16" minOccurs="1" maxOccurs="1" />
				<xs:element name="dataOperazione" type="rfc:String10" minOccurs="1" maxOccurs="1"/>			
				<xs:element name="news" type="rfc:String255" minOccurs="1" maxOccurs="1"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<!-- Tipi comuni -->

	<xs:simpleType name="String255">
		<xs:restriction base="xs:string">
			<xs:length value="255" />
		</xs:restriction>
	</xs:simpleType>	
	<xs:simpleType name="String16">
		<xs:restriction base="xs:string">
			<xs:length value="16" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="String10">
		<xs:restriction base="xs:string">
			<xs:length value="10" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema> 


3.3. Esempi XML
--------------------------------------------------------------------------------

Esempio di messaggio relativo alla modifica dell'anagrafica di sportello:

<?xml version="1.0" encoding="UTF-8"?>
<AggiornamentoAnagraficaSportello xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
 targetNamespace="http://www.regione.toscana.it/cartasanitaria" elementFormDefault="qualified">
	<idSportello>1234567890</idSportello>
	<tipoOperazione>01</tipoOperazione>
	<dataOperazione>12/02/2010</dataOperazione>
	<azienda>CAREGGI</azienda>
	<provincia>FIRENZE</provincia>
	<comune>FIRENZE</comune>
	<indirizzo>VIALE MORGAGNI, 85</indirizzo>
	<CAP>50134</CAP>
	<note>PAD. 9 CLIN.OST.</note>
</AggiornamentoAnagraficaSportello>

Esempio di messaggio relativo alla variazione dell'orario di sportello:

<?xml version="1.0" encoding="UTF-8"?>
<VariazioneOrario xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
 targetNamespace="http://www.regione.toscana.it/cartasanitaria" elementFormDefault="qualified">
	<idSportello>1234567890</idSportello>
	<dataOperazione>12/02/2010</dataOperazione>
	<luned>
		<mattinaApertura>08:00<mattinaApertura>
		<mattinaChiusura>13:30<mattinaChiusura>
		<pomeriggioApertura>14:30<pomeriggioApertura>
		<pomeriggioChiusura>18:00<pomeriggioChiusura>
	</luned>
	<marted>
		<mattinaApertura>08:00<mattinaApertura>
		<mattinaChiusura><mattinaChiusura>
		<pomeriggioApertura><pomeriggioApertura>
		<pomeriggioChiusura>17:00<pomeriggioChiusura>
	</marted>
	<mercoled>
		<mattinaApertura>08:00<mattinaApertura>
		<mattinaChiusura>13:30<mattinaChiusura>
		<pomeriggioApertura>14:30<pomeriggioApertura>
		<pomeriggioChiusura>18:00<pomeriggioChiusura>
	</mercoled>
	<gioved>
		<mattinaApertura>08:00<mattinaApertura>
		<mattinaChiusura><mattinaChiusura>
		<pomeriggioApertura><pomeriggioApertura>
		<pomeriggioChiusura>17:00<pomeriggioChiusura>
	</gioved>
	<venerd>
		<mattinaApertura>08:00<mattinaApertura>
		<mattinaChiusura>13:30<mattinaChiusura>
		<pomeriggioApertura><pomeriggioApertura>
		<pomeriggioChiusura><pomeriggioChiusura>
	</venerd>
	<sabato>
		<mattinaApertura>09:00<mattinaApertura>
		<mattinaChiusura>12:00<mattinaChiusura>
		<pomeriggioApertura><pomeriggioApertura>
		<pomeriggioChiusura><pomeriggioChiusura>
	</sabato>
	<domenica>
		<mattinaApertura><mattinaApertura>
		<mattinaChiusura><mattinaChiusura>
		<pomeriggioApertura><pomeriggioApertura>
		<pomeriggioChiusura><pomeriggioChiusura>
	</domenica>
</VariazioneOrario>

Esempio di messaggio relativo alla comunicazione di news:

<?xml version="1.0" encoding="UTF-8"?>
<ComunicazioneNews xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
 targetNamespace="http://www.regione.toscana.it/cartasanitaria" elementFormDefault="qualified">
	<idSportello>1234567890</idSportello>
	<dataOperazione>12/02/2010</dataOperazione>
	<news>Luned 15 Febbraio lo sportello sar chiuso per motivi tecnici<news>
</comunicazioneNews>


4. Prodotti attesi	
================================================================================
NN.


5. Bibliografia
================================================================================

[1] "Manuale d'Uso Infrastruttura CART", Regione Toscana, 
Versione 1.01 del 03/12/2007 

[2] "SDK-CART", Regione Toscana, Versione 1.1 del 20/04/2008 

[3] "XML Schema", W3C Recommendation 28 October 2004, 
http://www.w3.org/XML/Schema  

[4] "Piattaforma per lo Sviluppo e Rilascio di Componenti Software", http://oscat.rete.toscana.it/


6. Storico versioni
================================================================================

vers 0.1 del 18/02/2010
-----------------------
Prima emissione

vers 0.2 del 10/03/2010
-----------------------
Aggiunti giorni sabato e domenica all'insieme dei dati gestiti dall'evento "variazione orario"

vers 0.3 del 24/03/2010
-----------------------
Modificato l'esempio di file xml relativo all'evento "variazione orario" per contemplare anche il caso di orario d'apertura continuato


 