IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_ConvertCancelHospitalisationReferral]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_ConvertCancelHospitalisationReferral]
--GO
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- =============================================
---- Author:		Vitacore (с)
---- Create date: 2018-12-05
---- Description:	конвертация CANCEL_HOSPITALISATION_REFERRAL для Карелии по 263 приказу
---- =============================================
--CREATE PROCEDURE [dbo].[sp_ConvertCancelHospitalisationReferral]
--	@Xml xml
--AS
--BEGIN
----------------------------------------------

--DECLARE @t1 table
--(OuterXML varchar(max), ERR varchar(max))

--create table #ERROR
--(
--	[OSHIB] int,
--	[TEXT] varchar(max)
--)

--SELECT
--	 T.c.value('./ZGLV[1]/DATA[1]', 'datetime') AS [DATA]
--	,T.c.value('./ZGLV[1]/TYPE[1]', 'varchar(6)') AS [TYPE]
--	,T.c.value('./ZGLV[1]/ID[1]', 'uniqueidentifier') AS [ID]
--	,T.c.value('./ZAP[1]/NOM_NAP[1]', 'varchar(16)') AS [NOM_NAP]
--	,T.c.value('./ZAP[1]/DTA_NAP[1]', 'datetime') AS [DTA_NAP]
--	,T.c.value('./ZAP[1]/MCOD_NAP[1]', 'varchar(6)') AS [MCOD_NAP]
--	,T.c.value('./ZAP[1]/IST_ANL[1]', 'int') AS [IST_ANL]
--	,T.c.value('./ZAP[1]/ACOD[1]', 'varchar(6)') AS [ACOD]
--	,T.c.value('./ZAP[1]/MPODR_ANL[1]', 'varchar(2)') AS [MPODR_ANL]
--	,T.c.value('./ZAP[1]/PR_ANL[1]', 'int') AS [PR_ANL]
-- into #XML
-- FROM   @xml.nodes('/CANCEL_HOSPITALISATION_REFERRAL') T(c)



----insert into #ERROR ([OSHIB],[TEXT])
----select 1, 'TYPE'
------from #XML x
------where [TYPE] is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 1, 'Не заполнен обязательный атрибут MCOD_NAP'
--	from #XML
--	where MCOD_NAP is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 2, 'Не заполнен обязательный атрибут TYPE'
--	from #XML
--	where [TYPE] is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 3, 'Не заполнен обязательный атрибут ID'
--	from #XML
--	where ID is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 4, 'Не заполнен обязательный атрибут NOM_NAP'
--	from #XML
--	where NOM_NAP is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 5, 'Не заполнен обязательный атрибут DTA_NAP'
--	from #XML
--	where DTA_NAP is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 6, 'Не заполнен обязательный атрибут PR_ANL'
--	from #XML
--	where PR_ANL is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 7, 'Не заполнен обязательный атрибут IST_ANL'
--	from #XML
--	where IST_ANL is null

--	insert into #ERROR ([OSHIB],[TEXT])
--	select 8, 'Не заполнен обязательный атрибут DATA'
--	from #XML
--	where [DATA] is null

--if (Select COUNT(*) from #ERROR) <> 0--Если есть ошибки, то дальше нет смысла делать проверки
--begin
--INSERT @t1 (OuterXML, ERR)
--select null,
--	(select 
--	'<?xml version="1.0" encoding="Windows-1251"?>
--	' + (
--	select 
--		OSHIB AS 'OSHIB',
--		[TEXT] as 'TEXT'
--	FROM #ERROR
--	FOR XML PATH('PR'), 
--	ROOT('FLK_P')
--	)	)
--end
--else
--begin

--INSERT @t1 (OuterXML, ERR)
--select
--	(select
--		--header
--		[MCOD_NAP] AS 'header/LPU' 
--		,[TYPE] AS 'header/TYPE'
--		,[MCOD_NAP] AS 'header/LPU_TO'--?????????
--		,[ID] AS 'header/ID'
--		--body
--		,[NOM_NAP] as 'body/REFERRAL_NUMBER'
--		,FORMAT([DTA_NAP],'yyyy-MM-dd') as 'body/REFERRAL_DATE'
--		,[MCOD_NAP] as 'body/REFERRAL_LPU'
--		,[MPODR_ANL] as 'body/BRANCH'
--		,case when [PR_ANL] = 1 then 0 else case when [PR_ANL] = 2 then 1 else case when [PR_ANL] = 3 then 2 else case when [PR_ANL] = 4 then 4 else case when [PR_ANL] = 5 then 3 else 6 end end end end end as 'body/REASON'
--		,case when [IST_ANL] = 1 then 0 else case when [IST_ANL] = 2 then 1 else 3 end end as 'body/CANCEL_SOURSE'
--		,FORMAT([DATA],'yyyy-MM-dd') as 'body/DATE_CANCEL'
--		,FORMAT([DTA_NAP],'yyyy-MM-dd') as 'body/DATE'
--		,0 as 'body/CANCEL_TYPE'
--		--,[] as 'CANCEL_DESCRIPTION'
--		--,[] as 'PATIENT'
--	from #XML
--	FOR XML PATH (''), 
--	ROOT('CANCEL_HOSPITALISATION_REFERRAL')
--)
--,null
--end

--select * from @t1

--drop table #ERROR
--drop table #XML
--end