e.Toscana Compliance 
Request for Comments: 
Del: 24/02/2010
Categoria: Applicativa
Destinatari: Regione Toscana, ASL/AO

Flusso FED ad eventi

Indice
================================================================================
1. Contesto di riferimento	
2. Obiettivi	
3. Analisi 
3.1. Casi d'uso
3.2. XML Schema[1] degli eventi
3.3. WSDL[2] dei servizi
4. Prodotti attesi
5. Bibliografia
6. Storico Versioni



1. Contesto di riferimento
==========================

Il documento RFC ha come oggetto la descrizione del processo di trasmissione, 
da parte delle aziende sanitarie di competenza, dei dati relativi 
ai farmaci erogati dai presidi direttamente gestiti dall' Azienda  e ai 
farmaci erogati attraverso le farmacie territoriali convenzionate 
in base a specifici accordi (distribuzione per conto).

In particole gli oggetti di rilevazione del presente documento sono i seguenti:

1) 	farmaci erogati direttamente dalle strutture pubbliche ad utenti in 
	dimissione da ricovero (l. 405 /01 art. 8 lett. c)
2) 	farmaci erogati direttamente dalle strutture pubbliche a seguito di visita 
	specialistica (l. 405 /01 art. 8 lett. c)
3) 	farmaci erogati da strutture pubbliche per Assistenza Domiciliare
4) 	farmaci erogati in assistenza residenziale e semiresidenziale
5) 	farmaci per emofilia somministrati ad utenti ricoverati.
6) 	distribuzione per conto: farmaci erogati attraverso le farmacie territoriali 
	convenzionate in base a specifici accordi.
7) 	farmaci erogati direttamente allutente, non compresi nelle voci precedenti 
	(es: DM 537/93, farmaci di fascia H; DM 22/12/2000, farmaci erogabili in duplice 
	via; deliberazione G.R. 135/2002, integrazione elenco Principi Attivi per i 
	farmaci erogabili in duplice via di distribuzione)

La presente versione stabilisce le regole e le codifiche da utilizzare per la trasmissione 
del contenuto informativo dell'evento FED (Farmaci Erogati Direttamente).
Viene inoltre illustrata, all'interno del presente documento, l'interfaccia (WSDL) del Web Service 
dedicato alla gestione degli eventi della tipologia descritta. 
Il Web Service in questione svolge il ruolo di interfaccia per il servizio di archiviazione e consolidamento 
delle informazioni relative ai Farmaci Erogati Direttamente  all'interno di due differenti basi dati:

- database ODS(denominato DSPSODS) di Regione Toscana
- database anagrafico/prestazionale del nodo TIX


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 verso i 
destinatari (e.g. Regione Toscana).

L'obiettivo principale e' quello di permettere l'invio delle schede relative 
all'erogazione diretta dei farmaci ad eventi eliminando la necessit di invio massivo 
a flussi.
I vantaggi che questo meccanismo permette di raggiungere sono :
a. Invio in tempo reale delle prestazioni
b. Riduzione dell'intervento umano


3. Analisi
==========

Le funzionalit principali offerte dallapplicazione sono:

1)	accettazione del record FED di test con conseguente consolidamento del record 
	in un area 	destinata a contenere record di questa tipologia.

2)	accettazione del record FED e successivo consolidamento del record 
	all'interno della base dati configurata come destinazione per il servizio 
	erogatore.
	
3) 	accettazione del record FED e relativo salvataggio, all'interno di una 
	base dati storicizzata, delle informazioni relative alla singola trasmissione 
	dell'evento (tempistiche di trasmissione e id_egov).

Per ogni FED deve essere comunicato:

1)	La modalit di esecuzione del servizio (effettiva, o di test)
2)	Lanno di riferimento del flusso
3)	Tutte le informazione che compongono il record FED, definite nel documento 
	Manuali dei Flussi DOC

I processi elaborativi implementati dall'applicazione consistono di:

1) 	ricezione di una chiamata al web service
2) 	verifica della validita' del documento XML trasmesso, verifica basata su schema XSD
3) 	consolidamento del record ricevuto (FED) 
3) 	archiviazione, sulla base dati configurata per il servizio erogatore, in base alla modalita' 
	di trasmissione(test/noTest)

	
