IEnumerable<dynamic>COMPLETE_MARK=connection.Query("select COMPLETE_MARK FROM [SV_MEDIC_STATISTICS].[dbo].[MEDIC_SEARCH_RECORD] where COMPLETE_MARK =22 and id="+id);
varresult=false;//默认状态不成功
if(COMPLETE_MARK.Count()>0)
thrownewDomainException("该项目已经执行完毕,不能取消!!!");
else
returnresult=connection.Execute("update [SV_MEDIC_STATISTICS].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 31 where and COMPLETE_MARK != 22 id= "+id)>0?true:false;
IEnumerable<dynamic>COMPLETE_MARK=connection.Query("select COMPLETE_MARK FROM [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] where COMPLETE_MARK =22 and id="+id);
if(COMPLETE_MARK.Count()>0)
thrownewDomainException("该项目已经执行完毕,不能取消!!!");
else
LOG("停止中","",id,"查询平台","");
returnconnection.Execute("update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 31 where and COMPLETE_MARK != 22 id= "+id)>0?true:false;
FROM [SV_QueryPlatform].[dbo].[MEDIC_PERSON_INFORMATION_存储过程表] WHERE TYPE=1 AND INDEXS IN ({id}) AND YEAR(REG_TIME)>=2014
) S GROUP BY N
UNION ALL
SELECT '2013'N,COUNT(*)RS FROM (
SELECT DISTINCT HOS_ID,MASTER_INDEX
FROM [SV_QueryPlatform].[dbo].[MEDIC_PERSON_INFORMATION_存储过程表] WHERE TYPE=1 AND INDEXS IN({id})
AND YEAR(REG_TIME)<=2013 ) S
)S PIVOT (SUM(RS) FOR N IN ([2013],[2014],[2015],[2016],[2017],[2018],[2019],[2020],[2021],[总]))V";
ShowQuery2=@"SELECT '医院区域'classification, PROVINCE hospital,COUNT(DISTINCT case when CODE is not null then code else HOS_ID end)hospitalsSUM,COUNT(*)patientSUM FROM (
varShowQuery2=$@"SELECT '医院区域'classification, PROVINCE hospital,COUNT(DISTINCT case when CODE is not null then code else HOS_ID end)hospitalsSUM,COUNT(*)patientSUM FROM (
if(connection.Query("select *from [SV_QueryPlatform].[dbo].[FlowReservoirStatus] where tableName like '%"+PROJECT_NAME+"%'").Count()>0)
{
thrownewDomainException(PROJECT_NAME+"流水库表已存在!");
}
else
{
intisfilter=1;
if(connection.Query("select *from [SV_QueryPlatform].[dbo].[FlowReservoirStatus] where tableName like '%"+PROJECT_NAME+"%'").Count()>0)
if(sql==""||sql==null)
{
thrownewDomainException(PROJECT_NAME+"流水库表已存在!");
isfilter=0;
sql=$"SELECT distinct MASTER_INDEX,hos_id FROM[192.168.18.156].[SV_MEDIC_STATISTICS].[dbo].[MEDIC_PERSON_INFORMATION] WHERE indexs = {id} and TYPE = 1";
}
else
{
if(sql==""||sql==null)
{
isfilter=0;
sql=$"SELECT distinct MASTER_INDEX,hos_id FROM[192.168.18.156].[SV_MEDIC_STATISTICS].[dbo].[MEDIC_PERSON_INFORMATION] WHERE indexs = {id} and TYPE = 1";
configConnection.Execute(@$"update [SV_QueryPlatform].[dbo].[解析任务] set [status]='{status}',[updatedate]=getdate(),log='{log}' where hos_id={hos_id} and id={id}");
configConnection.Execute(@$"update [SV_QueryPlatform].[dbo].[解析任务] set [status]='失败',[updatedate]=getdate(),log=[status]+{sql} where hos_id={hos_id} and id={id}");
SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[OUT_REG_INFO] A JOIN [{hos.ExecDatabase}].[dbo].[PUB_PATIENT] b ON A.PERSON_CODE=b.PERSON_CODE WHERE A.PERSON_ID!=b.PERSON_ID OR A.PERSON_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[OUT_DIAG] A JOIN [{hos.ExecDatabase}].[dbo].OUT_REG_INFO b ON A.REG_CODE=b.REG_CODE WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[OUT_FEE]A JOIN [{hos.ExecDatabase}].[dbo].OUT_REG_INFO b ON A.REG_CODE=b.REG_CODE WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[OUT_PRES]A JOIN [{hos.ExecDatabase}].[dbo].OUT_REG_INFO b ON A.REG_code=b.reg_code WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[inpat_REG_INFO] A JOIN [{hos.ExecDatabase}].[dbo].[PUB_PATIENT] b ON b.PERSON_CODE=a.PERSON_CODE WHERE A.PERSON_ID!=b.PERSON_ID OR A.PERSON_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[inpat_diag] A JOIN [{hos.ExecDatabase}].[dbo].[inpat_reg_info] b ON b.REG_CODE=a.REG_CODE WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[inpat_order] A JOIN [{hos.ExecDatabase}].[dbo].[inpat_reg_info] b ON b.REG_CODE=a.REG_CODE WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[inpat_fee] A JOIN [{hos.ExecDatabase}].[dbo].[inpat_reg_info] b ON b.REG_CODE=a.REG_CODE WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[ops_info] A JOIN [{hos.ExecDatabase}].[dbo].[inpat_reg_info] b ON b.REG_CODE=a.REG_CODE WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].EXEC_REPORT A JOIN [{hos.ExecDatabase}].[dbo].OUT_REG_INFO B ON a.REG_CODE=B.REG_CODE and REG_Source=1 WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[EXEC_REPORT] A JOIN [{hos.ExecDatabase}].[dbo].INPAT_REG_INFO B ON a.REG_CODE=B.REG_CODE and REG_Source=2 WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[ASSAY_REPORT] A JOIN [{hos.ExecDatabase}].[dbo].[OUT_REG_INFO] B ON a.REG_CODE=B.REG_CODE and REG_Source=1 WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[ASSAY_REPORT] A JOIN [{hos.ExecDatabase}].[dbo].[INPAT_REG_INFO] B ON a.REG_CODE=B.REG_CODE and REG_Source=2 WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[NIS_RECORD] A JOIN [{hos.ExecDatabase}].[dbo].[OUT_REG_INFO] B ON a.REG_CODE=B.REG_CODE and REG_Source=1 WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)+(SELECT COUNT(1) FROM [{hos.ExecDatabase}].[dbo].[NIS_RECORD] A JOIN [{hos.ExecDatabase}].[dbo].[INPAT_REG_INFO] B ON a.REG_CODE=B.REG_CODE and REG_Source=2 WHERE A.REG_ID!=b.REG_ID OR A.REG_ID IS NULL
)id";
updatezt(id,hos_id,"检查id是否更新",sql);
//判断id是否修
//判断MASTER_INDEX是否修改
sql=$@"SELECT COUNT(1)id FROM [{hos.ExecDatabase}].[dbo].PUB_PATIENT
sql=@$" SELECT CASE WHEN MAX(MASTER_INDEX) IS NULL THEN 0 ELSE MAX(MASTER_INDEX) END id FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT where MASTER_INDEX is not null; ";
insert into [{hos.ExecDatabase}].[DBO].PATIENT(PERSON_ID,ID_CARD,CARD_ID,NEWPERSON_ID)
SELECT TAB.PERSON_ID, CAST(ID_CARD AS NVARCHAR(100))ID_CARD, CARD_ID ,NULL NEWPERSON_ID FROM
(SELECT PERSON_ID,ID_CARD FROM [{hos.ExecDatabase}].[DBO].PUB_PATIENT WHERE [MASTER_INDEX] IS NULL ) TAB
LEFT JOIN (SELECT PERSON_ID, CARD_ID FROM (SELECT DJ.PERSON_ID, CARD_ID FROM [{hos.ExecDatabase}].[DBO].[OUT_REG_INFO] DJ GROUP BY DJ.PERSON_ID, CARD_ID
UNION
SELECT DJ.PERSON_ID, CARD_ID FROM [{hos.ExecDatabase}].[DBO].[INPAT_REG_INFO] DJ GROUP BY DJ.PERSON_ID,CARD_ID) TA ) TAB1
ON TAB.PERSON_ID=TAB1.PERSON_ID GROUP BY TAB.PERSON_ID,ID_CARD,CARD_ID;";
sql=$@"IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'tablea')
DROP TABLE [{hos.ExecDatabase}].dbo.tablea
UPDATE [{hos.ExecDatabase}].[dbo].PATIENT SET ID_CARD = NULL WHERE ID_CARD NOT LIKE '[0-9]%' OR LEN(ID_CARD)<=15 OR ID_CARD LIKE '%8888%' OR ID_CARD LIKE '%0000%'
UPDATE [{hos.ExecDatabase}].[dbo].PATIENT SET CARD_ID = NULL WHERE CARD_ID NOT LIKE '[0-9]%' OR LEN(CARD_ID)<6
create table [{hos.ExecDatabase}].[dbo].tablea (id int primary key identity({COUNT+mark+1},1),[code] nvarchar(200))
insert into [{hos.ExecDatabase}].[dbo].tablea(code)
select distinct person_id from [{hos.ExecDatabase}].[dbo].[PATIENT] WHERE ID_CARD IS NULL AND CARD_ID IS NULL
update [{hos.ExecDatabase}].[dbo].[PATIENT] set NEWPERSON_ID = b.id from [{hos.ExecDatabase}].[dbo].tablea b where [{hos.ExecDatabase}].[dbo].[PATIENT].PERSON_ID = b.code
insert into [{hos.ExecDatabase}].[dbo].PATIENT_NOTNULL(PERSON_ID,CODE,NEWPERSON_ID)
select PERSON_ID,ID_CARD CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[dbo].PATIENT WHERE NEWPERSON_ID IS NULL
UNION ALL
select PERSON_ID,CARD_ID CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[dbo].PATIENT WHERE NEWPERSON_ID IS NULL
sql=$@"IF EXISTS(SELECT * FROM [{hos.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'table2')
DROP TABLE [{hos.ExecDatabase}].dbo.table2
create table [{hos.ExecDatabase}].[DBO].table2 (id int primary key identity({mark+1},1),[code] nvarchar(200))
insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE1(PERSON_ID,CODE,NEWPERSON_ID)select PERSON_ID,CODE, NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL
insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 (PERSON_ID,CODE,NEWPERSON_ID) select A.PERSON_ID,B.CODE,B.PERSON_ID NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 A JOIN [{hos.ExecDatabase}].[DBO].PATIENT_NOTNULL B ON A.CODE = B.CODE GROUP BY A.PERSON_ID,B.PERSON_ID,b.CODE
insert into [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 (PERSON_ID,CODE,NEWPERSON_ID) select A.PERSON_ID,B.CODE,B.PERSON_ID NEWPERSON_ID from [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A JOIN [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 B ON A.NEWPERSON_ID = B.PERSON_ID GROUP BY A.PERSON_ID,B.PERSON_ID,b.CODE
SELECT @COUNT=COUNT(1) FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A LEFT JOIN [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 B ON A.PERSON_ID = B.PERSON_ID and A.NEWPERSON_ID = B.NEWPERSON_ID AND A.CODE = B.CODE WHERE B.PERSON_ID IS NULL
INSERT INTO [{hos.ExecDatabase}].[DBO].PATIENT_STORE1 (PERSON_ID,CODE,NEWPERSON_ID) SELECT PERSON_ID,CODE,NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 GROUP BY PERSON_ID,CODE,NEWPERSON_ID
END
insert into [{hos.ExecDatabase}].[DBO].table2(code) SELECT DISTINCT A.NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 A ORDER BY NEWPERSON_ID
UPDATE [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 SET NEWPERSON_ID = b.id from [{hos.ExecDatabase}].[DBO].table2 b where [{hos.ExecDatabase}].[DBO].[PATIENT_STORE2].NEWPERSON_ID = b.code
update [{hos.ExecDatabase}].[DBO].[PATIENT] set NEWPERSON_ID = b.NEWPERSON_ID from (SELECT PERSON_ID,MIN(NEWPERSON_ID) NEWPERSON_ID FROM [{hos.ExecDatabase}].[DBO].PATIENT_STORE2 GROUP BY PERSON_ID) b where [{hos.ExecDatabase}].[DBO].[PATIENT].PERSON_ID = b.PERSON_ID
sql=$@"UPDATE [{hos.ExecDatabase}].dbo.PATIENT SET NEWPERSON_ID = B.MASTER_INDEX FROM (SELECT A.NEWPERSON_ID,B.MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.PATIENT A JOIN [{hos.ExecDatabase}].dbo.PUB_PATIENT B ON A.ID_CARD = B.ID_CARD WHERE B.MASTER_INDEX IS NOT NULL AND B.ID_CARD LIKE '[0-9]%' AND LEN(B.ID_CARD)>=15 AND B.ID_CARD NOT LIKE '%8888%' AND B.ID_CARD NOT LIKE '%0000%' GROUP BY A.NEWPERSON_ID,B.MASTER_INDEX) B WHERE PATIENT.NEWPERSON_ID = B.NEWPERSON_ID
UPDATE [{hos.ExecDatabase}].dbo.PATIENT SET NEWPERSON_ID = B.MASTER_INDEX FROM (SELECT A.NEWPERSON_ID,B.MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.PATIENT A JOIN ( SELECT B.CARD_ID,MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.[PUB_PATIENT] A LEFT JOIN [{hos.ExecDatabase}].dbo.OUT_REG_INFO B ON A.PERSON_CODE = B.PERSON_CODE WHERE A.MASTER_INDEX IS NOT NULL AND A.ID_CARD LIKE '[0-9]%' AND LEN(A.ID_CARD)>=15 AND A.ID_CARD NOT LIKE '%8888%' AND A.ID_CARD NOT LIKE '%0000%' AND B.CARD_ID LIKE '[0-9]%' AND LEN(B.CARD_ID)>=6 AND B.CARD_ID IS NOT NULL UNION SELECT B.CARD_ID,MASTER_INDEX FROM [{hos.ExecDatabase}].dbo.[PUB_PATIENT] A LEFT JOIN [{hos.ExecDatabase}].dbo.INPAT_REG_INFO B ON A.PERSON_CODE = B.PERSON_CODE WHERE A.MASTER_INDEX IS NOT NULL AND A.ID_CARD LIKE '[0-9]%' AND LEN(A.ID_CARD)>=15 AND A.ID_CARD NOT LIKE '%8888%' AND A.ID_CARD NOT LIKE '%0000%' AND B.CARD_ID LIKE '[0-9]%' AND LEN(B.CARD_ID)>=6 AND B.CARD_ID IS NOT NULL ) B ON A.CARD_ID = B.CARD_ID GROUP BY A.NEWPERSON_ID,B.MASTER_INDEX ) B WHERE PATIENT.NEWPERSON_ID = B.NEWPERSON_ID";
sql=$@"UPDATE [{hos.ExecDatabase}].dbo.PUB_PATIENT SET MASTER_INDEX=NEWPERSON_ID FROM (SELECT [PERSON_ID],NEWPERSON_ID FROM [{hos.ExecDatabase}].dbo.PATIENT GROUP BY [PERSON_ID], NEWPERSON_ID) TAB,[{hos.ExecDatabase}].dbo.PUB_PATIENT B WHERE B.PERSON_ID=TAB.PERSON_ID;
sql=@$" insert into da_disease_icd(disease_id,icd_id) select tab.disease_id,tab.icd_id from ( select id as disease_id,2450 as icd_id from dbo.da_disease where 1=1 and ( hospital_disease like '%高血压心脏病伴心力衰竭%' and hospital_disease not like '%?%' and hospital_disease not like '%待排%' ) ) tab left join da_disease_icd t1 on t1.disease_id = tab.disease_id and t1.icd_id = tab.icd_id where t1.id is null
sql=$@"update SV_DATA_CONFIG.dbo.da_disease set i_department=t2.DEPARTMENT,i_class_disease=t2.DIAGNOSIS,i_icd=t2.ICD,i_disease=t2.DISEASE,is_exec=2,exec_date=getdate(),
REMARK = 'sql脚本执行' FROM SV_DATA_CONFIG.dbo.DA_Disease T1 JOIN (select distinct DEPARTMENT,ICD,diagnosis,disease from SV_DATA_CONFIG.dbo.DIC_ICD where state = 1 ) T2 ON
T1.filter_disease like '%'+t2.disease+'%' and t1.hospital_disease like '%'+t2.disease+'%' where t1.is_exec is null ;
INSERT INTO SV_DATA_CONFIG.[dbo].[DA_DISEASE_ICD] (DISEASE_ID,ICD_ID)
SELECT A.ID,B.ID FROM SV_DATA_CONFIG.DBO.DA_Disease A
JOIN SV_DATA_CONFIG.DBO.DIC_ICD B ON A.I_ICD = B.ICD
WHERE A.IS_EXEC = 2 AND A.I_ICD IS NOT NULL;
update SV_DATA_CONFIG.DBO.DA_Disease set is_exec = 1 where IS_EXEC = 2;
update SV_DATA_CONFIG.dbo.DA_Disease set IS_EXEC = 0 where IS_EXEC is null ;";
List<SYS_Hospital>hos=configConnection.Query<SYS_Hospital>(@$"SELECT ExecOpenLink ,ExecDatabase FROM [192.168.18.156].[DB_SV_Data_Config].[dbo].[SYS_Hospital] WHERE ExecOpenLink <>'' AND ExecOpenLink IS NOT NULL AND ExecDatabase <>'' AND ExecDatabase IS NOT NULL ").ToList();
服务器fwq=new服务器();
varmsConnectionString="";
varcountsql=0;
foreach(variteminhos)
{
//统计执行的多少家医院
countsql++;
varfwqsql=$"SELECT [服务器ip],[数据库账号],[数据库密码] FROM [SV_QueryPlatform].[dbo].[服务器] where [服务器ip] ='{item.ExecOpenLink}'";
if(Countnum($@"SELECT count(*) FROM {item.ExecDatabase}.dbo.SYSOBJECTS WHERE NAME = 'DIC_DIAG_SUMMARY'",conn)>0)
{
if(Countnum($@"SELECT count(*) a FROM {item.ExecDatabase}.[dbo].[DIC_DIAG_SUMMARY] where {icd_or_diseaseCondition} ",conn)>0)
{
sql2=$@" IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,1 REG_SOURCE,A.REG_TIME, {Indexs}Indexs,a.org_Code hos_id,C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs} FROM
{item.ExecDatabase}.[DBO].OUT_REG_INFO A ,
(SELECT DISTINCT REG_ID FROM
{item.ExecDatabase}.[DBO].OUT_DIAG WHERE {icd_or_diseaseCondition}) B,
{item.ExecDatabase}.[DBO].PUB_PATIENT C WHERE A.REG_ID=B.REG_ID AND A.PERSON_ID=C.PERSON_ID
UNION ALL
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,2 REG_SOURCE,A.INHOS_TIME,{Indexs},a.org_Code hos_id,C.BIRTHDAY,C.SEX,1 TYPE,A.OUT_DEPT_NAME FROM
{item.ExecDatabase}.[DBO].INPAT_REG_INFO A , (SELECT DISTINCT REG_ID FROM {item.ExecDatabase}.[DBO].INPAT_DIAG WHERE {icd_or_diseaseCondition}) B,
{item.ExecDatabase}.[DBO].PUB_PATIENT C
WHERE A.REG_ID=B.REG_ID AND A.PERSON_ID=C.PERSON_ID";
conn.Execute(sql2,commandTimeout:60*60*5);
sql2=$@" insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_ID=B.PERSON_ID AND A.MASTER_INDEX=C.MASTER_INDEX
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_ID=B.PERSON_ID AND A.MASTER_INDEX=C.MASTER_INDEX ;";
conn.Execute(sql2,commandTimeout:60*60*5);
sql2=$@"INSERT INTO [SV_QueryPlatform_].[dbo].[MEDIC_PERSON_INFORMATION_{Indexs}]([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
configConnection.Execute(@$"update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate(),log='{sql2.Replace("'","''")}' where COMPLETE_MARK != 22 and id= "+Indexs);
}
}
}
if(countsql==hos.Count)
{
configConnection.Execute("update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 22,END_TIME=getdate() where COMPLETE_MARK != 22 and id= "+Indexs);
}
else
{
configConnection.Execute("update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate() where COMPLETE_MARK != 22 and id= "+Indexs);
List<SYS_Hospital>hos=configConnection.Query<SYS_Hospital>(@$"SELECT ExecOpenLink ,ExecDatabase FROM [192.168.18.156].[DB_SV_Data_Config].[dbo].[SYS_Hospital] WHERE ExecOpenLink <>'' AND ExecOpenLink IS NOT NULL AND ExecDatabase <>'' AND ExecDatabase IS NOT NULL ").ToList();
服务器fwq=new服务器();
varmsConnectionString="";
varcountsql=0;
varsql2="";
foreach(variteminhos)
{
//统计执行的多少家医院
countsql++;
varfwqsql=$"SELECT [服务器ip],[数据库账号],[数据库密码] FROM [SV_QueryPlatform].[dbo].[服务器] where[服务器ip] ='{item.ExecOpenLink}'";
'{drug}'MEDIC_NAME,medic_area medic_area,{Indexs} INDEXS from {item.ExecDatabase}.[dbo].[DIC_FEE_SUMMARY]
WHERE [ITEM_NAME] like '%{drug}%' GROUP BY ITEM_NAME,MEDIC_AREA ";
conn.Execute(sql2,commandTimeout:60*60*5);
}
if(Countnum($@"SELECT count(*) FROM [SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}]
where hos_id=cast(right('{item.ExecDatabase}',3)as int) and indexs={Indexs}",configConnection)>0)
{
varsql3=$@"IF EXISTS(SELECT * FROM [{item.ExecDatabase}].dbo.SYSOBJECTS WHERE NAME = 'MEDIC_PERSON_INFORMATION_{Indexs}')
drop table [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs};
SELECT C.MASTER_INDEX MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,'1'REG_SOURCE,A.REG_TIME,B.ID AREA_ID, {Indexs} INDEXS,cast(right('{item.ExecDatabase}',3)as int) HOS_ID,C.BIRTHDAY,C.SEX,1 TYPE,A.DEPT_NAME into [{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs} FROM
{item.ExecDatabase}.[DBO].OUT_REG_INFO A, (SELECT DISTINCT REG_ID,D.ID FROM {item.ExecDatabase}.[DBO].OUT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS={Indexs} AND (MEDIC_AREA IS NULL OR MEDIC_AREA ='')) D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME
UNION ALL
SELECT DISTINCT REG_ID,D.ID FROM {item.ExecDatabase}.[DBO].OUT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS= {Indexs} AND MEDIC_AREA IS NOT NULL AND MEDIC_AREA!='') D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME AND E.MEDIC_AREA=D.MEDIC_AREA ) B,{item.ExecDatabase}.[DBO].PUB_PATIENT C
WHERE A.REG_ID=B.REG_ID AND A.PERSON_ID=C.PERSON_ID
UNION ALL
SELECT C.MASTER_INDEX,A.PERSON_CODE,A.PERSON_ID,A.REG_CODE,A.REG_ID,2 REG_SOURCE,A.INHOS_TIME,B.ID,{Indexs} ,cast(right('{item.ExecDatabase}',3)as int),C.BIRTHDAY,C.SEX,1,A.OUT_DEPT_NAME FROM
{item.ExecDatabase}.[DBO].INPAT_REG_INFO A,
(SELECT DISTINCT REG_ID,D.ID FROM {item.ExecDatabase}.[DBO].INPAT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS= {Indexs} AND (MEDIC_AREA IS NULL OR MEDIC_AREA ='')) D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME
UNION ALL
SELECT DISTINCT REG_ID,D.ID FROM [DBO].INPAT_FEE E,
(SELECT * FROM [192.168.18.181].[SV_QueryPlatform_].[dbo].[MEDIC_AREA_{Indexs}] WHERE INDEXS= {Indexs} AND MEDIC_AREA IS NOT NULL AND MEDIC_AREA!='') D
WHERE HOS_ID = cast(right('{item.ExecDatabase}',3)as int) AND E.ITEM_NAME=D.ITEM_NAME AND E.MEDIC_AREA=D.MEDIC_AREA) B, [DBO].PUB_PATIENT C WHERE A.REG_ID=B.REG_ID AND A.PERSON_ID=C.PERSON_ID";
sql2=$@"insert into [SV_QueryPlatform_].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
SELECT [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME], AREA_ID,[INDEXS],[TYPE],[DEPT_NAME] From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}";
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].OUT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS= {Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_ID=B.PERSON_ID AND A.MASTER_INDEX=C.MASTER_INDEX
FROM {item.ExecDatabase}.[DBO].PUB_PATIENT A, {item.ExecDatabase}.[DBO].INPAT_REG_INFO B,
(SELECT DISTINCT MASTER_INDEX FROM {item.ExecDatabase}.[DBO].[MEDIC_PERSON_INFORMATION_{Indexs}] WHERE INDEXS={Indexs} AND HOS_ID = cast(right('{item.ExecDatabase}',3)as int)) C
WHERE A.PERSON_ID=B.PERSON_ID AND A.MASTER_INDEX=C.MASTER_INDEX;";
conn.Execute(sql2,commandTimeout:60*60*5);
sql2=$@"INSERT INTO [SV_QueryPlatform_].[dbo].[MEDIC_PERSON_INFORMATION_{Indexs}]([HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],AREA_ID,[INDEXS],[TYPE],[DEPT_NAME])
select [HOS_ID],[MASTER_INDEX],[BIRTHDAY],[SEX],[PERSON_CODE],[PERSON_ID],[REG_CODE],[REG_ID],[REG_SOURCE],[REG_TIME],null,[INDEXS],[TYPE],[DEPT_NAME] From [{item.ExecOpenLink}].[{item.ExecDatabase}].[dbo].MEDIC_PERSON_INFORMATION_{Indexs}_2";
configConnection.Execute($"update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate(),log='{sql2.Replace("'","''")}' where COMPLETE_MARK != 22 and id= "+Indexs);
}
}
}
//判断是否查完全部医院
if(countsql==hos.Count)
{
configConnection.Execute("update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 22,END_TIME=getdate() where COMPLETE_MARK != 22 and id= "+Indexs);
}
configConnection.Execute("update [SV_QueryPlatform].[dbo].[MEDIC_SEARCH_RECORD] set COMPLETE_MARK = 23,END_TIME=getdate() where COMPLETE_MARK != 22 and id= "+Indexs);