IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_ConvertHospitalisationReferral]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_ConvertHospitalisationReferral]
--GO
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- =============================================
---- Author:		Vitacore (с)
---- Create date: 2018-12-05
---- Description:	конвертация HOSPITALISATION_REFERRAL для Карелии по 263 приказу
---- =============================================
--CREATE PROCEDURE [dbo].[sp_ConvertHospitalisationReferral]
--	@Xml xml
--AS
--BEGIN
----------------------------------------------
--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]/FRM_MP[1]', 'int') AS [FRM_MP]
--	,T.c.value('./ZAP[1]/MCOD_NAP[1]', 'varchar(6)') AS [MCOD_NAP]
--	,T.c.value('./ZAP[1]/MPODR_NAP[1]', 'varchar(2)') AS [MPODR_NAP]
--	,T.c.value('./ZAP[1]/MCOD_STC[1]', 'varchar(6)') AS [MCOD_STC]
--	,T.c.value('./ZAP[1]/MPODR_STC[1]', 'varchar(12)') AS [MPODR_STC]
--	,T.c.value('./ZAP[1]/USL_OK[1]', 'varchar(1)') AS [USL_OK]
--	,T.c.value('./ZAP[1]/VPOLIS[1]', 'int') AS [VPOLIS]
--	,T.c.value('./ZAP[1]/SPOLIS[1]', 'varchar(10)') AS [SPOLIS]
--	,T.c.value('./ZAP[1]/NPOLIS[1]', 'varchar(20)') AS [NPOLIS]
--	,T.c.value('./ZAP[1]/SMO_CODE[1]', 'varchar(5)') AS [SMO_CODE]
--	,T.c.value('./ZAP[1]/ST_OKATO[1]', 'varchar(5)') AS [ST_OKATO]
--	,T.c.value('./ZAP[1]/FAM[1]', 'varchar(40)') AS [FAM]
--	,T.c.value('./ZAP[1]/IM[1]', 'varchar(40)') AS [IM]
--	,T.c.value('./ZAP[1]/OT[1]', 'varchar(40)') AS [OT]
--	,T.c.value('./ZAP[1]/W[1]', 'int') AS [W]
--	,T.c.value('./ZAP[1]/DR[1]', 'datetime') AS [DR]
--	,T.c.value('./ZAP[1]/TLF[1]', 'varchar(36)') AS [TLF]
--	,T.c.value('./ZAP[1]/DS[1]', 'varchar(10)') AS [DS]
--	,T.c.value('./ZAP[1]/KOD_PFO[1]', 'varchar(3)') AS [KOD_PFO]
--	,T.c.value('./ZAP[1]/KOD_PFK[1]', 'varchar(3)') AS [KOD_PFK]
--	,T.c.value('./ZAP[1]/KOD_DCT[1]', 'varchar(14)') AS [KOD_DCT]
--	,T.c.value('./ZAP[1]/DTA_PLN[1]', 'datetime') AS [DTA_PLN]
-- into #XML
-- FROM   @xml.nodes('/HOSPITALISATION_REFERRAL') T(c)

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

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


--	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, 'Не заполнен обязательный атрибут MCOD_STC'
--	from #XML
--	where MCOD_STC is null

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


----insert into #ERROR ([OSHIB],[TEXT])
----select 1, 'Не заполнен один или несколько обязательныx атрибутов'
----from #XML
----where  [ST_OKATO] 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_STC] 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'
--	--,[] as 'body/HOSPITALISATION_DATE'
--	,case when [FRM_MP] = 1 then 0 else case when [FRM_MP] = 2 then 2 else 1 end end as 'body/HOSPITALISATION_TYPE'--см правила заполнения
--	,isnull([MPODR_STC],1) as 'body/BRANCH_TO'
--	,[KOD_PFO] as 'body/DIVISION_TO'
--	,[KOD_PFK] as 'body/STRUCTURE_BED'
--	,[MPODR_NAP] as 'body/BRANCH_FROM'
--	,[DS] as 'body/MKB'
--	--,[] as 'body/DIAGNOSIS'--У
--	,FORMAT([DTA_PLN],'yyyy-MM-dd') as 'body/PLANNED_DATE'
--	,p.Code as 'body/DOC_CODE'--SNILS уточнить
--	,[VPOLIS] as 'body/POLICY_TYPE'
--	,[SPOLIS] as 'body/POLIS_SERIAL'--У
--	,[NPOLIS] as 'body/POLIS_NUMBER'
--	,[SMO_CODE] as 'body/SMO'
--	,[IM] as 'body/FIRST_NAME'
--	,[FAM] as 'body/LAST_NAME'
--	,[OT] as 'body/FATHER_NAME'--У
--	,case when [W] = 1 then 10301 else 10302 end as 'body/SEX'
--	,FORMAT([DR],'yyyy-MM-dd') as 'body/BIRTHDAY'
--	,[TLF] as 'body/PHONE'
--	--,[] as 'body/PATIENT'--У
--	,0 as 'body/ANOTHER_REGION'
--	,[USL_OK] as 'body/USL_OK'--У
--from #XML x
--left join RDS.T_WORKER w on x.[KOD_DCT] = w.Snils
--left join RDS.T_POST p on p.Worker = w.WorkerID
--FOR XML PATH (''), ROOT('HOSPITALISATION_REFERRAL')
--)
--,null
--end

--select * from @t1

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