L'invio dell'informazione avviene attraverso messaggi XML e con l'utilizzo di 
servizi erogati da Regione Toscana ed esposti alle ASL dall'infrastruttura di 
cooperazione applicativa CART. Il dettaglio sulla modalita' di interfacciamento 
con la infrastruttura e' descritto in [3] e [4]. 
	
Gli schema XML che definiscono il formato dei messaggi scambiati dal client con 
i servizi esposti dal web-service,ovvero i documenti XML contenenti il record FED, 
sono riportati di seguito.

L'attributo test del tag "FarmaciErogatiDirettamente" serve per discriminare 
la modalita' di test (validazione del record con consolidamento e salvataggio 
in un'area riservata della base dati) dalla modalita' canonica di esecuzione 
del processo di consolidamento e archiviazione.


3.1. Casi d'uso
================================================================================

3.1.1. Ev01 - Trasmissione evento FED 
--------------------------------------------------------------------------------
L'evento si verifica quando viene emessa,modificata o cancellata, dalla ASL di riferimento 
della farmacia erogante,  una scheda FED.

Al verificarsi dell'evento, la ASL invia a Regione Toscana un messaggio XML che 
contiene le seguenti informazioni rilevanti:

- 	anno di riferimento   
- 	codice ASL di riferimento 
-	chiave (codice di cui valore deve univoco per per ASL e per anno di riferimento)

 
Questi campi costituiscono la chiave logica dell'evento FED della quale deve essere 
garantita l'univocita'. Eventi FED arrivati con la stessa combinazione di valori sui campi 
chiave si intendono avere natura di inserimento, modifica, e cancellazione di una 
stessa scheda relativa all'erogazione diretta di farmaci.

Il formato del messaggio e' definito in sezione 3.2 utilizzando la notazione
XML Schema.


