
if (exists (select * from sys.objects where name = 'HOMR_HomePage_InRest'))
    drop proc HOMR_HomePage_InRest
go
create PROC [dbo].[HOMR_HomePage_InRest]
       @XML ntext,
       @EmpId int,
       @EmpCode varchar(20),
       @EmpName varchar(20),
       @UpVAE26 tinyint = 0, --该参数为1表示可以修改预出院病人出院日期，为2表示可以修改在院病人出院日期，为3表示两个权限都有
       @TableList varchar(64), --该参数为病案附页中的表，因为不是每次都需要更新，所以只对在此列表内的表，进行解析更新
			 @lURIID VARCHAR(40),
			 @lMac VARCHAR(20)
AS 
  DECLARE	@iDOM int, @iret int   
  
  --解析XML文档	
  Exec @iret = sp_xml_preparedocument @iDOM OUTPUT, @XML
  if @iret > 0
  BEGIN
    exec sp_xml_removedocument @iDOM  	
    RAISERROR('解析XML文档时发生错误，错误号: %d.', 16, 1, @iret) with nowait 
    return @iret
  END
  
  
  IF object_id('tempdb..#tmpPatInfo') is not null DROP TABLE #tmpPatInfo
  IF object_id('tempdb..#tmpRAB1') is not null DROP TABLE #tmpRAB1
  IF object_id('tempdb..#tmpRAA1') is not null DROP TABLE #tmpRAA1
  IF object_id('tempdb..#tmpVCT1') is not null DROP TABLE #tmpVCT1
  IF object_id('tempdb..#tmpRAD1') is not null DROP TABLE #tmpRAD1
  IF object_id('tempdb..#tmpRAC1') is not null DROP TABLE #tmpRAC1
  IF object_id('tempdb..#tmpRAF1') is not null DROP TABLE #tmpRAF1
  IF object_id('tempdb..#tmpRAH1') is not null Drop TABLE #tmpRAH1
  IF object_id('tempdb..#tmpVAO2') is not null Drop TABLE #tmpVAO2
  
  SELECT IDENTITY(int,1,1) AS ID,* INTO #tmpVAO2
  from OpenXml(@iDOM, '/Root/VAO1/Item', 8)
     with(
   	   VAF01 int,
   	   VAO07 int,
   	   VAO06 int,
   	   VAO08 int,
   	   VAO09 int,
   	   VAO10 tinyint,
   	   VAO11 tinyint,
   	   BAK01A int,
   	   CAM01 int,
   	   BAK01B int,
   	   BAK05 varchar(150),
   	   ABX01 varchar(1),
   	   VAO24 tinyint,
   	   VAO25 tinyint,
   	   VAO17 tinyint,
   	   VAO18 tinyint,
   	   VAO19 datetime,
   	   BCE03A varchar(20),
   	   VAO21 datetime,
   	   BCE03B varchar(20),
   	   BGP01 varchar(2) --诊断依据
     )

  SELECT * INTO #tmpPatInfo
  FROM  OpenXml(@iDOM, '/Root/VAM1/Item', 8) 	 
    WITH(
             VAE01 integer --登记Id
            ,VAA01 integer --病人Id
            ,VAA04 varchar(20)--住院号
            ,VAA08 varchar(20)--病案号
            ,VAA05 varchar(64) --姓名
            ,ABW01 varchar(1)--性别
            ,VAA12 datetime--出生日期
            ,VAA14 varchar(2) --证件类型
            ,VAA15 varchar(20)--身份证号
            ,VAA16 varchar(20)--其他证件 
            ,VAA38 varchar(48)--学历
            ,ABQ02 varchar(32)--民族
            ,ACM02 varchar(20)--从业状况、身份
            ,ABBRP varchar(10)--拼音码
            ,ABBRW varchar(10)--五笔码
            ,VAE04 tinyint --病人性质
            ,ABJ01 varchar(2)--医疗付款方式 all
            ,BDP02 varchar(50)--病人类别 all
            ,ABC02 varchar(20)--折扣费别 all
            ,VAE08 tinyint--再入院
            ,BCK01A int--入院病区ID all
            ,BCK01B int--入院科室ID all
            ,VAE11 datetime--入院日期
            ,ABO01 varchar(2)--入院病情 all
            ,ABR01 varchar(1)--入院方式 all
            ,ABT02 varchar(20)--就诊方式 all
            ,VAE15 varchar(64)--转院名称
            ,ABZ02 varchar(10)--入院待遇 all
            ,ABK02 varchar(20)--住院目的 all
            ,BCQ04A varchar(20)--住院床位 all
            ,VAE19 int--住院次数
            ,VAE20 tinyint--陪伴
            ,AAG01 int--护理等级 all
            ,VAE22 varchar(2)--住院病情
            ,BCK01C int         --住院病区ID all
            ,BCK01D int         --住院科室ID all
            ,BCQ04B varchar(20) --住院床位   all
            ,VAE26 datetime     --出院日期
            ,VAE27 int          --住院天数
            ,ABV01 varchar(2)   --出院类型  all
            ,VAE29 tinyint      --确诊
            ,VAE30 datetime     --确诊日期
            ,VAE31 tinyint      --新发肿瘤
            ,ABL01 varchar(2)   --血型
            ,VAE33 int          --抢救次数
            ,VAE34 int          --成功次数
            ,VAE35 tinyint      --随诊标志
            ,VAE36 int          --随诊期限
            ,VAE37 varchar(2)      --随诊单位
            ,VAE38 tinyint      --尸检标志
            ,BCE03A varchar(20)--门诊医师 all
            ,BCE03B varchar(20)--责任护士 all
            ,BCE03C varchar(20)--住院医师 all
  ,VAE42 varchar(64) --疾病兵种
            ,VAE44 tinyint      --状态
            ,VAE45 numeric(18,4)--金额
            ,VAE46 int          --年龄
            ,AAU01 varchar(1)   --年龄单位 all
            ,ACK01 varchar(2)   --婚姻状况 all
            ,AAT02 varchar(128) --职业 all
            ,ACC02 varchar(32)  --国籍 all
            ,AAY02 varchar(48)  --学历 all
            ,BAQ01 int         --合约单位ID all
            ,BAQ02 varchar(10)  --合约单位编码 all
            ,BAQ03 varchar(64)  --工作单位 all
            ,VAE55 varchar(32)  --单位电话
            ,VAE56 varchar(64)  --单位地址
            ,VAE57 varchar(128) --户口地址
            ,VAE58 varchar(6)   --户籍邮编
            ,VAE59 varchar(20) --户籍电话
            ,VAE60 varchar(20) --省市
            ,VAE61 varchar(20) --县市, 城市, 县区市
            ,VAE62 varchar(64) --地址, 常住地址, 街道, 乡镇村, resident address
            ,VAE63 varchar(20) --电话
            ,VAE64 varchar(13) --移动电话
            ,VAE65 varchar(128) --电子邮箱
            ,VAE66 varchar(64) --其他联系方式
            ,VAE67 varchar(64) --监护人
            ,VAE68 varchar(20) --联系人姓名
            ,AAZ02 varchar(32) --与病人关系
            ,VAE70 varchar(64) --联系人地址
            ,VAE71 varchar(20) --联系人电话
            ,VAE72 varchar(16) --联系人移动电话
            ,VAE73 varchar(4)   --中医治疗内别
            ,VAE87 varchar(20) --明细年龄
            ,IAA01 int          --保险机构 all
            ,UAA01 int          --社区 all
            ,IAK05 varchar(20)--社会保障号
            ,VAE76 tinyint      --审核
            ,BCE03D varchar(20) --审核人
            ,VAE78 datetime     --审核日期
            ,VAE79 tinyint      --上传标志
            ,VAE80 tinyint      --转出标志
            ,BCE03E varchar(20) --登记人 all
            ,VAE82 datetime     --制表时间 all
            ,VAE83 varchar(255) --备注
            ,VAE84 int          --档案状态
            ,VAE85 datetime     --存档时间
            ,VAA50 varchar(6)   --单位邮编
            ,VAA51 varchar(64)  --单位开户行
            ,VAA52 varchar(20)   --单位银行帐号
            ,VAO01A int --门(急)诊诊断号西医
            ,VAO01B int --入院诊断号西医
            ,VAO01D int --病理诊断号西医
            ,VAO01E int --门(急)诊诊断中医号
            ,VAO01Y int --中医入院诊断ID号
            ,VAO01H int --损伤中毒
            ,VAO01N int --术前诊断
            ,VAO01P int -- 术后诊断
            ,VAO01S int -- 尸检诊断
            ,BAK01A int  --门(急)诊诊断西医
            ,BAK05A varchar(256)
            ,BAK01B int --入院诊断西医
            ,BAK05B varchar(256)
            ,BAK01D int --病理诊断西医
            ,BAK05D varchar(256)
            ,BAK01E int --门(急)诊诊断中医
            ,BAK05E varchar(256)
            ,BAK01G int
            ,BAK05G varchar(256) 
            ,BAK05Y varchar(256) --中医入院诊断
            ,BAK01Y int 
            
            ,BAK01H int --损伤中毒
            ,BAK05H varchar(256)
            ,BAK01N int --术前诊断
            ,BAK05N varchar(256)
            ,BAK01P int --术后诊断
            ,BAK05P varchar(256)
            ,BAK01S int --尸检诊断
            ,BAK05S varchar(256)
            
            
           
            ,VAA07 int --VAM1表的VAA07
            ,VAM02 varchar(10)--入院病室
            ,VAM03 varchar(10)--出院病室
            ,VAM04 tinyint--有无转科
            ,VAM05 varchar(1)--病理分型
            ,VAM06 tinyint--入院前经外院诊治
            ,VAM07 varchar(2)--最高诊断依据
            ,VAM08 tinyint--HBsAg
            ,VAM09 tinyint--HCV-Ab 
            ,VAM10 tinyint--HIV-Ab
            ,VAM11 tinyint--疑难, 中医住院期间病情
            ,VAM12 tinyint--危重, 中医住院期间病情
            ,VAM13 tinyint--急症, 中医住院期间病情
            ,VAM14 varchar(1)--辨证, 准确度
            ,VAM15 varchar(1)--治法, 准确度
            ,VAM16 varchar(1)--方药, 准确度
            ,VAM17 varchar(1)--抢救方法
            ,VAM18  tinyint--自治中药
            ,VAM19 tinyint--中医门诊与出院
            ,VAM20 tinyint--中医入院与出院
            ,VAM21 tinyint--门诊入院与出院
            ,VAM22 tinyint--入院与出院
            ,VAM23 tinyint--术前与术后
            ,VAM24 tinyint--临床与病理
            ,VAM25 tinyint--放射与病理
            ,VAM26 varchar(20)--科主任
 ,VAM27 varchar(20)--主(副)主任医师
            ,VAM28 varchar(20)--进修医师
            ,VAM29 varchar(20)--研究生实习医师
            ,VAM30 varchar(20)--实习医师
            ,VAM31 varchar(20)--主治医师
            ,VAM32 varchar(1)--分化程度
            ,VAM33 varchar(1)--病案质量
            ,VAM34 varchar(20)--质控医师
            ,VAM35 varchar(20)--质控护士
            ,VAM36 datetime--质控日期
            ,VAM37 tinyint--中度烧伤
            ,VAM38 varchar(64)--死亡原因
            ,VAM39 datetime--死亡时间
            ,VAM40 tinyint--首例手术
            ,VAM41 tinyint--首例治疗
            ,VAM42 tinyint--首例检查
            ,VAM43 tinyint--首例诊断
            ,VAM44 tinyint--随诊
            ,VAM45 tinyint--示教病例
            ,VAM46 tinyint--科研病例
            ,VAM47 tinyint--输血前9项检查
            ,VAM48 tinyint--输血反应
            ,VAM49 tinyint--输液反应
            ,VAM50 numeric(12,4)--红细胞
            ,VAM51 numeric(12,4)--血小板
            ,VAM52 numeric(12,4)--血浆
            ,VAM53 numeric(12,4)--全血
            ,VAM54 varchar(100)--其他输血
            ,VAM55 tinyint--院际会诊
            ,VAM56 int--远程会诊次数
            ,VAM57 int--特级护理(小时)
            ,VAM58 int--Ⅰ级护理(日)
            ,VAM59 int--Ⅱ级护理(日)
            ,VAM60 int--Ⅲ级护理(日)
            ,VAM61 int--重症监护(小时)
            ,VAM62 int--特殊护理(日)
            ,VAM63 tinyint--医学感染作病源学检查
            ,VAM64 tinyint--使用抗生素
            ,VAM65 tinyint--单病种
            ,VAM66 tinyint--部分病种
            ,VAM67 numeric(18,2)--住院总费用
            ,VAM68 varchar(20)--编码员
            ,VAM69 datetime--编码日期
            ,VAM70 varchar(20)--创建者
            ,VAM71 datetime--创建日期
            ,VAM72 tinyint--使用抗生素目的
            ,VAM73 tinyint--使用抗生素方案
            ,VAM74 varchar(255)--抗生素
            ,VAM75 int--使用天数
            ,VAM76 tinyint--合并症
            ,VAM77 tinyint--并发症
            ,VAM78 tinyint--CT与临床
            ,VAM79 tinyint--尸检符合
            ,VAM80 varchar(20)--X线号
            ,VAM81 varchar(20)-- CT号           
            ,VAM82 varchar(20)--病理号
            ,VAA78 varchar(1) --RH血型
            ,BCE03 varchar(20) --护士长
            ,VAM84 varchar(20) --MRI号
            ,VAM85 varchar(20) --DSA号
            ,VAM86 varchar(20) --尸体解剖号
            ,VAM87 int --术前住院天数
            ,VAA20 varchar(64) --出生地
            ,VAA25 varchar(64) --籍贯
            ,VAA82 varchar(64) --健康卡号
            ,VAE89 numeric(9,2) --体重
            ,VAE90 numeric(9,2) --新生儿出生体重
            ,VAE91 numeric(9,3) --身高
            ,VAE92 varchar(64) --转院医疗机构
            ,VAM88 varchar(32) --出院31天内再住院目的
            ,VAM89 varchar(20) --入院前颅脑损伤患者昏迷时间
            ,VAM90 varchar(20) --入院后颅脑损伤患者昏迷时间
            ,VAM96 tinyint --实施临床路径（1中医、2西医、3否）
            ,VAM97 tinyint --使用中医诊疗设备（1是，2否）
            ,VAM98 tinyint --使用中医诊疗技术（1是，2否）
            ,VAM99 tinyint --辩证施护（1是，2否）
            ,VAMA1 tinyint --首页样式 (1：西医 2：中医 3：中西医)
            ,Allergy varchar(128) --病人过敏记录
            ,VAMA2 numeric(18, 2) --自付金额
            ,GDR varchar(20) --归档人
    )
  --病案扩展表VCT1
  SELECT * INTO #tmpVCT1
  FROM  OpenXml(@iDOM, '/Root/VCT1/Item', 8) 
    WITH (
       VAA07 INT --就诊ID
	  ,VCT02 TINYINT  --1=否 2=是
	  ,VCT03 INT  --单位(小时)
	  ,VCT04 TINYINT  --1＝单独使用, 2=联合用药 
	  ,VCT05 NUMERIC(18, 4)  --住院期间使用抗菌药物累积DDD值
	  ,VCT06 TINYINT  --1=I种 2=Ⅱ联 3=Ⅲ联 4=Ⅳ联  5= ＞Ⅳ联
	  ,VCT07 TINYINT  --1=是 2=否
	  ,VCT08 VARCHAR(128)  --退出临床路径原因
	  ,VCT09 TINYINT  --1＝否，2＝是
	  ,VCT10 VARCHAR(128)  --变异原因
	  ,VCT11 INT  --院内会诊次数
	  ,VCT12 INT  --院际会诊次数
	  ,VCT13 VARCHAR(64)  --其他会诊情况
	  ,VCT14 numeric(12,4)  --自体血回输 单位：ml
	  ,VCT15 numeric(12,4)  --白蛋白 单位：ml
	  ,VCT16 VARCHAR(32)  --检查情况 按位排序CT,PETCT,双源CT,X片,B超,超声心动图,MRI,同位素检查 0表示未输入 1.阳性 2.阴性 3、未做
	  ,VCT17 TINYINT  --1.阳性 2.阴性 3、未做
	  ,VCT18 TINYINT  --1.无  2=有  根据入住记录自动生成值
	  ,VCT19 TINYINT  --1.无  2=有  根据入住使用记录自动生成值
	  ,VCT20 TINYINT  --1=有 2＝无
	  ,VCT21 TINYINT  --1=是 2＝否
	  ,VCT22 TINYINT  --1=是 2＝否
	  ,VCT23 TINYINT  --1=是 2＝否
	  ,VCT24 TINYINT  --1=1期 2= 2期 3= 3期 4= 4期
	  ,VCT25 VARCHAR(128)  --当有输液反应时，引发反应的药物
	  ,VCT26 VARCHAR(128)  --输液反应的临床表现
	  ,VCT27 TINYINT  --1=是 2＝否
	  ,VCT28 TINYINT  --1. 一级    2. 二级   3. 三级   4.未造成伤害
	  ,VCT29 TINYINT  --1.健康原因 2.治疗、药物、麻醉原因   3.环境因素  9.其他原因 
	  ,VCT30 TINYINT  --1.有  2.无 
	  ,VCT31 VARCHAR(20)  --离院时透析（血透、腹透）尿素氮值
	  ,VCT32 VARCHAR(20)  --(出生地)省(区、市)
	  ,VCT33 VARCHAR(64)  --(出生地)市
	  ,VCT34 VARCHAR(64)  --(出生地)县
	  ,VCT35 VARCHAR(20)  --(籍贯)省(区、市)
	  ,VCT36 VARCHAR(64)  --(籍贯)市
	  ,VCT37 VARCHAR(20)  --(户口地址)省(区、市)
	  ,VCT38 VARCHAR(64)  --(户口地址)市
	  ,VCT39 VARCHAR(64)  --(户口地址)县
	  ,VCT40 VARCHAR(128)  --(户口地址)地址
	  ,VCT41 VARCHAR(64)  --(现住址)县
	  ,VCT42 VARCHAR(6)  --现住址邮编 
      ,VCT43 VARCHAR(64) --主诊医生
      ,VCT44 VARCHAR(64) --主管护士
      ,VCT45 VARCHAR(64) --归档位置
      ,RBB15 TINYINT  --借阅状态 0存楼 1.借出  2.归还
      ,VCT47 VARCHAR(64) --新生儿出生体重
      ,VCT48 tinyint --实施DRGs管理:1.无 2.按病种 3.按费用 4.两者都有
      ,VCT49 tinyint --法定传染病:0=无  1.甲类2.乙类 3.丙类
      ,VCT50 tinyint  --住院期间是否输液1.是 2.否
      ,VCT51 tinyint  --住院期间是否输血1.是 2.否
      ,VCT52 numeric(8,2)  --住院期间身体使用物理约束总时间 小时
      ,VCT53 tinyint  --住院期间身体使用物理约束方式 1.一处 2.两处 3.三处 4.其他
      ,VCT54 tinyint  --住院期间身体使用物理约束工具 1.软式管  2.硬式管  3.背心  4.老人椅  5.约束带  6.其他
      ,VCT55 tinyint  --住院期间身体使用物理约束原因 1.认知障碍 2.可能跌倒 3.行为紊乱 4.治疗需要 5.躁动6.医疗限制 7.其他
      ,VCT56 tinyint  --是否发生围术期死亡 1.是  2.否
      ,VCT57 tinyint  --是否发生术后猝死 1.是  2.否
      ,VCT58 tinyint  --距上一次住本院的时间 0.第一次住本院   1.当天    2.2-15天    3.16-31天     4.＞31天
      ,VCT59 tinyint  --上一次住本院与本次住院是否因同一疾病(主要诊断) 1.是  2.否
      ,VCT60 varchar(32)  --生育情况
      ,VCT61 datetime  --发病时间
      ,ADX01 varchar(2) --发病地点
      ,VCT63 varchar(64) --家庭住址区域代码
      ,VCT64 varchar(64)  --感染名称
      ,VCT65 tinyint  --诊断符合情况：手术冰冻与石蜡病理 0.未做 1.符合 2.不符合 3.不确定
      ,VCT66 varchar(64) --临床路径病种名称
      ,VCT67 tinyint --病例讨论 1有 2无
      ,VCT68 tinyint --医源性气胸 1有 2无
      ,VCT69 tinyint --医源性意外穿刺伤 1有 2无
      ,VCT70 tinyint --医源性意外撕裂伤 1有 2无
      ,VCT71 tinyint --手术及麻醉并发症 1有 2无
      ,VCT72 varchar(64) --手术及麻醉并发症名称
      ,VCT73 tinyint --术中异物遗留
      ,VCT74 varchar(16) --日常生活能力评定量表得分:入院
      ,VCT75 varchar(16) --日常生活能力评定量表得分:出院
      ,VCT76 tinyint --使用中医护理技术 1.使用 2.未使用
      ,VCT77 tinyint --是否辨证使用中成药 1是 2否
      ,VCT78 varchar(128) --感染部位
 )
  --病案手术信息  
  SELECT IDENTITY(int,1,1) AS ID,* INTO #tmpRAB1
  FROM  OpenXml(@iDOM, '/Root/RAB1/Item', 8) 
    WITH (
   	   RAB01  INT  --ID
	  ,VAA07  INT  --就诊ID
	  ,RAB03  DATETIME  --手术日期
	  ,BAK02  VARCHAR(32)  --手术编码, ICD10-手术部分
	  ,BAK05  VARCHAR(128)  --手术名称, ICD10-手术名称
	  ,BCE03A VARCHAR(20)  --手术者
	  ,BCE03B VARCHAR(20)  --Ⅰ助
	  ,BCE03C VARCHAR(20)  --Ⅱ助
	  ,RAB09  VARCHAR(50)  --麻醉方式, 原先为Anesthesia(英), FK： 麻醉类型.名称
	  ,AAB01  VARCHAR(2)  --切口等级, 1=Ⅰ, 2=Ⅱ, 3=Ⅲ, 切口等级表
	  ,ABD01  VARCHAR(2)  --愈合等级, 1=甲, 2=乙, 3=丙, 愈合等级表
	  ,BCE03D VARCHAR(20)  --麻醉医师
	  ,RAB13  TINYINT  --符合标志, 1=符合, 2=不符合, 3=不确定, 暂时不用
	  ,ACH01  VARCHAR(1)  --手术等级
	  ,ACZ01  VARCHAR(2)  --择期手术
	  ,RAB16  INT  --术前准备时间  单位：天
	  ,RAB17  DATETIME  --手术开始时间
	  ,RAB18  DATETIME  --手术结束时间
	  ,RAB19  DATETIME  --术前预防性抗菌药物给药时间
	  ,RAB20  DATETIME  --麻醉开始时间
	  ,BJX01  VARCHAR(2)  --ASA麻醉分级
	  ,BJY01  VARCHAR(4)  --切口部位
	  ,RAB23  TINYINT  --值域 1：无 2=有
	  ,RAB24  VARCHAR(128)  --重返手术室目的
	  ,RAB25  TINYINT  --1：无 2=有
	  ,RAB26  TINYINT  --1：无 2=有
	  ,BJY02  VARCHAR(32)  --切口部位名称
	  ,RAB27 varchar(2)  --手术风险(NNIS)分级 0,1,2,3
      ,RAB28 tinyint  --是否术前0.5-2小时内预防用抗菌药 1.是 2.否
      ,RAB29 int --清洁手术围术期预防用抗菌药天数
      ,RAB30 tinyint --非预期的二次手术 1.是 2.否
      ,RAB31 tinyint --麻醉并发症 1.是 2.否
      ,RAB32 tinyint --术中异物遗留 1.是 2.否
      ,RAB33 varchar(64) --手术并发症详情
    )
    
  --转科记录
  SELECT IDENTITY(int,1,1) AS ID,* INTO #tmpRAA1
    FROM  OpenXml(@iDOM, '/Root/RAA1/Item', 8) 
    WITH (
     
   	   RAA06 datetime
   	  ,BCK01 int
   	   
   )
  
    
  DECLARE  
         @ID01 int, --各表新增主键变量
         @i int, 
         @Count int,
         @VAA01 int,
         @VAE01 int,
         @VAO01A int,    
         @BAK01A int,
         @VAO01B int,
         @BAK01B int,
         @BAK01Y int,
         @VAO01Y int,
         @VAO01D int,
         @BAK01D int,
         @VAO01E int,
         @BAK01E int,
         @BAK01G int,
         @VAO01H int,
         @BAK01H int,
         @VAO01N int,
         @BAK01N int,
         @VAO01P int,
         @BAK01P int,
         @VAO01S int,
         @BAK01S int,
         @VAE82 datetime,
         @BAK05A varchar(256),
         @BAK05B varchar(256),
         @BAK05Y varchar(256),
         @BAK05D varchar(256),
         @BAK05E varchar(256),
         @BAK05F varchar(256),
         @BAK05H varchar(256),
         @BAK05N varchar(256),
         @BAK05P varchar(256),
         @BAK05S varchar(256),
         @VAE84 int,
         @Allergy varchar(128), --病人过敏
         @VAE44 tinyint,
         @VAA07_VAM1 int, --VAM1表的VAA07
         @VAA08 varchar(20),
         @VAE26 Datetime, --出院日期
         @VAE26_Old Datetime, --数据库出院日期
         @VAA05 varchar(64), --姓名
         @VAA05_Old varchar(64), --数据库姓名
         @VAE19 int --住院次数
  select 
         @VAA01 = VAA01,
         @VAE01 = VAE01,
         @VAO01A = isnull(VAO01A, 0),
         @BAK01A = BAK01A,
         @BAK01B = BAK01B,
         @VAO01B = isnull(VAO01B, 0),
         @VAO01D = isnull(VAO01D, 0),
         @BAK01D = BAK01D, 
         @VAO01Y = ISNULL(VAO01Y, 0),
         @BAK01Y = BAK01Y,
         @BAK05Y = BAK05Y,
         @VAO01E = isnull(VAO01E, 0),
         @BAK01E = BAK01E,
         @VAE82 = VAE82,
         @BAK05A = BAK05A,
         @BAK05B = BAK05B,
         @BAK05D = BAK05D,
         @BAK05E = BAK05E,
         @BAK01G = BAK01G,
         @VAO01H = isnull(VAO01H, 0),
         @BAK01H = BAK01H,
         @BAK05H = BAK05H,
         @VAO01N = isnull(VAO01N, 0),
         @BAK01N = BAK01N,
         @BAK05N = BAK05N,
         @VAO01P = isnull(VAO01P, 0),
         @BAK01P = BAK01P,
         @BAK05P = BAK05P, 
         @VAO01S = isnull(VAO01S, 0),
         @BAK01S = BAK01S, 
         @BAK05S = BAK05S, 
         @VAE84 = VAE84,
         @Allergy = Allergy, --病人过敏记录
         @VAA07_VAM1 = ISNULL(VAA07, 0),
         @VAA08 = ISNULL(VAA08, ''),
         @VAE26 = VAE26,
         @VAA05 = ISNULL(VAA05, ''),
         @VAE19 = ISNULL(VAE19, 1)
  from #tmpPatinfo
  
  select @VAE26_Old = isnull(a.VAE26, 0), @VAE44 = a.VAE44, @VAA05_Old = ISNULL(b.VAA05, '') from VAE1 a join VAA1 b on a.VAA01 = b.VAA01 where a.VAE01 = @VAE01
  
  --检查出院日期
  
  if (@VAE44 > 3) and (isnull(@VAE26, 0) = 0)
  begin
    RAISERROR('该病人已出院，出院日期不能为空', 16, 1) with nowait 
    return 1
  end
  
  /*begin
    RAISERROR('出院病人出院日期不能小于病人入院时间.', 16, 1) with nowait 
    return 1
  end*/
   
  --检查姓名
  if @VAA05 = ''
  begin
    RAISERROR('姓名不能为空', 16, 1) with nowait 
    return 1
  end
  
  
  --判断如果没结帐的病人不允许归档
  if (@VAE84 = 1) and (dbo.GetSysParamValue(500, 501, 2) = '1') and (@VAE44 <> 5)
  begin
    RAISERROR('该病人还未结帐，不能归档病案.', 16, 1) with nowait 
    return 1
  end
  if (@VAE84 = 1)  and (@VAE44 < 4)
  begin
    RAISERROR('该病人还未出院，不能归档病案.', 16, 1) with nowait 
    return 1
  end
  

   
