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

Flusso GSDO 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 trasmissione e la registrazione delle schede(GSDO) ottenute
dalla tariffazione delle schede di dimissione ospedaliere prodotte dagli istituti di ricovero 
operanti in Regione Toscana.

Le informazioni trasmesse riguardano una selezione delle informazioni presenti 
all'interno della  scheda di dimissione ospedaliera emessa dagli istituti di ricovero 
oltre ad alcuni campi calcolati a partire da informazioni contenute nella scheda 
stessa(DRG, MDC, Importo Regionale etc..).
	
La presente versione stabilisce le regole e le codifiche da utilizzare per la trasmissione 
del contenuto informativo dell'evento GSDO.
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 
dei risultati della tariffazione delle schede di dimissione ospedaliera all'interno della
 basi dati di trasporto dei NAL(DBSCC_TRAN):

- database DBSCC_TRAN del NAL affiliato al ASL/AO dal quale e' stato richiesto la tariffazione 
della scheda di dimissione ospedaliera



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 da  Regione Toscana alle Aziende
destinatarie.

L'obiettivo principale e' quello di permettere l'invio dei risultati ottenuti dalla tariffazione
delle schede di dimissione ospedaliere 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 dall'applicazione sono:

1)	accettazione del record GSDO di test.

2)	accettazione del record GSDO e successivo archiviazione del record 
	all'interno della base dati configurata come destinazione per il servizio 
	erogatore.
	
3) 	accettazione del record GSDO 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 GSDO deve essere comunicato:

1)	La modalit di esecuzione del servizio (effettiva, o di test)
2)	L'anno di riferimento del flusso
3)	I dati rappresentativi del Flusso GSDO

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) 	archiviazione, sulla basedati DBSCC_TRAN del NAL associato al ASL/AO da cui ha avuto
	origine il record SDO step1 che ha generato attraverso la tariffazione il record GSDO.
	
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 GSDO, sono riportati 
di seguito.

L'attributo test serve per discriminare la modalita' di test (validazione del record) 
dalla modalita' canonica di esecuzione del processo di archiviazione.


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

3.1.1. Ev01 - Trasmissione evento GSDO 
--------------------------------------------------------------------------------
L'evento si verifica quando viene tariffata, in Regione Toscana, una
scheda di dimissione ospedaliera. Il processo di tariffazione, che coinvolge 
l'applicativo Grouper causa la generazione di un record GSDO correlato alla 
scheda da tariffare.

Al verificarsi dell'evento, il NAR  Regione Toscana invia ai NAL delle ASL/AO  un messaggio XML che 
contiene alcune informazioni della SDO originale piu' alcuni campi calcolati durante la
tariffazione

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"?>
<!-- edited with XMLSpy v2006 U (http://www.altova.com) by BattisSa (EMBRACE) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="GruperSDO">
		<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="GruperSDO1" type="GruperSDO1Type" minOccurs="0"/>
			</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="GruperSDO1Type">
		<xs:annotation>
			<xs:documentation>Intero record GSDO1 validato</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Meta" type="MetaType"/>
			<xs:element name="Body" type="BodyGSDOType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="BodyGSDOType">
		<xs:annotation>
			<xs:documentation>Campi specifici GSDO</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="codDrgReg" type="xs:string"/>
			<xs:element name="codMcdReg" type="xs:string"/>
			<xs:element name="n1ImpReg" type="xs:string"/>
			<xs:element name="n1ImpOlt" type="xs:string"/>
			<xs:element name="n1Imp" type="xs:string"/>
			<xs:element name="f1ErrSdo" type="xs:string"/>
			<xs:element name="f1ErrSdo104" type="xs:string"/>
			<xs:element name="codTipRir" type="xs:string"/>
			<xs:element name="n1GgDeg" type="xs:string"/>
			<xs:element name="drg10" type="xs:string"/>
			<xs:element name="f1ErrSdo07" type="xs:string"/>
			<xs:element name="f1ErrSdo09" type="xs:string"/>
			<xs:element name="drg19" 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" />
		</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:element name="StepFlow" type="xs:string"/>											
		</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 GSDOService.wsdl
--------------------------------------------------------------------------------

<definitions name='GSDOService' 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='GsdoPort.wsdl' namespace='http://ws.common.dsh.sys.eng.it/'></import>
 <service name='GSDOService'>
  <port binding='ns1:ODSServiceBinding' name='GSDOServicePort'>
   <!--  soap:address location='@consumer-service-url-gsdo@'/-->
    <soap:address location='http://127.0.0.1:8081/consumer/GSDOService'/>
  </port>
 </service>
</definitions>

3.3.2 GSDOPort.wsdl
---------------------------------------------------------------------------------

<definitions name='GSDOService' 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 - 15/09/2010]
 - Prima versione pubblicata.