3.2. XML Schema degli eventi
================================================================================

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="FarmaciErogatiDirettamente">
		<xs:annotation>
			<xs:documentation>Record validato</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Testata" type="TestataType" minOccurs="0"/>
				<xs:element name="FarmaciErogati1" type="FarmaciErogati1Type" minOccurs="0"/>
				<xs:element name="FarmaciErogati2" type="FarmaciErogati2Type" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="test" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="annoRiferimento" type="xs:int" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="FarmaciErogati1Type">
		<xs:annotation>
			<xs:documentation>Intero record FED1 validato</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Meta" type="MetaType"/>
			<xs:element name="Body" type="BodyFED1Type"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FarmaciErogati2Type">
		<xs:annotation>
			<xs:documentation>Intero record FED2 validato</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Meta" type="MetaType"/>
			<xs:element name="Body" type="BodyFED2Type"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="BodyFED1Type">
		<xs:annotation>
			<xs:documentation>Campi specifici FED1</xs:documentation>
		</xs:annotation>
		<xs:sequence>		
			<xs:element name="TipoRecord" type="xs:string"/>
			<xs:element name="Opera" type="xs:string"/>					
			<xs:element name="Chiave" type="xs:string"/>
			<xs:element name="TipoIndUtente" type="xs:string"/>
			<xs:element name="CodIndUtente" type="xs:string"/>								
			<xs:element name="Sesso" type="xs:string"/>			
			<xs:element name="DataNascita" type="xs:string"/>			
			<xs:element name="Cittadinanza" type="xs:string"/>			
			<xs:element name="RgnResidenza" type="xs:string"/>			
			<xs:element name="CmnResidenza" type="xs:string"/>			
			<xs:element name="USLResidenza" type="xs:string"/>
			<xs:element name="ZonaSanResidenza" type="xs:string"/>			
			<xs:element name="RgnIscrSan" type="xs:string"/>
			<xs:element name="USLIscrSan" type="xs:string"/>
			<xs:element name="ModErogazione" type="xs:string"/>
			<xs:element name="ChiaveRelScheda" type="xs:string"/>
			<xs:element name="TipolContatto" type="xs:string"/>
			<xs:element name="CodiceRicetta" type="xs:string"/>
			<xs:element name="CFMedicoPrescr" type="xs:string"/>					
			<xs:element name="RgnMedicoPrescr" type="xs:string"/>
			<xs:element name="USLMedicoPrescr" type="xs:string"/>
			<xs:element name="ZonaSanMedicoPrescr" type="xs:string"/>			
			<xs:element name="TipoMedicoPrescr" type="xs:string"/>						
			<xs:element name="RegioneAzienda" type="xs:string"/>
			<xs:element name="AziendaErogatrice" type="xs:string"/>					
			<xs:element name="ImpNetto" type="xs:string"/>			
			<xs:element name="Compensa" type="xs:string"/>						
			<xs:element name="IdUniUtente" type="xs:string"/>			
			<xs:element name="IdUniMedico" type="xs:string"/>
			<xs:element name="IdUniAzienda" type="xs:string"/>									
			<xs:element name="DataAnonimizzazioneUte" type="xs:string"/>
			<xs:element name="DataUltimoAggIdUniUte" type="xs:string"/>
			<xs:element name="DataAnonimizzazioneMed" type="xs:string"/>
			<xs:element name="DataUltimoAggIdUniMed" type="xs:string"/>						
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="BodyFED2Type">
		<xs:annotation>
			<xs:documentation>Campi specifici FED2</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="TipoRecord" type="xs:string"/>
			<xs:element name="Chiave" type="xs:string"/>
			<xs:element name="TipoPresidioErogatore" type="xs:string"/>
			<xs:element name="ComunePresErogatore" type="xs:string"/>
			<xs:element name="CodicePresidio" type="xs:string"/>			
			<xs:element name="CodiceSpecialita" type="xs:string"/>
			<xs:element name="CodiceReparto" type="xs:string"/>
			<xs:element name="DataPrescrizione" type="xs:string"/>						
			<xs:element name="DataErogazione" type="xs:string"/>
			<xs:element name="TipoMedicinale" type="xs:string"/>						
			<xs:element name="CodFarm" type="xs:string"/>
			<xs:element name="Targatura" type="xs:string"/>
			<xs:element name="TipoDistribuzione" type="xs:string"/>
			<xs:element name="NumConfezioni" type="xs:string"/>
			<xs:element name="QuantitaUnitarie" type="xs:string"/>
			<xs:element name="CostoUnitario" type="xs:string"/>
			<xs:element name="CostoConfezione" type="xs:string"/>
			<xs:element name="ImpTotale" type="xs:string"/>
			<xs:element name="CostoPercServizio" type="xs:string"/>
			<xs:element name="CostoServizio" type="xs:string"/>
			<xs:element name="DdDataErog" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TestataType">
		<xs:annotation>
			<xs:documentation>Meta informazioni di testata</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ID" type="xs:string"/>
			<xs:element name="DAcq" type="xs:string"/>
			<xs:element name="CodModAcq" type="xs:string"/>
			<xs:element name="CodNodOri" type="xs:string"/>
			<xs:element name="CodNodDes" type="xs:string"/>
			<xs:element name="CodTipHdr" type="xs:string"/>
			<xs:element name="CodMotTrs" type="xs:string"/>
			<xs:element name="NRec" type="xs:string"/>
			<xs:element name="DTra" type="xs:string"/>
			<xs:element name="CodSta" type="xs:string"/>
			<xs:element name="TDes" type="xs:string"/>
			<xs:element name="NRecWrn" type="xs:string"/>
			<xs:element name="NRecErr" type="xs:string"/>
			<xs:element name="NRecRes" type="xs:string"/>
			<xs:element name="BEsp" type="xs:string"/>
			<xs:element name="TNomefile" type="xs:string"/>
			<xs:element name="DFinAcq" type="xs:string"/>
			<xs:element name="DExe" type="xs:string"/>
			<xs:element name="IdUniOriCmp" type="xs:string"/>
			<xs:element name="DImport" type="xs:string"/>
			<xs:element name="DInvio" type="xs:string"/>
			<xs:element name="DInvioGrouper" type="xs:string"/>
			<xs:element name="CodStaExp" type="xs:string"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="HeaderType">
		<xs:annotation>
			<xs:documentation>Meta informazioni</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Contatore" type="xs:string" />
			<xs:element name="ID" type="xs:string" />
			<xs:element name="IDHdr" type="xs:string" />
			<!-- ID uni del record madre se presente, non presente per FED1-->
			<xs:element name="IDMadre" type="xs:string" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FooterType">
		<xs:annotation>
			<xs:documentation>Meta informazioni </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="refTimestamp" type="xs:dateTime"/>
			<xs:element name="AnnoRiferimento" type="xs:string"/>
			<xs:element name="NrErr" type="xs:string"/>
			<xs:element name="NrWrn" type="xs:string"/>
			<xs:element name="CodASLResidenza" type="xs:string"/>
			<xs:element name="CodRgnResidenza" type="xs:string"/>
			<xs:element name="CodASLInv" type="xs:string"/>
			<xs:element name="FlagErr" type="xs:string"/>
			<xs:element name="FlagErrTot" type="xs:string"/>
			<xs:element name="CodStaRec" type="xs:string"/>
			<xs:element name="DataInvioFlusso" type="xs:string" minOccurs="0"/>
			<xs:element name="DataImportFlusso" type="xs:string" minOccurs="0"/>
			<xs:element name="DataSpedizioneRecord" type="xs:dateTime" minOccurs="0"/>								
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MetaType">
		<xs:annotation>
			<xs:documentation>Meta informazioni </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Header" type="HeaderType"/>
			<xs:element name="Footer" type="FooterType"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>