--判断病案号
  if (@VAA08 <> '') and exists(select * from VAE1 where VAA08 = @VAA08 and VAA01 <> @VAA01)
  begin
    RAISERROR('该病案号已经被使用，请更改病案号.', 16, 1) with nowait 
    return 1
  end
--判断归档
  if exists(select * from VAE1 where VAE01 = @VAE01 and VAE84 = 1)
  begin     	
    RAISERROR('此病人病案已归档，不能再继续修改.', 16, 1) with nowait 
    return 1
  end
--判断住院次数
  if (@VAA08 <> '') and exists(select * from VAE1 where VAA08 = @VAA08 and VAE19 = @VAE19 and VAE01 <> @VAE01)
  begin
    RAISERROR('该病案号记录已存在住院次数“%d”的记录，请检查！', 16, 1, @VAE19) with nowait 
    return 1
  end
 
 BEGIN TRAN --开始一个事物
/*=============================================更新病人资料(病人信息及病人登记信息)===================================================*/

 /*===========================================================病人姓名保存更改记录================================================*/
  if @VAA05 <> @VAA05_Old 
  begin
      
	  EXEC Core_NewID 'ZAE1', 'ZAE01', @ID01 OUT, 0
	  INSERT INTO ZAE1 (ZAE01, TNAME, CNAME, ZAE04, ZAE05, ZAE06, ZAE07, ZAE08, BCE01, BCE03, ZAE11)
	  select @ID01, 'VAA1', 'VAA05', @VAA01 , @VAE01, @VAA05_Old, @VAA05, '病案首页病人姓名变更', @EmpId, @EmpName, getdate()
   	
	  IF @@ERROR > 0
	  BEGIN
		if @@TRANCOUNT > 0 ROLLBACK TRAN
			   EXEC sp_xml_removedocument @iDOM
			   RAISERROR('更新病人姓名变更记录时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
			   Return 1
	  END
  end


  UPDATE a 
          Set               
          a.VAA05= b.VAA05 --姓名
          ,a.ABW01= b.ABW01 --性别
          ,a.VAA10= b.VAE46 --年龄
          ,a.AAU01= b.AAU01 --年龄单位
          ,a.VAA12= b.VAA12 --出生日期
          ,a.ACK01= b.ACK01 --婚姻
          ,a.VAA14= b.VAA14 --证件类型          
          ,a.VAA15= b.VAA15 --身份证号
          ,a.VAA16= b.VAA16 --其它证件号
          ,a.ABJ01= b.ABJ01 --医疗付款方式
          ,a.BDP02= b.BDP02 --病人类别
          ,a.ABC02= b.ABC02 --病人费别
          --,a.ACM02= b.ACM02 --从业状况 身份
          ,a.AAT02= b.AAT02 --职业
          ,a.ACC02= b.ACC02 --国籍
          ,a.ABQ02= b.ABQ02 --民族
          ,a.VAA25= b.VAA25 --籍贯
          ,a.VAA28= b.VAE57 --户口地址
          ,a.VAA29= b.VAE58 --户籍邮编
          ,a.VAA30= b.VAE59 --户籍电话
          --,a.VAA31= b.VAE60 --省市
          --,a.VAA32= b.VAE61 --县市
          ,a.VAA33= b.VAE62 --现地址
          ,a.VAA34= b.VAE63 --电话
          ,a.VAA35= b.VAE64 --移动电话
          ,a.VAA36= b.VAE65 --电子邮箱
          ,a.VAA37= b.VAE66 --其它联系方式
          ,a.VAA38= b.AAY02 --学历
          --,a.VAA39= b.VAE67 --监护人
          ,a.VAA40= b.VAE68 --联系人姓名
          ,a.VAA41= b.AAZ02 --与病人关系
          ,a.VAA42= b.VAE70 --联系人地址
          ,a.VAA43= b.VAE71 --联系人电话
          --,a.VAA44= b.VAE72 --联系人移动电话
          --,a.BAQ01= b.BAQ01 --合约单位
          ,a.BAQ02= b.BAQ02 --单位编码
          ,a.VAA47= b.BAQ03 --单位名称
          ,a.VAA48= b.VAE55 --单位电话
          ,a.VAA49= b.VAE56 --单位地址
          ,a.VAA50= b.VAA50 --单位邮编
          --,a.VAA51= b.VAA51 --单位开户行
          --,a.VAA52= b.VAA52 --单位银行账号
          ,a.VAA56= b.VAE19 --住院次数
          ,a.VAA61= 2 --就诊状态
          --,a.VAA64= b.VAE83 --备注
          --,a.IAK05= b.IAK05 --医保号
          --,a.IAA01= b.IAA01 --保险机构
          ,a.BCK01B=b.BCK01B --科室ID
          ,a.BCK01C=b.BCK01A --就诊科室ID
          ,a.BCQ04= b.BCQ04B --床号
          ,a.VAA73= b.VAE11 --入院时间
          ,a.ABL01=b.ABL01  --血型
          ,a.VAA78=b.VAA78 --Rh血型
          ,a.VAA66 = b.VAA08 --病案号
          ,a.VAA20 = b.VAA20 --出生地点
          ,a.VAA82 = b.VAA82 --健康卡号
    from  VAA1 a, #tmpPatinfo b where a.VAA01=@VAA01
    IF @@ERROR >0
    BEGIN
       if @@TRANCOUNT > 0 ROLLBACK TRAN
       EXEC sp_xml_removedocument @iDOM
       RAISERROR('保存病人信息时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
       Return 1
    END  	


/*=============================================================保存病人入院登记=================================================================*/ 
  /*Declare
    @VAA04 varchar(20)
  SELECT @VAA04 = VAA04 FROM #tmpPatinfo*/


 	UPDATE a
 	SET
 		--a.VAA01 = b.VAA01, --病人ID
 		a.VAE04 = b.VAE04, --病人性质
 		a.ABJ01 = b.ABJ01, --医疗付款方式
 		--a.BDP02 = b.BDP02, --病人类别
 		--a.ABC02 = b.ABC02, --折扣费别
 		--a.VAE08 = b.VAE08, --再入院
 		--a.BCK01A = b.BCK01A, --入院病区ID
 		--a.BCK01B = b.BCK01B, --入院科室ID
 		a.VAE11 = b.VAE11, --入院日期
 		a.ABO01 = b.ABO01, --入院病情
 		a.ABR01 = b.ABR01, --入院方式
 		a.ABT02 = b.ABT02, --就诊方式
 		a.VAE15 = b.VAE15, --转院名称
 		a.ABZ02 = b.ABZ02, --入院待遇
 		a.ABK02 = b.ABK02, --住院目的
 		a.BCQ04A = b.BCQ04A, --入院床位
 		a.VAE19 = b.VAE19, --住院次数
 		a.VAE20 = b.VAE20, --陪伴
 		a.AAG01 = b.AAG01, --护理等级ID
 		a.VAE22 = b.VAE22, --住院病情
 		a.BCK01C = b.BCK01C, --住院病区ID
 		a.BCK01D = b.BCK01D, --住院科室ID
 		a.BCQ04B = b.BCQ04B, --住院床位
 		a.VAE27 = b.VAE27, --住院天数
 		a.ABV01 = b.ABV01, --出院类型
 		a.VAE29 = b.VAE29, --确诊
 		a.VAE30 = b.VAE30, --确诊日期
 		a.VAE31 = b.VAE31, --新发肿瘤
 		a.VAE33 = b.VAE33, --抢救次数
 		a.VAE34 = b.VAE34, --成功次数
 		a.VAE35 = b.VAE35, --随诊标志
 		a.VAE36 = b.VAE36, --随诊期限
 		a.VAE37 = b.VAE37, --随诊单位
 		a.VAE38 = b.VAE38, --尸检标志
 		a.BCE03A = b.BCE03A, --门诊医师
 		a.BCE03B = b.BCE03B, --责任护士
 		a.BCE03C = b.BCE03C, --住院医师
 		a.VAE42 = b.VAE42, --疾病病种
 		a.VAE45 = b.VAE45, --金额
 		a.VAE46 = b.VAE46, --年龄
 		a.AAU01 = b.AAU01, --年龄单位
 		a.ACK01 = b.ACK01, --婚姻状态
 		a.AAT02 = b.AAT02, --职业
 		a.ACC02 = b.ACC02, --国籍
 		a.AAY02 = b.AAY02, --学历
 		--a.BAQ01 = b.BAQ01, --合约单位ID
 		a.BAQ02 = b.BAQ02, --工作单位编码
 		a.BAQ03 = b.BAQ03, --工作单位名称
 		a.VAE55 = b.VAE55, --单位电话
 		a.VAE56 = b.VAE56, --单位地址
 		a.VAE57 = b.VAE57, --户口地址
 		a.VAE58 = b.VAE58, --户口邮编
 		a.VAE59 = b.VAE59, --户口电话
 		a.VAE60 = b.VAE60, --省市
 		a.VAE61 = b.VAE61, --县市
 		a.VAE62 = b.VAE62, --地址
 		a.VAE63 = b.VAE63, --电话
 		a.VAE64 = b.VAE64, --移动电话
 		a.VAE65 = b.VAE65, --电子邮箱
 		a.VAE66 = b.VAE66, --其它联系方式
 		a.VAE67 = b.VAE67, --监护人
 		a.VAE68 = b.VAE68, --联系人姓名
 		a.AAZ02 = b.AAZ02, --与病人关系
 		a.VAE70 = b.VAE70, --联系人地址
 		a.VAE71 = b.VAE71, --联系人电话
 		a.VAE72 = b.VAE72, --联系人移动电话
 		a.VAE73 = b.VAE73, --中医治疗类别
 		--a.IAA01 = b.IAA01, --保险机枪ID
 		a.UAA01 = b.UAA01, --社区
 		a.VAE76 = b.VAE76, --审核
 		a.BCE03D = b.BCE03D, --审核人
 		a.VAE78 = b.VAE78, --审核日期
 		a.VAE79 = b.VAE79, --上传标志
 		a.VAE80 = b.VAE80, --转出标志
 		a.BCE03E = b.BCE03E, --登记人
 		--a.VAE82 = b.VAE82, --制表时间
 		--a.VAE83 = b.VAE83, --备注
 		a.VAE84 = b.VAE84, --档案状态
 		a.VAE85 = b.VAE85, --存楼时间
 		a.VAE87 = dbo.GetPatAge(b.VAE87, 0, 0, 2),
 		a.VAE89 = b.VAE89, --入院时体重
 		a.VAE90 = b.VAE90, --新生儿出生体重
 		a.VAE91 = b.VAE91, --身高
 		a.VAE92 = b.VAE92, --转院医疗机构
 		a.VAA08 = b.VAA08 --病案号
 	FROM VAE1 a, #tmpPatInfo b WHERE a.VAE01 = @VAE01
    IF @@ERROR >0
  	BEGIN
   	    if @@TRANCOUNT > 0 ROLLBACK TRAN
               EXEC sp_xml_removedocument @iDOM
               RAISERROR('保存病人入院登记时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
               Return 1
   	END
/*======================================================更新出院时间=============================================================*/
    if ((@VAE44 > 3) and ((@UpVAE26 = 1) or (@UpVAE26 = 3))) or ((@VAE44 < 4) and ((@UpVAE26 = 2) or (@UpVAE26 = 3)))
    begin
        if (@VAE26 <> @VAE26_Old)
   		begin
   		  Update VAE1 set VAE26 = @VAE26 where VAE01 = @VAE01
   		  EXEC Core_NewID 'ZAE1', 'ZAE01', @ID01 OUT, 0
   		  INSERT INTO ZAE1 (ZAE01, TNAME, CNAME, ZAE04, ZAE05, ZAE06, ZAE07, ZAE08, BCE01, BCE03, ZAE11)
		  select @ID01, 'VAE1', 'VAE26', @VAA01 , @VAE01, CONVERT(VARCHAR(24), @VAE26_Old, 113), 
			CONVERT(VARCHAR(24), @VAE26, 113), '病案首页出院日期变更', @EmpId, @EmpName, getdate()
	   	
		  IF @@ERROR > 0
  		  BEGIN
   			if @@TRANCOUNT > 0 ROLLBACK TRAN
				   EXEC sp_xml_removedocument @iDOM
				   RAISERROR('更新出院日期时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
				   Return 1
   		  END
   		end
   	end
 /*======================================================保存病人登记附表=============================================================*/
   
    if @VAA07_VAM1 = 0 --说明是新增
    begin
	    
		INSERT INTO VAM1
			  (VAA07, VAM02, VAM03, VAM04, VAM05, VAM06, VAM07, VAM08, VAM09, VAM10, VAM11, VAM12, VAM13, VAM14, VAM15, VAM16, VAM17, VAM18, 
			   VAM19, VAM20, VAM21, VAM22, VAM23, VAM24, VAM25, VAM26, VAM27, VAM28, VAM29, VAM30, VAM31, VAM32, VAM33, VAM34, VAM35, VAM36, 
			   VAM37, VAM38, VAM39, VAM40, VAM41, VAM42, VAM43, VAM44, VAM45, VAM46, VAM47, VAM48, VAM49, VAM50, VAM51, VAM52, VAM53, VAM54,
			   VAM55, VAM56, VAM57, VAM58, VAM59, VAM60, VAM61, VAM62, VAM63, VAM64, VAM65, VAM66, VAM67, VAM68, VAM69, VAM70, VAM71 , VAM72,
			   VAM73, VAM74, VAM75, VAM76, VAM77,VAM78,VAM79,VAM80,VAM81,VAM82,BCE03, VAM84,VAM85,VAM86,VAM87,VAM88,VAM89,VAM90, VAM96, VAM97,
			   VAM98, VAM99, VAMA1, VAMA2, BCE03C)
	             
		Select @VAE01, VAM02, VAM03, VAM04, VAM05, VAM06, VAM07, VAM08, VAM09, VAM10, VAM11, VAM12, VAM13, VAM14, VAM15, VAM16, VAM17, VAM18, 
			   VAM19, VAM20, VAM21, VAM22, VAM23, VAM24, VAM25, VAM26, VAM27, VAM28, VAM29, VAM30, VAM31, VAM32, VAM33, VAM34, VAM35, VAM36,
			   VAM37, VAM38, VAM39, VAM40, VAM41, VAM42, VAM43, VAM44, VAM45, VAM46, VAM47, VAM48, VAM49, VAM50, VAM51, VAM52, VAM53, VAM54, 
			   VAM55, VAM56, VAM57, VAM58, VAM59, VAM60, VAM61, VAM62, VAM63, VAM64, VAM65, VAM66, VAM67, VAM68, VAM69, VAM70, VAM71, VAM72,
			   VAM73, VAM74, VAM75, VAM76, VAM77,VAM78,VAM79,VAM80,VAM81,VAM82,BCE03, VAM84,VAM85,VAM86,VAM87,VAM88,VAM89,VAM90, VAM96, VAM97,
			   VAM98, VAM99, VAMA1, VAMA2, GDR
		from #tmpPatInfo
		  
    end
    else begin
      update
		  A
		set
		   
		   A.VAM02=B.VAM02  --入院病室
		  ,A.VAM03=B.VAM03  --出院病室
		  ,A.VAM04=B.VAM04  --有无转科, 这个自动判定值域： 0=否, 1=是
		  ,A.VAM05=B.VAM05  --病例分型, A, B, C, D
		  ,A.VAM06=B.VAM06  --入院前经外院诊治,值域： 0=否, 1=是
		  ,A.VAM07=B.VAM07  --最高诊断依据
		  ,A.VAM08=B.VAM08  --HBsAg 0=未做、1=阴性、2=阳性
		  ,A.VAM09=B.VAM09  --HCV-Ab 0=未做、1=阴性、2=阳性
		  ,A.VAM10=B.VAM10  --HIV-Ab 0=未做、1=阴性、2=阳性
		  ,A.VAM11=B.VAM11  --疑难, 中医住院期间病情
		  ,A.VAM12=B.VAM12  --危重, 中医住院期间病情
		  ,A.VAM13=B.VAM13  --急症, 中医住院期间病情
		  ,A.VAM14=B.VAM14  --辨证, 准确度
		  ,A.VAM15=B.VAM15  --治法, 准确度
		  ,A.VAM16=B.VAM16  --方药, 准确度
		  ,A.VAM17=B.VAM17  --抢救方法, 值域： 1=中, 2=西, 3=中西
		  ,A.VAM18=B.VAM18  --自制中药, Homemade, 值域： 0=无, 1=有
		  ,A.VAM19=B.VAM19  --中医门诊与出院 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM20=B.VAM20  --中医入院与出院 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM21=B.VAM21  --门诊与出院 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM22=B.VAM22  --入院与出院 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM23=B.VAM23  --术前与术后, Ante-Post 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM24=B.VAM24  --临床与病理 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM25=B.VAM25  --放射与病理 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM26=B.VAM26  --科主任, 原为ChiefDepartment
		  ,A.VAM27=B.VAM27  --主(副)主任医师
		  ,A.VAM28=B.VAM28  --进修医师
		  ,A.VAM29=B.VAM29  --研究生实习医师
		  ,A.VAM30=B.VAM30  --实习医师
		  ,A.VAM31=B.VAM31  --主治医师
		  ,A.VAM32=B.VAM32  --分化程度
		  ,A.VAM33=B.VAM33  --病案质量, 1=甲, 2=乙, 3=丙
		  ,A.VAM34=B.VAM34  --质控医师
		  ,A.VAM35=B.VAM35  --质控护士
		  ,A.VAM36=B.VAM36  --质控日期
		  ,A.VAM37=B.VAM37  --中度烧伤,值域： 0=否, 1=是
		  ,A.VAM38=B.VAM38  --死亡原因
		  ,A.VAM39=B.VAM39  --死亡时间
		  ,A.VAM40=B.VAM40  --首例手术,值域： 0=否, 1=是
		  ,A.VAM41=B.VAM41  --首例治疗,值域： 0=否, 1=是
		  ,A.VAM42=B.VAM42  --首例检查,值域： 0=否, 1=是
		  ,A.VAM43=B.VAM43  --首例诊断,值域： 0=否, 1=是
		  ,A.VAM44=B.VAM44  --随诊,值域： 0=否, 1=是
		  ,A.VAM45=B.VAM45  --示教病例,值域： 0=否, 1=是
		  ,A.VAM46=B.VAM46  --科研病例,值域： 0=否, 1=是
		  ,A.VAM47=B.VAM47  --输血前9项检查1=是,2=否,3=部分
		  ,A.VAM48=B.VAM48  --输血反应,值域： 0=否, 1=是
		  ,A.VAM49=B.VAM49  --输液反应,值域： 0=否, 1=是，2＝未输
		  ,A.VAM50=B.VAM50  --红细胞
		  ,A.VAM51=B.VAM51  --血小板
		  ,A.VAM52=B.VAM52  --血浆
		  ,A.VAM53=B.VAM53  --全血
		  ,A.VAM54=B.VAM54  --其他输血
		  ,A.VAM55=B.VAM55  --会诊情况
		  ,A.VAM56=B.VAM56  --远程会诊次数
		  ,A.VAM57=B.VAM57  --特级护理(小时)
		  ,A.VAM58=B.VAM58  --Ⅰ级护理(日)
		  ,A.VAM59=B.VAM59  --Ⅱ级护理(日)
		  ,A.VAM60=B.VAM60  --Ⅲ级护理(日)
		  ,A.VAM61=B.VAM61  --重症监护(小时)
		  ,A.VAM62=B.VAM62  --特殊护理(日)
		  ,A.VAM63=B.VAM63  --医学感染作病源学检查
		  ,A.VAM64=B.VAM64  --使用抗生素,值域： 0=否, 1=是
		  ,A.VAM65=B.VAM65  --单病种,值域： 0=否, 1=是
		  ,A.VAM66=B.VAM66  --部分病种,值域： 0=否, 1=是
		  ,A.VAM67=B.VAM67  --住院总费用
		  ,A.VAM68=B.VAM68  --编码员
		  ,A.VAM69=B.VAM69  --编码日期
		  ,A.VAM70=B.VAM70  --创建者
		  ,A.VAM71=B.VAM71  --创建日期
		  ,A.VAM72=B.VAM72  --使用抗生素目的, 值域： 1=预防, 2=治疗
		  ,A.VAM73=B.VAM73  --使用抗生素方案, 值域： 1=单独使用, 2=联合使用
		  ,A.VAM74=B.VAM74  --抗生素, 抗生素种类
		  ,A.VAM75=B.VAM75  --使用天数
		  ,A.VAM76=B.VAM76  --合并症, 1=有, 2=无
		  ,A.VAM77=B.VAM77  --并发症, 1=有, 2=无
		  ,A.VAM78=B.VAM78  -- 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM79=B.VAM79  -- 1未做、2=符合、3=不符合、4=不确定
		  ,A.VAM80=B.VAM80  --X线号
		  ,A.VAM81=B.VAM81  --CT号
		  ,A.VAM82=B.VAM82  --病理号
		  ,A.BCE03=B.BCE03  --护士长
		  ,A.VAM84=B.VAM84  --MRI号
		  ,A.VAM85=B.VAM85  --DSA号
		  ,A.VAM86=B.VAM86  --尸体解剖号
		  ,A.VAM87=B.VAM87  --术前住院天数
		  ,A.VAM88=B.VAM88  --出院31天内再住院目的
		  ,A.VAM89=B.VAM89  --入院前颅脑损伤患者昏迷时间  格式：000D00H00N
		  ,A.VAM90=B.VAM90  --入院后颅脑损伤患者昏迷时间
		  ,A.VAM96=B.VAM96  --1、中医，2、西医，3：否
		  ,A.VAM97=B.VAM97  --1：是 2：否
		  ,A.VAM98=B.VAM98  --1：是 2：否
		  ,A.VAM99=B.VAM99  --1：是 2；否
		  ,A.VAMA1=B.VAMA1  --1：西医 2： 中医 3：中西医
		  ,A.VAMA2=B.VAMA2 --自付金额
                  ,A.BCE03C=B.GDR --归档人
		  
		from
		  VAM1 AS A, #tmpPatInfo AS B
		where A.VAA07 = @VAA07_VAM1
    end
    IF @@ERROR >0
		BEGIN
			if @@TRANCOUNT > 0 ROLLBACK TRAN
				 EXEC sp_xml_removedocument @iDOM
				 RAISERROR('保存病人登记附表VAM1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
				 Return 1
		END 	
     	
     	

/*====================================================病人诊断信息(中医、西医)===========================================================*/
  
  if (@BAK05A <> '') --西医门诊诊断
  begin
   
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 1
    
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01A,3,1,0,0,1,null,0,@EmpName,@BAK05A  --@VAO01A
   	 IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人门急诊诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
  END
  else
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 1
    
  if (@BAK05B <> '') --西医入院诊断
  begin
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 2 
    
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01B,3,1,0,0,2,null,0,@EmpName,@BAK05B  --@VAO01B
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人入院诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
    --同步更新系统入院诊断 ACF01＝2
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 2 and VAO11 = 2 and VAF01 = 0 
    
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01B,2,1,0,0,2,null,0,@EmpName,@BAK05B  --@VAO01B
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人入院诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
   
  END
  else
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 2   
  
 if (@BAK05D <> '') --病理诊断
 begin
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 6
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01D,3,1,1,0,6,null,0,@EmpName,@BAK05D  --@VAO01D
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人病理诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
  END
  else
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 6
    
  
  if (@BAK05H <> '') --损伤中毒
  begin
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 7
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01H,3,1,1,0,7,null,0,@EmpName,@BAK05H  --@VAO01H
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存损伤中毒外部因素时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
  END
  else 
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 0 and ACF01 = 3 and VAO11 = 7
  
 
  if (@BAK05E <> '') --门诊中医诊断
  begin
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 1 and ACF01 = 3 and VAO11 = 1
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01E,3,1,1,1,1,null,0,@EmpName,@BAK05E,@BAK01G   --@VAO01E
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人门急诊中医诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
    
  END
  else 
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 1 and ACF01 = 3 and VAO11 = 1
   
  if (@BAK05Y <> '') --中医入院诊断
  begin
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 1 and ACF01 = 3 and VAO11 = 1
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01Y,3,1,1,1,2,null,0,@EmpName,@BAK05Y
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人门急诊中医诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
    --同步更新系统入院诊断 ACF01＝2
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 1 and ACF01 = 2 and VAO11 = 2 and VAF01 = 0
   	Exec HOPatient_VAO1_Update @VAA01,@VAE01,0,@BAK01Y,2,1,1,1,2,null,0,@EmpName,@BAK05Y
   	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('同步保存病人入院诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
  END
  Else
    Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and VAO10 = 1 and ACF01 = 3 and VAO11 = 2 


   --出院诊断
  Delete from VAO2 where VAA01=@VAA01 and VAA07=@VAE01 and ACF01=3 and VAO11 in(3, 5, 10)
  
  
  

	
	select @Count = COUNT(*) from #tmpVAO2
	EXEC [Core_NewIDEx] 'VAO1', 'VAO01', @ID01 OUTPUT, @Count
	set @ID01 = @ID01 - @Count
	Insert into VAO2(VAO01, VAA01, VAA07, VAF01, ACF01, VAO06, VAO07, VAO08, VAO09, VAO10, VAO11, BAK01A, CAM01, 
	  BAK01B, VAO15, ABX01, VAO17, VAO18, VAO19, BCE03A, VAO21, BCE03B, VAO24, VAO25, BGP01)
	select @ID01 + ID, @VAA01, @VAE01, VAF01, 3, isnull(VAO06, ID),  VAO07, VAO08, VAO09, VAO10, VAO11, BAK01A, CAM01, BAK01B, BAK05, ABX01, VAO17, VAO18,
       VAO19, BCE03A, VAO21, BCE03B, VAO24, VAO25, BGP01 from #tmpVAO2
	IF @@ERROR >0
     	BEGIN
     	    if @@TRANCOUNT > 0 ROLLBACK TRAN
                 EXEC sp_xml_removedocument @iDOM
                 RAISERROR('保存病人出院诊断时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
                 Return 1
     	END
     

  /*============================================================保存病案手术记录========================================================*/
  Declare
    @BJY01 varchar(4),
    @BJY02 varchar(32)
  delete a from RAB1 a where a.VAA07 = @VAE01 and not exists(select * from #tmpRAB1 b where b.RAB01 = a.RAB01) --把不存在#tmpRAB1的手术记录删除
        
  select @i = 0, @Count = count(*) from #tmpRAB1
  while @i < @Count
  BEGIN
	select @ID01 = RAB01 from #tmpRAB1 where [ID] = @i + 1
	--判断BJY02是否存在BJY1表，如果不存在则插入
	select @BJY02 = BJY02 from #tmpRAB1 where [ID] = @i + 1
	if ISNULL(@BJY02, '') <> '' 
	begin
		select @BJY01 = BJY01 from BJY1 where BJY02 = @BJY02
		if ISNULL(@BJY01, '') = ''
		begin
		  select @BJY01 = MAX(BJY01) from BJY1 where BJY01 <> '9999'
		  set @BJY01 = Str(CAST(@BJY01 as int) + 1, 4)
		  set @BJY01 = replace(@BJY01, ' ', '0')
		  Insert Into BJY1(BJY01, BJY02, ABBRP) values(@BJY01, @BJY02, dbo.GetABBRP(@BJY02))
		    
		end
	end
	else 
	  set @BJY01 = NULL
		 
	if isnull(@ID01, 0)= 0 --手术记录不存在
	BEGIN
	  Exec Core_NewId_RAB01 @ID01 out 
      INSERT INTO RAB1 (RAB01, VAA07, RAB03, BAK02, BAK05, BCE03A, BCE03B, BCE03C, RAB09, 
        AAB01, ABD01, BCE03D, RAB13, ACH01, ACZ01, RAB16, RAB17, RAB18, RAB19, RAB20, BJX01, 
        BJY01, RAB23, RAB24, RAB25, RAB26, RAB27, RAB28, RAB29, RAB30, RAB31, RAB32, RAB33)
      select @ID01, @VAE01, RAB03, BAK02, BAK05, BCE03A, BCE03B, BCE03C, RAB09, AAB01, ABD01, 
        BCE03D, RAB13, ACH01, ACZ01, RAB16, RAB17, RAB18, RAB19, RAB20, BJX01, @BJY01, RAB23, 
        RAB24, RAB25, RAB26, RAB27, RAB28, RAB29, RAB30, RAB31, RAB32, RAB33
      from #tmpRAB1 where [ID]=@i + 1
      IF @@ERROR >0
      BEGIN
        if @@TRANCOUNT > 0 ROLLBACK TRAN
        EXEC sp_xml_removedocument @iDOM
        RAISERROR('保存病人保存病案手术表RAB1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
        Return 1
      END
	END 
	ELSE BEGIN        --手术记录存在
        Update a set 
      	   a.RAB03 = b.RAB03  --手术日期
		  ,a.BAK02 = b.BAK02  --手术编码a. ICD10-手术部分
		  ,a.BAK05 = b.BAK05  --手术名称a. ICD10-手术名称
		  ,a.BCE03A = b.BCE03A  --手术者
		  ,a.BCE03B = b.BCE03B  --Ⅰ助
		  ,a.BCE03C = b.BCE03C  --Ⅱ助
		  ,a.RAB09 = b.RAB09  --麻醉方式a. 原先为Anesthesia(英)a. FK： 麻醉类型.名称
		  ,a.AAB01 = b.AAB01  --切口等级a. 1=Ⅰa. 2=Ⅱa. 3=Ⅲa. 切口等级表
		  ,a.ABD01 = b.ABD01  --愈合等级a. 1=甲a. 2=乙a. 3=丙a. 愈合等级表
		  ,a.BCE03D = b.BCE03D  --麻醉医师
		  ,a.RAB13 = b.RAB13  --符合标志a. 1=符合a. 2=不符合a. 3=不确定a. 暂时不用
		  ,a.ACH01 = b.ACH01  --手术等级
		  ,a.ACZ01 = b.ACZ01  --择期手术
		  ,a.RAB16 = b.RAB16  --术前准备时间  单位：天
		  ,a.RAB17 = b.RAB17  --手术开始时间
		  ,a.RAB18 = b.RAB18  --手术结束时间
		  ,a.RAB19 = b.RAB19  --术前预防性抗菌药物给药时间
		  ,a.RAB20 = b.RAB20  --麻醉开始时间
		  ,a.BJX01 = b.BJX01  --ASA麻醉分级
		  ,a.BJY01 = @BJY01  --切口部位
		  ,a.RAB23 = b.RAB23  --值域 1：无 2=有
		  ,a.RAB24 = b.RAB24  --重返手术室目的
		  ,a.RAB25 = b.RAB25  --1：无 2=有
		  ,a.RAB26 = b.RAB26  --1：无 2=有
		  ,a.RAB27 = b.RAB27  --手术风险(NNIS)分级 0,1,2,3
          ,a.RAB28 = b.RAB28 --是否术前0.5-2小时内预防用抗菌药 1.是 2.否
          ,a.RAB29 = b.RAB29 --清洁手术围术期预防用抗菌药天数
          ,a.RAB30 = b.RAB30 --非预期的二次手术 1.是 2.否
          ,a.RAB31 = b.RAB31 --麻醉并发症 1.是 2.否
          ,a.RAB32 = b.RAB32 --术中异物遗留 1.是 2.否
          ,a.RAB33 = b.RAB33 --手术并发症详情
        from RAB1 a, #tmpRAB1 b 
        where a.RAB01=@ID01 and b.RAB01=@ID01 
	END
	set @i = @i + 1
  END       

----------------------------------------------------病人过敏记录----------------------------
    
    delete from VAN1 where VAA07 = @VAE01 and ACF01 = 3
    if ISNULL(@Allergy, '') <> ''
    begin
		EXEC Core_NewID 'VAN1', 'VAN01', @ID01 OUT, 0
		INSERT INTO VAN1 (VAN01, VAA01, VAA07, ACF01, VAN05, BBX01, BBX05, VAN08, VAN09, BCE03)
		values(@ID01, @VAA01, @VAE01, 3, '', 0, @Allergy, 1, GETDATE(), @EmpName)
		IF @@ERROR >0
		BEGIN
			if @@TRANCOUNT > 0 ROLLBACK TRAN
			EXEC sp_xml_removedocument @iDOM
			RAISERROR('保存病人过敏记录VAN1表过程表时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
			Return 1
		END
	end

  ----------------------------------------------------保存转科记录----------------------------
  delete from RAA1 where VAA07 = @VAE01 and ACF01 = 2
  select @i = 0, @Count = count(*) from #tmpRAA1
  while @i <= @Count
  BEGIN
    EXEC Core_NewID 'RAA1', 'RAA01', @ID01 OUT, 0
	INSERT INTO RAA1 (RAA01,VAA01,VAA07,ACF01,BCK01,RAA06,BCK01A)
    select @ID01,@VAA01,@VAE01,2,BCK01,RAA06,0
    from #tmpRAA1 where [ID]=@i + 1
    IF @@ERROR >0
    BEGIN
      if @@TRANCOUNT > 0 ROLLBACK TRAN
      EXEC sp_xml_removedocument @iDOM
      RAISERROR('保存病案转科记录表RAA1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
      Return 1
    END
    set @i = @i + 1
  END   
 
 ----------------------------------------------------保存病案扩展表VCT1----------------------------
  declare @VAA07_VCT1 int
  
  select @VAA07_VCT1 = VAA07 from #tmpVCT1
  if isnull(@VAA07_VCT1, 0) = 0
  begin
  	  Insert Into VCT1(VAA07, VCT02, VCT03, VCT04, VCT05, VCT06, VCT07, VCT08, VCT09, VCT10, VCT11, VCT12, VCT13,
		VCT14, VCT15, VCT16, VCT17, VCT18, VCT19, VCT20, VCT21, VCT22, VCT23, VCT24, VCT25, VCT26, VCT27, VCT28, 
		VCT29, VCT30, VCT31, VCT32, VCT33, VCT34, VCT35, VCT36, VCT37, VCT38, VCT39, VCT40, VCT41, VCT42, VCT43, 
		VCT44, VCT45, RBB15, VCT47, VCT48, VCT49, VCT50, VCT51, VCT52, VCT53, VCT54, VCT55, VCT56, VCT57, VCT58, VCT59,
		VCT60 ,VCT61, ADX01 ,VCT63 ,VCT64 ,VCT65 ,VCT66 ,VCT67 ,VCT68 ,VCT69 ,VCT70 ,VCT71, VCT72, VCT73, VCT74, 
                VCT75, VCT76, VCT77, VCT78) 
	  Select @VAE01, VCT02, VCT03, VCT04, VCT05, VCT06, VCT07, VCT08, VCT09, VCT10, VCT11, VCT12, VCT13, VCT14,
		VCT15, VCT16, VCT17, VCT18, VCT19, VCT20, VCT21, VCT22, VCT23, VCT24, VCT25, VCT26, VCT27, VCT28, VCT29,
		VCT30, VCT31, VCT32, VCT33, VCT34, VCT35, VCT36, VCT37, VCT38, VCT39, VCT40, VCT41, VCT42, VCT43, VCT44,
		VCT45, RBB15, VCT47, VCT48, VCT49, VCT50, VCT51, VCT52, VCT53, VCT54, VCT55, VCT56, VCT57, VCT58, VCT59,
		VCT60 ,VCT61 ,ADX01 ,VCT63 ,VCT64 ,VCT65 ,VCT66 ,VCT67 ,VCT68 ,VCT69 ,VCT70 ,VCT71, VCT72, VCT73, VCT74, 
                VCT75, VCT76, VCT77, VCT78
	  from #tmpVCT1
  end
  else begin
    update a set
	   a.VCT02=b.VCT02  --1=否 2=是
	  ,a.VCT03=b.VCT03  --单位(小时)
	  ,a.VCT04=b.VCT04  --1＝单独使用,a. 2=联合用药 
	  ,a.VCT05=b.VCT05  --住院期间使用抗菌药物累积DDD值
	  ,a.VCT06=b.VCT06  --1=I种 2=Ⅱ联 3=Ⅲ联 4=Ⅳ联  5= ＞Ⅳ联
	  ,a.VCT07=b.VCT07  --1=是 2=否
	  ,a.VCT08=b.VCT08  --退出临床路径原因
	  ,a.VCT09=b.VCT09  --1＝否，2＝是
	  ,a.VCT10=b.VCT10  --变异原因
	  ,a.VCT11=b.VCT11  --院内会诊次数
	  ,a.VCT12=b.VCT12  --院际会诊次数
	  ,a.VCT13=b.VCT13  --其他会诊情况
	  ,a.VCT14=b.VCT14  --自体血回输 单位：ml
	  ,a.VCT15=b.VCT15  --白蛋白 单位：ml
	  ,a.VCT16=b.VCT16  --检查情况 按位排序CT,PETCT,双源CT,X片,B超,超声心动图,MRI,同位素检查 0表示未输入 1.阳性 2.阴性 3、未做
	  ,a.VCT17=b.VCT17  --1.阳性 2.阴性 3、未做
	  ,a.VCT18=b.VCT18  --1.无  2=有  根据入住记录自动生成值
	  ,a.VCT19=b.VCT19  --1.无  2=有  根据入住使用记录自动生成值
	  ,a.VCT20=b.VCT20  --1=有 2＝无
	  ,a.VCT21=b.VCT21  --1=是 2＝否
	  ,a.VCT22=b.VCT22  --1=是 2＝否
	  ,a.VCT23=b.VCT23  --1=是 2＝否
	  ,a.VCT24=b.VCT24  --1=1期 2= 2期 3= 3期 4= 4期
	  ,a.VCT25=b.VCT25  --当有输液反应时，引发反应的药物
	  ,a.VCT26=b.VCT26  --输液反应的临床表现
	  ,a.VCT27=b.VCT27  --1=是 2＝否
	  ,a.VCT28=b.VCT28  --1. 一级    2. 二级   3. 三级   4.未造成伤害
	  ,a.VCT29=b.VCT29  --1.健康原因 2.治疗、药物、麻醉原因   3.环境因素  9.其他原因 
	  ,a.VCT30=b.VCT30  --1.有  2.无 
	  ,a.VCT31=b.VCT31  --离院时透析（血透、腹透）尿素氮值
	  ,a.VCT32=b.VCT32  --(出生地)省(区、市)
	  ,a.VCT33=b.VCT33  --(出生地)市
	  ,a.VCT34=b.VCT34  --(出生地)县
	  ,a.VCT35=b.VCT35  --(籍贯)省(区、市)
	  ,a.VCT36=b.VCT36  --(籍贯)市
	  ,a.VCT37=b.VCT37  --(户口地址)省(区、市)
	  ,a.VCT38=b.VCT38  --(户口地址)市
	  ,a.VCT39=b.VCT39  --(户口地址)县
	  ,a.VCT40=b.VCT40  --(户口地址)地址
	  ,a.VCT41=b.VCT41  --(现住址)县
	  ,a.VCT42=b.VCT42  --现住址邮编 
      ,a.VCT43=b.VCT43  --主诊医生
      ,a.VCT44=b.VCT44 --主管护士
      ,a.VCT45=b.VCT45 --归档位置
      ,a.RBB15=b.RBB15 --借阅状态 0.默认, 1.借出, 2.归还
      ,a.VCT47=b.VCT47 --新生儿出生体重
      ,a.VCT48=b.VCT48 ----实施DRGs管理:1.无 2.按病种 3.按费用 4.两者都有
      ,a.VCT49=b.VCT49 --法定传染病:0=无  1.甲类2.乙类 3.丙类
      ,a.VCT50=b.VCT50 --住院期间是否输液1.是 2.否
      ,a.VCT51=b.VCT51 ----住院期间是否输血1.是 2.否
      ,a.VCT52=b.VCT52 --住院期间身体使用物理约束总时间 小时
      ,a.VCT53=b.VCT53 --住院期间身体使用物理约束方式 1.一处 2.两处 3.三处 4.其他
      ,a.VCT54=b.VCT54 --住院期间身体使用物理约束工具 1.软式管  2.硬式管  3.背心  4.老人椅  5.约束带  6.其他
      ,a.VCT55=b.VCT55 --住院期间身体使用物理约束原因 1.认知障碍 2.可能跌倒 3.行为紊乱 4.治疗需要 5.躁动6.医疗限制 7.其他
      ,a.VCT56=b.VCT56 --是否发生围术期死亡 1.是  2.否
      ,a.VCT57=b.VCT57 --是否发生术后猝死 1.是  2.否
      ,a.VCT58=b.VCT58 --距上一次住本院的时间 0.第一次住本院   1.当天    2.2-15天    3.16-31天     4.＞31天
      ,a.VCT59=b.VCT59 --上一次住本院与本次住院是否因同一疾病(主要诊断) 1.是  2.否
      ,a.VCT60=b.VCT60 --生育情况
      ,a.VCT61=b.VCT61 --发病时间
      ,a.ADX01=b.ADX01 --发病地点
      ,a.VCT63=b.VCT63 --家庭住址区域代码
      ,a.VCT64=b.VCT64 --感染名称
      ,a.VCT65=b.VCT65 --诊断符合情况：手术冰冻与石蜡病理 0.未做 1.符合 2.不符合 3.不确定
      ,a.VCT66=b.VCT66 --临床路径病种名称
      ,a.VCT67=b.VCT67 --病例讨论 1有 2无
      ,a.VCT68=b.VCT68 --医源性气胸 1有 2无
      ,a.VCT69=b.VCT69 --医源性意外穿刺伤 1有 2无
      ,a.VCT70=b.VCT70 --医源性意外撕裂伤 1有 2无
      ,a.VCT71=b.VCT71 --手术及麻醉并发症 1有 2无
      ,a.VCT72=b.VCT72 --手术及麻醉并发症名称
      ,a.VCT73=b.VCT73 --术中异物遗留
      ,a.VCT74=b.VCT74 --日常生活能力评定量表得分:入院
      ,a.VCT75=b.VCT75 --日常生活能力评定量表得分:出院
      ,a.VCT76=b.VCT76 --使用中医护理技术 1.使用 2.未使用
      ,a.VCT77=b.VCT77 ----是否辨证使用中成药 1是 2否
      ,a.VCT78=b.VCT78 --感染部位
	from VCT1 a, #tmpVCT1 b 
	where a.VAA07 = @VAA07_VCT1
  end
  IF @@ERROR >0
  BEGIN
	if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存病案扩展表VCT1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
  END
  
  ----------------------------------------------------保存病案ICU记录表RAU1----------------------------
  if charindex('RAU1', @TableList) > 0 --如果需要更新列表中存在RAU1则进行更新
  begin
    delete from RAU1 where VAA07 = @VAE01
	insert into RAU1
	(
	   VAA07  --就诊ID
	  ,BJZ01  --ICU类型
	  ,ROWNR  --ROWNR
	  ,RAU05  --入住时间
	  ,RAU06  --转出时间
	  ,RAU07  --再次入住ICU  1=无 2=有
	  ,RAU08  --入住原因
	  ,RAU09 --重症监护室名称
      ,RAU10 --是否发生人工气道脱出 1.是 2.否
      ,RAU11 --是否非预期的重返重症医学科1.是 2.否（注：指同一住院过程中转出ICU后的重返）
      ,RAU12 --重返间隔时间 0.非重返 1. 24h内 2. 24-48h 3. ＞48h
	)
	SELECT 
	   
	   @VAE01  --就诊ID
	  ,BJZ01  --ICU类型
	  ,ROWNR  --ROWNR
	  ,RAU05  --入住时间
	  ,RAU06  --转出时间
	  ,RAU07  --再次入住ICU  1=无 2=有
	  ,RAU08  --入住原因
	  ,RAU09 --重症监护室名称
      ,RAU10 --是否发生人工气道脱出 1.是 2.否
      ,RAU11 --是否非预期的重返重症医学科1.是 2.否（注：指同一住院过程中转出ICU后的重返）
      ,RAU12 --重返间隔时间 0.非重返 1. 24h内 2. 24-48h 3. ＞48h	  
	from OpenXml(@iDOM, '/Root/RAU1/Item', 8)
	WITH (  
	   BJZ01 VARCHAR(10)  --ICU类型
	  ,ROWNR INT  --ROWNR
	  ,RAU05 DATETIME  --入住时间
	  ,RAU06 DATETIME  --转出时间
	  ,RAU07 TINYINT  --再次入住ICU  1=无 2=有
	  ,RAU08 VARCHAR(64)  --入住原因
	  ,RAU09 varchar(64)  --重症监护室名称
      ,RAU10 tinyint  --是否发生人工气道脱出 1.是 2.否
      ,RAU11 tinyint  --是否非预期的重返重症医学科1.是 2.否（注：指同一住院过程中转出ICU后的重返）
      ,RAU12 tinyint  --重返间隔时间 0.非重返 1. 24h内 2. 24-48h 3. ＞48h
	)
	IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存病案ICU记录表RAU1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END
  end
  
  
  ----------------------------------------------------保存患者入住重症监护室期间器械使用情况表RAV1----------
  if charindex('RAV1', @TableList) > 0 --如果需要更新列表中存在RAV1则进行更新
  begin
	delete from RAV1 where VAA07 = @VAE01
	insert into RAV1
	(
	   VAA07  --就诊ID
	  ,BJZ01  --ICU类型
	  ,BKA01  --使用器械及导管类型
	  ,RAV05  --开始使用时间
	  ,RAV06  --结束使用时间
	  ,RAV07  --1=是 2=否
	  ,RAV08  --单位(分) 
	)
	SELECT 
	   @VAE01  --就诊ID
	  ,BJZ01  --ICU类型
	  ,BKA01  --使用器械及导管类型
	  ,RAV05  --开始使用时间
	  ,RAV06  --结束使用时间
	  ,RAV07  --1=是 2=否
	  ,RAV08  --单位(分) 
	FROM  OpenXml(@iDOM, '/Root/RAV1/Item', 8) 
	WITH (
	   BJZ01 VARCHAR(10)  --ICU类型
	  ,BKA01 VARCHAR(10)  --使用器械及导管类型
	  ,RAV05 DATETIME  --开始使用时间
	  ,RAV06 DATETIME  --结束使用时间
	  ,RAV07 TINYINT  --1=是 2=否
	  ,RAV08 INT  --单位(分) 
	)
	IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存患者入住重症监护室期间器械使用情况表RAV1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END
  end
  ----------------------------------------------------保存病案医院感染记录表RAW1----------------------------
  if charindex('RAW1', @TableList) > 0 --如果需要更新列表中存在RAW1则进行更新
  begin
    delete from RAW1 where VAA07 = @VAE01
	insert into RAW1
	(
	   VAA07  --就诊id
	  ,RAW03  --确诊日期
	  ,RAW04  --感染部位
	  ,RAW05  --医院感染名称
	)
	SELECT 
	   @VAE01  --就诊id
	  ,RAW03  --确诊日期
	  ,RAW04  --感染部位
	  ,RAW05  --医院感染名称
	FROM  OpenXml(@iDOM, '/Root/RAW1/Item', 8) 
	WITH (
	   RAW03 DATETIME  --确诊日期
	  ,RAW04 VARCHAR(32)  --感染部位
	  ,RAW05 VARCHAR(128)  --医院感染名称
	)
	IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存患者入住重症监护室期间器械使用情况表RAW1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END
  end
  
  ----------------------------------------------------保存病案标本来源记录表RAX1----------------------------
  if charindex('RAX1', @TableList) > 0 --如果需要更新列表中存在RAX1则进行更新
  begin
    delete from RAX1 where VAA07 = @VAE01
	insert into RAX1
	(
	   VAA07  --就诊id
	  ,ABB02  --标本
	  ,RAX04  --病原学代码
	  ,RAX05  --采集时间
	)
	SELECT 
	   @VAE01  --就诊id
	  ,ABB02  --标本
	  ,RAX04  --病原学代码
	  ,RAX05  --采集时间
	FROM  OpenXml(@iDOM, '/Root/RAX1/Item', 8) 
	WITH (
	   ABB02 VARCHAR(30)  --标本
	  ,RAX04 VARCHAR(20)  --病原学代码
	  ,RAX05 DATETIME  --采集时间
	)
	IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存患者入住重症监护室期间器械使用情况表RAX1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END
  end
  
  ----------------------------------------------------保存病案抗菌药物记录表RAY1----------------------------
  if charindex('RAY1', @TableList) > 0 --如果需要更新列表中存在RAY1则进行更新
  begin
    delete from RAY1 where VAA07 = @VAE01
	insert into RAY1
	(
	   VAA07  --就诊id
	  ,RAY03  --抗菌药物名称
	  ,RAY04  --给药时间
	  ,RAY05  --持续使用时间 单位：小时
	  ,RAY06  --1：是 2：否
	  ,RAY07  --值域： 1=预防, 2=治疗
	  ,RAY08  --DDD值
	)
	SELECT 
	   @VAE01  --就诊id
	  ,RAY03  --抗菌药物名称
	  ,RAY04  --给药时间
	  ,RAY05  --持续使用时间 单位：小时
	  ,RAY06  --1：是 2：否
	  ,RAY07  --值域： 1=预防, 2=治疗
	  ,RAY08  --DDD值
	FROM OpenXml(@iDOM, '/Root/RAY1/Item', 8) 
    WITH (
   	   RAY03 VARCHAR(128)  --抗菌药物名称
	  ,RAY04 DATETIME  --给药时间
	  ,RAY05 INT  --持续使用时间 单位：小时
	  ,RAY06 TINYINT  --1：是 2：否
	  ,RAY07 TINYINT  --值域： 1=预防, 2=治疗
	  ,RAY08 NUMERIC(18, 4)  --DDD值
    )
	IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存患者入住重症监护室期间器械使用情况表RAY1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END
  end
  ----------------------------------------------------保存病案肿瘤治疗表RAG1----------------------------
  if charindex('RAG1', @TableList) > 0 --如果需要更新列表中存在RAG1则进行更新
  begin
    delete from RAG1 where VAA07 = @VAE01
    insert into RAG1
	(
	   VAA07  --病案ID
	  ,RAG02  --肿瘤病理分期码
	  ,RAG03  --新发肿瘤, 0=否, 1=是
	  ,RAG04  --放疗方式, 1=根治性, 2=姑息性, 3=辅助性
	  ,RAG05  --放疗程式
	  ,RAG06  --分割方式, 多选
	  ,RAG07  --放疗装置, 多选, 1=钴, 2=直加, 3=X线, 4=后装, 5=热疗, 6=其他
	  ,RAG08  --化疗方式, 1=根治性, 2=姑息性, 3=新辅助性, 4=辅助性, 5=新药试用, 6=其他
	  ,RAG09  --化疗方法, 多选, 1=全化, 2=半化, 3=A插管, 4=胸腔注, 5=髓注, 6=其他
	  ,RAG10  --肿瘤分期类型  1.P病理  2.C临床
      ,RAG11  --T :  0/ 1/ 2/ 3/ 4 (tnm三个选项，对应不同的肿瘤会有不同的分级)
      ,RAG12  --N:  0/ 1 /2 /3
      ,RAG13  --M:  0/ 1 
	)
	SELECT 
	   @VAE01 
	  ,RAG02  --肿瘤病理分期码
	  ,RAG03  --新发肿瘤, 0=否, 1=是
	  ,RAG04  --放疗方式, 1=根治性, 2=姑息性, 3=辅助性
	  ,RAG05  --放疗程式
	  ,RAG06  --分割方式, 多选
	  ,RAG07  --放疗装置, 多选, 1=钴, 2=直加, 3=X线, 4=后装, 5=热疗, 6=其他
	  ,RAG08  --化疗方式, 1=根治性, 2=姑息性, 3=新辅助性, 4=辅助性, 5=新药试用, 6=其他
	  ,RAG09  --化疗方法, 多选, 1=全化, 2=半化, 3=A插管, 4=胸腔注, 5=髓注, 6=其他
	  ,RAG10 --肿瘤分期类型  1.P病理  2.C临床
      ,RAG11 --T :  0/ 1/ 2/ 3/ 4 (tnm三个选项，对应不同的肿瘤会有不同的分级)
      ,RAG12 --N:  0/ 1 /2 /3
      ,RAG13 --M:  0/ 1 
	from OpenXml(@iDOM, '/Root/RAG1/Item', 8)
	WITH(
	   RAG02 VARCHAR(64)  --肿瘤病理分期码
	  ,RAG03 TINYINT  --新发肿瘤, 0=否, 1=是
	  ,RAG04 TINYINT  --放疗方式, 1=根治性, 2=姑息性, 3=辅助性
	  ,RAG05 TINYINT  --放疗程式
	  ,RAG06 VARCHAR(128)  --分割方式, 多选
	  ,RAG07 VARCHAR(128)  --放疗装置, 多选, 1=钴, 2=直加, 3=X线, 4=后装, 5=热疗, 6=其他
	  ,RAG08 VARCHAR(64)  --化疗方式, 1=根治性, 2=姑息性, 3=新辅助性, 4=辅助性, 5=新药试用, 6=其他
	  ,RAG09 VARCHAR(64) 
	  ,RAG10 tinyint --肿瘤分期类型  1.P病理  2.C临床
      ,RAG11 tinyint --T :  0/ 1/ 2/ 3/ 4 (tnm三个选项，对应不同的肿瘤会有不同的分级)
      ,RAG12 tinyint --N:  0/ 1 /2 /3
      ,RAG13 tinyint --M:  0/ 1 
	)
    IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存病案肿瘤治疗表RAG1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END   
  end
  ----------------------------------------------------保存病案产科分娩婴儿记录表RAD1----------------------------
  if charindex('RAD1', @TableList) > 0 --如果需要更新列表中存在RAD1则进行更新
  begin
    SELECT IDENTITY(int, 1, 1) AS ID, * INTO #tmpRAD1 --分娩婴儿记录
    FROM OpenXML(@iDOM, '/Root/RAD1/Item',8)
    WITH (
        RAD01 int  --RAD01
      , VAA07 int --就诊ID
      , VAP01 int --RAD03
      , ROWNR int --次序
      , RAD05 varchar(50) --姓名
      , ABW01 varchar(10) --性别
      , RAD07 datetime --出生日期
      , RAD08 tinyint --畸形
      , RAD09 varchar(20) --畸形种类
      , RAD10 tinyint --胎位
      , RAD11 tinyint --膜破情况, 
      , RAD12 numeric(9,2) --早破
      , RAD13 tinyint --羊水情况
      , RAD14 numeric(9,2) --羊水量
      , RAD15 tinyint --会阴破裂程度
      , RAD16 tinyint --脐带情况1
      , RAD17 tinyint --脐带情况2
      , RAD18 tinyint --脐带情况3
      , RAD19 tinyint --胎盘情况
      , RAD20 varchar(10) --分娩结果
      , RAD21 numeric(9,2) --身长
      , RAD22 Numeric(9,2) --体重
      , RAD23 tinyint --婴儿转归
      , RAD24 tinyint --呼吸
      , RAD25 int --Apgar评分(1分钟)
      , RAD26 int --Apgar评分(5分钟)
      , RAD27 int --Apgar评分(10分钟)
      , RAD28 int --感染次数
      , RAD29 int --感染ID
      , RAD30 varchar(64) --主要医院感染名称
      , RAD31 int --抢救次数
      , RAD32 tinyint --抢救措施
      , RAD33 int --成功次数
      , RAD34 numeric(9,2) --存活时间
      , RAD35 datetime --死亡时间
      , RAD36 varchar(128) --新生儿疾病筛查
    ) 

    select @i = 0, @Count = @@ROWCOUNT
    delete a from RAD1 a where a.VAA07 = @VAE01 and not exists(select * from #tmpRAD1 b where b.RAD01 = a.RAD01) --把不存在#tmpRAD1的新生儿记录删除
        
	  select @i = 0, @Count = count(*) from #tmpRAD1
	  while @i < @Count
	  BEGIN
		select @ID01 = RAD01 from #tmpRAD1 where [ID] = @i + 1
		
			 
		if isnull(@ID01, 0)= 0 --新生儿记录不存在
		BEGIN
		  EXEC Core_NewID 'RAD1', 'RAD01', @ID01 OUT, 0
			INSERT INTO RAD1(RAD01, VAA07, VAP01, ROWNR, RAD05, ABW01, RAD07, RAD08, RAD09, RAD10, RAD11, RAD12, RAD13, RAD14, RAD15, RAD16, RAD17, 
							RAD18, RAD19, RAD20, RAD21, RAD22, RAD23, RAD24, RAD25, RAD26, RAD27, RAD28, RAD29, RAD30, RAD31, RAD32, RAD33, RAD34, RAD35, RAD36)

					select @ID01, @VAE01, VAP01, ROWNR, RAD05, ABW01, RAD07, RAD08, RAD09, RAD10, RAD11, RAD12, RAD13, RAD14, RAD15, RAD16, RAD17, 
							 RAD18, RAD19, RAD20, RAD21, RAD22, RAD23, RAD24, RAD25, RAD26, RAD27, RAD28, RAD29, RAD30, RAD31, RAD32, RAD33, RAD34, RAD35, RAD36 
					from #tmpRAD1 where [ID]=@i + 1
			IF @@ERROR >0
			BEGIN
				 if @@TRANCOUNT > 0 ROLLBACK TRAN
				 EXEC sp_xml_removedocument @iDOM
				 RAISERROR('保存病人分娩婴儿记录RAD1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
				 Return 1
			END
		END 
		ELSE BEGIN        --新生儿记录存在
			Update a set 
      		   A.RAD01=B.RAD01  --ID
			  ,A.VAA07=B.VAA07  --就诊ID
			  ,A.VAP01=B.VAP01  --产科登记婴儿ID
			  ,A.ROWNR=B.ROWNR  --次序
			  ,A.RAD05=B.RAD05  --姓名
			  ,A.ABW01=B.ABW01  --性别
			  ,A.RAD07=B.RAD07  --出生日期
			  ,A.RAD08=B.RAD08  --畸形, Oaf畸形儿, 0=否, 1=是
			  ,A.RAD09=B.RAD09  --畸形种类
			  ,A.RAD10=B.RAD10  --胎位
			  ,A.RAD11=B.RAD11  --膜破情况, 1=自然, 2=人工, 3=不明
			  ,A.RAD12=B.RAD12  --早破, 单位： 小时
			  ,A.RAD13=B.RAD13  --羊水情况, 1=清, 2=混浊, 3=Ⅰ度混浊, 4=Ⅱ度混浊, 5=Ⅲ度混浊
			  ,A.RAD14=B.RAD14  --羊水量, 单位： CC(立方厘米)
			  ,A.RAD15=B.RAD15  --会阴破裂程度, 1=Ⅰ, 2=Ⅱ, 3=Ⅲ
			  ,A.RAD16=B.RAD16  --脐带情况1, 1=正常, 2=绕颈, 3=脱垂, 4=低置, 5=过长, 6=过短, 7=缠绕, 8=绞窄
			  ,A.RAD17=B.RAD17  --脐带情况2
			  ,A.RAD18=B.RAD18  --脐带情况3
			  ,A.RAD19=B.RAD19  --胎盘情况, 1=正常, 2=钙化, 3=梗塞, 4=其他
			  ,A.RAD20=B.RAD20  --分娩结果, Labor(美), 1=活产, 2=死产, 3=死胎
			  ,A.RAD21=B.RAD21  --身长
			  ,A.RAD22=B.RAD22  --体重
			  ,A.RAD23=B.RAD23  --婴儿转归, 1=死亡, 2=转科, 3=出院
			  ,A.RAD24=B.RAD24  --呼吸, 1=自然, 2=Ⅰ度窒息, 3=Ⅱ度窒息
			  ,A.RAD25=B.RAD25  --Apgar评分(1分钟)
			  ,A.RAD26=B.RAD26  --Apgar评分(5分钟)
			  ,A.RAD27=B.RAD27  --Apgar评分(10分钟)
			  ,A.RAD28=B.RAD28  --感染次数
			  ,A.RAD29=B.RAD29  --感染ID
			  ,A.RAD30=B.RAD30  --主要医院感染名称
			  ,A.RAD31=B.RAD31  --抢救次数
			  ,A.RAD32=B.RAD32  --抢救措施, 1=吸羊水, 2=插管, 3=充氧, 4=用药
			  ,A.RAD33=B.RAD33  --成功次数
			  ,A.RAD34=B.RAD34  --存活时间, 单位： 小时
			  ,A.RAD35=B.RAD35  --死亡时间
			  ,A.RAD36=B.RAD36  --新生儿疾病筛查 ： CH□ PKU□  CAH□ G6PD□  听力□ 
			from RAD1 a, #tmpRAD1 b 
			where a.RAD01=@ID01 and b.RAD01=@ID01 
		END
		set @i = @i + 1
	  END
    ----------------------------------------------------保存病案新生儿诊断表--------------------------------------
	  Declare
		@RAD01 int,
		@RAD22 Numeric(9,2) --体重 
	  if charindex('RAE1', @TableList) > 0 --如果需要更新列表中存在RAE1则进行更新
	  begin
		SELECT IDENTITY(int, 1, 1) AS ID, * INTO #tmpRAE1 --新生儿诊断记录
		FROM OpenXML(@iDOM, '/Root/RAE1/Item',8)
		WITH (
		  RAE01 INT  --ID
		  ,RAD01 INT  --婴儿ID, MR_LabourInfants.ID
		  ,BAK01 INT  --诊断ID
		  ,ABX01 VARCHAR(1)  --情况(转归), ABX1.ABX01
		  ,RAE05 tinyint --诊断类型 1 缺陷诊断
		  ,BAK02 varchar(32) --诊断编码
		  ,BAK05 varchar(128) --诊断名称（描述）
		  ,VAA07 int --病人ID 
		  ,RAD22 Numeric(9,2) --体重
		  ,ROWNR int --次序
		) 

		select @i = 0, @Count = @@ROWCOUNT
		delete a from RAE1 a where a.VAA07 = @VAE01 and not exists(select * from #tmpRAE1 b where b.RAE01 = a.RAE01) --把不存在#tmpRAE1的新生儿诊断记录删除
	        
		  select @i = 0, @Count = count(*) from #tmpRAE1
		  while @i < @Count
		  BEGIN
			select @ID01 = RAE01 from #tmpRAE1 where [ID] = @i + 1
			
				 
			if isnull(@ID01, 0)= 0 --新生儿诊断记录不存在
			BEGIN
			  select @RAD22 = RAD22 from #tmpRAE1 where [ID] = @i + 1
			  select @RAD01 = RAD01 from #tmpRAD1 where RAD22 = @RAD22
			  if ISNULL(@RAD01, 0) > 0
			  begin
				EXEC Core_NewID 'RAE1', 'RAE01', @ID01 OUT, 0
				INSERT INTO RAD1(RAE01, VAA07, RAD01, BAK01, ABX01, RAE05, BAK02, BAK05)

						select @ID01, @VAE01, @RAD01, BAK01, ABX01, RAE05, BAK02, BAK05
						from #tmpRAD1 where [ID]=@i + 1
				IF @@ERROR >0
				BEGIN
					 if @@TRANCOUNT > 0 ROLLBACK TRAN
					 EXEC sp_xml_removedocument @iDOM
					 RAISERROR('保存新生儿诊断记录RAE1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
					 Return 1
				END
			  end
			END 
			ELSE BEGIN        --新生儿诊断记录存在
				Update a set 
	      		      
					  A.RAD01=B.RAD01  --婴儿ID, MR_LabourInfants.ID
					  ,A.BAK01=B.BAK01  --诊断ID
					  ,A.ABX01=B.ABX01  --情况(转归), ABX1.ABX01
					  ,A.RAE05=B.RAE05 --诊断分类 
					  ,A.BAK05=B.BAK05 --诊断名称
					  ,A.BAK02=B.BAK02 --诊断编码
					  ,A.VAA07=B.VAA07 --病人ID
				from RAE1 a, #tmpRAE1 b 
				where a.RAE01=@ID01 and b.RAE01=@ID01 
			END
			set @i = @i + 1
		  END
		DROP TABLE #tmpRAE1  
	  end
	DROP TABLE #tmpRAD1 
  end       
  
  
  

  
  ----------------------------------------------------保存病案产科分娩信息记录表RAC1----------------------------
  if charindex('RAC1', @TableList) > 0 --如果需要更新列表中存在RAC1则进行更新
  begin
    delete from RAC1 where VAA07 = @VAE01
    
    insert into RAC1
	(
	  VAA07
      ,RAC01
      ,RAC02
	  ,RAC03
	  ,RAC04
	  ,RAC05
	  ,RAC06
	  ,RAC07
	  ,RAC08
	  ,RAC09
	  ,RAC10
	  ,RAC11
	  ,RAC13
	  ,RAC14
	  ,RAC15
      ,RAC16
      ,RAC17
      ,RAC18
	)
    
    SELECT 
      @VAE01
      ,RAC01
      ,RAC02
	  ,RAC03
	  ,RAC04
	  ,RAC05
	  ,RAC06
	  ,RAC07
	  ,RAC08
	  ,RAC09
	  ,RAC10
	  ,RAC11
	  ,RAC13
	  ,RAC14
	  ,RAC15
      ,RAC16
      ,RAC17
      ,RAC18
    FROM OpenXML(@iDOM, '/Root/RAC1/Item', 8)
    WITH (
       
	  RAC01 DATETIME  --分娩时间, 日期/时间
	  ,RAC02 INT  --产检次数
	  ,RAC03 INT  --孕次
	  ,RAC04 INT  --胎次, ?产次Parity
	  ,RAC05 INT  --胎数
	  ,RAC06 INT  --孕周
	  ,RAC07 VARCHAR(8)  --第一产程时间 格式 HH：NN：SS
	  ,RAC08 VARCHAR(8)  --第二产程时间
	  ,RAC09 VARCHAR(8)  --第三产程时间
	  ,RAC10 VARCHAR(8)  --总产程时间
	  ,RAC11 NUMERIC(12, 2)  --产后出血量
	  ,RAC13 TINYINT  --产后出血  0=无 1＝是
	  ,RAC14 TINYINT  --妊娠梅毒筛查  0=无 1＝是
	  ,RAC15 tinyint  --新生儿产伤 1有 2无
      ,RAC16 tinyint  --阴道分娩产妇产伤 1有 2无
      ,RAC17 tinyint --妊娠出血 0无 1有
      ,RAC18 int --妊娠出血量ml
    ) 
   
    IF @@ERROR >0
    BEGIN
	  if @@TRANCOUNT > 0 ROLLBACK TRAN
		 EXEC sp_xml_removedocument @iDOM
		 RAISERROR('保存分娩信息表RAC1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		 Return 1
    END   
  
   
  end
  
  
  ----------------------------------------------------保存病案放疗记录表RAF1----------------------------
  if charindex('RAF1', @TableList) > 0 --如果需要更新列表中存在RAF1则进行更新
  begin
       SELECT IDENTITY(int,1,1) AS ID,* INTO #tmpRAF1  --肿瘤放射治疗项目过程表
	   FROM OpenXml(@iDOM,'/Root/RAF1/Item',8) 
	   WITH (
			  RAF01 int  --RAF01
			, VAA07 int --就诊ID
			, RAF03 varchar(64) --放疗装置, 暂时不用
			, BGL01 int --放疗项目
			, RAF05 varchar(128) --名称
			, RAF06 numeric(18,2) --剂量
			, RAF07 int --次数
			, RAF08 int --天数
			, RAF09 datetime --开始日期
			, RAF10 datetime --结束日期   
	   ) 
	  delete from RAF1 where VAA07 = @VAE01 
	  select @i = 0, @Count = count(*) from #tmpRAF1
	  while @i < @Count
	  BEGIN	
		EXEC Core_NewID 'RAF1', 'RAF01', @ID01 OUT, 0
		INSERT INTO RAF1 (RAF01, VAA07, RAF03, BGL01, RAF05, RAF06, RAF07, RAF08, RAF09, RAF10)
		select @ID01, @VAE01, RAF03, BGL01, RAF05, RAF06, RAF07, RAF08, RAF09, RAF10  
		from #tmpRAF1 
		where [ID]=@i + 1
	    
		IF @@ERROR > 0
		BEGIN
		  if @@TRANCOUNT > 0 ROLLBACK TRAN
		  EXEC sp_xml_removedocument @iDOM
		  RAISERROR('保存病案放疗记录表RAF1时错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
		  Return 1
		END	
		set @i = @i + 1
	  End
	  DROP TABLE #tmpRAF1
  end
  ----------------------------------------------------保存病案化疗记录表RAH1---------------------------- 
  if charindex('RAH1', @TableList) > 0 --如果需要更新列表中存在RAH1则进行更新
  begin
    SELECT IDENTITY(int,1,1) AS ID,* INTO #tmpRAH1  --肿瘤化学治疗过程表
    FROM OpenXml(@iDOM,'/Root/RAH1/Item',8) 
    WITH (
        RAH01 int  --RAH01
        , VAA07 int --就诊ID
        , RAH03 varchar(64) --化疗方案, 暂时不用
        , RAH04 datetime --开始日期
        , RAH05 datetime --结束日期
        , BBY01 int      --药物ID
        , RAH07 varchar(128) --药物名称
        , RAH08 numeric(18,2) --药物剂量
        , RAH09 varchar(50) --疗程
        , RAH10 tinyint --疗效,
        , RAH11 varchar(24) --剂量单位
    )   
  
    delete from RAH1 where VAA07 = @VAE01 
    select @i = 0, @Count = count(*) from #tmpRAH1
    while @i < @Count
    BEGIN	
	  EXEC Core_NewID 'RAH1', 'RAH01', @ID01 OUT, 0
	  INSERT INTO RAH1 (RAH01, VAA07, RAH03, RAH04, RAH05, BBY01, RAH07, RAH08, RAH09, RAH10, RAH11)
      select @ID01, @VAE01, RAH03, RAH04, RAH05, BBY01, RAH07, RAH08, RAH09, RAH10, RAH11 from #tmpRAH1 
      where [ID]=@i + 1
    
      IF @@ERROR >0
      BEGIN
        if @@TRANCOUNT > 0 ROLLBACK TRAN
        EXEC sp_xml_removedocument @iDOM
        RAISERROR('保存病案化疗记录表RAH1时发生错误，错误号为: %d.', 16, 1, @@ERROR)  WITH NOWAIT
        Return 1
      END
	
	  set @i = @i + 1
    END   
    Drop TABLE #tmpRAH1
  end
  
	INSERT INTO RESTIN1(URIID,USRCODE,TABID) 
	VALUES (@lURIID,@EmpCode+@lMac,0)
  EXEC sp_xml_removedocument @iDOM
  COMMIT TRAN
  DROP TABLE #tmpPatInfo
  DROP TABLE #tmpRAB1
  DROP TABLE #tmpRAA1
  DROP TABLE #tmpVCT1
  DROP TABLE #tmpVAO2