3.3. WSDL dei servizi
================================================================================


3.3.1 FEDService.wsdl
--------------------------------------------------------------------------------

<definitions name='FEDService' targetNamespace='http://www.regione.toscana.it/ws/2008/ods/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:ns1='http://ws.common.dsh.sys.eng.it/' xmlns:ns2='http://www.openspcoop.org/pdd/services/PD' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://www.regione.toscana.it/ws/2008/ods/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <import location='FedPort.wsdl' namespace='http://ws.common.dsh.sys.eng.it/'></import>
 <service name='FEDService'>
  <port binding='ns1:ODSServiceBinding' name='FEDServicePort'>
   <soap:address location='http://wsi.rete.toscana.it/dsh-consumer/FEDService'/>
  </port>
 </service>
</definitions>


3.3.2 FEDPort.wsdl
--------------------------------------------------------------------------------

<definitions name='FEDService' targetNamespace='http://ws.common.dsh.sys.eng.it/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:ns1='http://ws.common.dsh.sys.eng.it/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://www.regione.toscana.it/ws/2008/ods/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <types>
  <xs:schema targetNamespace='http://ws.common.dsh.sys.eng.it/' version='1.0' xmlns:tns='http://ws.common.dsh.sys.eng.it/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
   <xs:element name='Exception' type='tns:Exception'/>
   <xs:element name='processMessage' nillable='true' type='xs:string'/>
   <xs:complexType name='Exception'>
    <xs:sequence>
     <xs:element minOccurs='0' name='message' type='xs:string'/>
    </xs:sequence>

   </xs:complexType>
  </xs:schema>
 </types>
 <message name='ODSService_processMessageResponse'></message>
 <message name='Exception'>
  <part element='ns1:Exception' name='Exception'></part>
 </message>
 <message name='ODSService_processMessage'>
  <part element='ns1:processMessage' name='processMessage'></part>

 </message>
 <portType name='ODSService'>
  <operation name='processMessage' parameterOrder='processMessage'>
   <input message='ns1:ODSService_processMessage'></input>
   <output message='ns1:ODSService_processMessageResponse'></output>
   <fault message='ns1:Exception' name='Exception'></fault>
  </operation>
 </portType>
 <binding name='ODSServiceBinding' type='ns1:ODSService'>

  <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
  <operation name='processMessage'>
  <soap:operation soapAction=''/>
   <input>
    <soap:body use='literal'/>
   </input>
   <output>
    <soap:body use='literal'/>
   </output>

   <fault name='Exception'>
    <soap:fault name='Exception' use='literal'/>
   </fault>
  </operation>
 </binding>
</definitions>





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

NN.


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

[1] XML Schema http://www.w3.org/XML/Schema
[2] Web Services Description Language (WSDL) 1.1 http://www.w3.org/TR/wsdl
[3] "Manuale d'Uso Infrastruttura CART", Regione Toscana, 
Versione 1.01 del 03/12/2007 
[4] "SDK-CART", Regione Toscana, Versione 1.1 del 20/04/2008 

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

[rev 0 - 24/02/2010]
 - Prima versione pubblicata.


