体检系统架构
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

251 lines
8.8 KiB

-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- 【 】#########################################################
-- -- -- -- -- -- --
-- 【1、Dict_Conclusion】#########################################################
INSERT INTO Dict_Conclusion(ID, ConclusionName, SpellCode, Description, Instructions, Suggestion, Advice, DietaryGuidance, Sex )
SELECT
Id,
NAME AS ConclusionName,
PYM AS SpellCode,
Description,
Instructions,
Suggestion ,
Advice,
DietaryGuidance,
DiseasesGender AS SEX
FROM
PEIS.DBO.Conclusion
-- 【2、Dict_Dept】#########################################################
INSERT INTO [dbo].[Dict_Dept]([ID], [Name], [HISCode], [Address])
SELECT Id ,Name,HISCode,HISName ,Address FROM PEIS.DBO.Department
-- 【3、Dict_FeeItem】#########################################################
INSERT INTO Dict_FeeItem(ID, FeeItemCode, SpellCode, Unit)
SELECT
A.Id,
A.HISCheckCode AS FeeItemCode,
A.PYM AS SpellCode,
A.UnitName AS Unit
FROM
peis.dbo.FeeItem A
-- 【4、Dict_Pack】#########################################################
INSERT INTO Dict_Pack
(ID, Name, SpellCode, Sex, Marriage, Seq)
SELECT
Id,
NAME ,
PYM AS SpellCode,
SuitableGender AS Sex,
SuitableMarriage AS Marriage,
SortNo AS Seq
FROM
PEIS.dbo.ExamPack WHERE StopOperDate IS NULL
-- 【5、Dict_PackToFeeItem】#########################################################
INSERT INTO [Dict_PackToFeeItem]
([ID], [PID], [FID], [Seq], [CreateTime], [CreatorCode], [Creator])
SELECT[Id], [ExamPackId] AS PID, [FeeItemId] AS FID, [SortNo] AS SEQ,CreateTime= '2024-05-24', CreatorCode='0513',Creator= '赵翠回'
FROM PEIS. [dbo].[ExamPackFeeItem]
-- 【6、Dict_PeisFeeItem】#########################################################
-- 手动添加HIS中未开展的项目
-- 【7、Dict_ReportItem】#########################################################
-- 插入不重复部分
INSERT INTO [Dict_ReportItem]([ID], [RptItemName], [SpellCode], [Unit], [RptItemCode] )
SELECT
id,
NAME as RptItemName,
PYM as SpellCode,
ValueUnit as Unit,
LisCode as RptItemCode
FROM
PEIS.dbo.ExamItem
-- select DISTINCT [FeeItemId], [ExamItemId], [SortNo] from PEIS.dbo.feeitemexamitem where ExamItemId=1
-- 更新 FeeItemId 和 SortNo
UPDATE Dict_ReportItem
SET FId = CASE WHEN Dict_ReportItem.FId IS NULL THEN feeitemexamitem.FeeItemId ELSE new_record.FId END,
Seq = feeitemexamitem.SortNo
FROM Dict_ReportItem
JOIN PEIS.dbo.feeitemexamitem ON Dict_ReportItem.ID = feeitemexamitem.ExamItemId
OUTER APPLY (
SELECT TOP 1 FId
FROM Dict_ReportItem AS dr
WHERE Dict_ReportItem.ID = dr.ID AND dr.FId IS NOT NULL
) AS new_record (FId)
-- 插入重复部分 多对多
INSERT INTO [Dict_ReportItem]([RptItemName], [SpellCode], [Unit], [RptItemCode],fid,seq )
select DISTINCT
NAME as RptItemName,
PYM as SpellCode,
ValueUnit as Unit,
LisCode as RptItemCode,
FeeItemId as fid,
SortNo as seq
from
PEIS.dbo.feeitemexamitem a
left join PEIS.dbo.examitem b on a.ExamItemId=b.id
where not EXISTS (select 1 from Dict_ReportItem c where c.id=a.ExamItemId and c.fid=a.FeeItemId)
ORDER BY fid,seq
-- 【8、Dict_Sign】#########################################################
INSERT INTO Dict_Sign(ID, RID, SignName, SpellCode, Description, SevereLevel, IsDefault, IsSummary, Group1, Group2, Seq, CID)
SELECT Id,
ExamItemId AS RID,
NAME AS SignName,
PYM AS SpellCode,
SignDetail AS Description,
DiseaseLevel AS SevereLevel,
IsDefaultOption AS IsDefault,
SummaryInclude AS IsSummary,
FirstGroupNo AS Group1,
SecondGroupNo AS Group2,
SortNo AS Seq ,
ConclusionId AS CID
FROM
PEIS.dbo.ExamSign
-- 【9、Exam_Part】#########################################################
INSERT INTO [EXAM_PART] ([ID],[EID],[DeptName],[DeptCode],[InputTime],[InputerCode],[Inputer],[CheckTime],[CheckerCode],[Checker],[VerifyTime],[VerifyCode],[Verifier],[Summary],[CreateTime],[CreatorCode],[Creator], [GiveUpTime],[GiveUpUser],[GiveUpCode] )
SELECT
A.[ID],
A.EnrollmentId AS [EID],
A.DepartmentName AS [DeptName],
B.HISCODE AS [DeptCode],
A.GiveUpOperDate AS [InputTime],
A.InputOperCode AS [InputerCode],
A.InputOperName AS [Inputer],
A.CheckOperDate AS [CheckTime],
A.CheckOperCode AS [CheckerCode],
A.CheckOperName AS [Checker],
A.VerifyOperDate AS [VerifyTime],
A.VerifyOperCode AS [VerifyCode],
A.VerifyOperName AS [Verifier],
A.SummaryContent AS [Summary],
A.CreateOperDate AS [CreateTime],
A.CreateOperCode AS [CreatorCode],
A.CreateOperName AS [Creator],
A.GiveUpOperDate AS [GiveUpTime],
A.GiveUpOperName AS [GiveUpUser],
A.GiveUpOperCode AS [GiveUpCode]
FROM PEIS.DBO.ExamDepartment A
LEFT JOIN PEIS.DBO.Department B ON A.DepartmentId=B.ID
WHERE A.RemoveOperDate IS NULL
-- END
-- 【10、Exam_Result】#########################################################
-- SELECT top 20 * FROM LisResult
-- 普通项目和心电
SELECT count(*) FROM peisdb.dbo.[Exam_Result]
TRUNCATE TABLE peisdb.dbo.[Exam_Result]
begin Transaction
INSERT INTO peisdb.[dbo].[Exam_Result]( [PID],[DID],[DeptName] , [FID], [FeeItemName], [RID], [RptItemName], [TextResult], [Unit], [ItemClass] )
SELECT
Z.Id AS PID
,Y.DepartmentId AS [DID]
,X.DepartmentName AS [DeptName]
,X.[FeeItemId] AS [FID]
,X.Name AS FeeItemName
,Y.[ExamItemId] AS [RID]
,Y.[Name] AS [RptItemName]
,Y.[TextValue] AS [TextResult]
,Y.[ValueUnit] AS [Unit]
,X.ItemType AS [ItemClass]
FROM PEIS.DBO.[EnrollmentFeeItem] X (NOLOCK)
JOIN PEIS.DBO.[EnrollmentExamItem] Y (NOLOCK) ON X.Id = Y.EnrollmentFeeItemId
JOIN PEIS.DBO.[ExamDepartment] Z(NOLOCK) ON Y.DepartmentId = Z.DepartmentId AND Y.EnrollmentId = Z.EnrollmentId AND X.EnrollmentId = Z.EnrollmentId
WHERE X.SendOperDate IS NOT NULL AND X.RemoveOperDate IS NULL AND Y.RemoveOperDate IS NULL AND Z.RemoveOperDate IS NULL
AND X.GiveUpOperDate IS NULL AND Y.GiveUpOperDate IS NULL
-- 检验项目
INSERT INTO peisdb.[dbo].[Exam_Result]( [PID],[DID],[DeptName] , [FID], [FeeItemName], [RID], [RptItemName], [TextResult], [Unit], [ItemClass] ,RPTITEMCODE,[Range],REPORTER,REPORTTIME,UnusualFlag)
SELECT
C.Id AS PID
,B.DepartmentId AS [DID]
,A.DepartmentName AS [DeptName]
,A.[FeeItemId] AS [FID]
,A.Name AS FeeItemName
,B.[ExamItemId] AS [RID]
,B.[Name] AS [RptItemName]
,B.[TextValue] AS [TextResult]
,B.[ValueUnit] AS [Unit]
,A.ItemType AS [ItemClass]
,B.LisCode AS RPTITEMCODE
,B.LisRange AS [Range]
,B.LisVerifyOperName AS REPORTER
,B.LisVerifyOperDate AS REPORTTIME
,B. LisFlag AS UnusualFlag
FROM PEIS.DBO.[EnrollmentApplicationSheetFeeItem] A (NOLOCK)
JOIN PEIS.DBO.[EnrollmentExamItem] B (NOLOCK) ON A.Id = B.EnrollmentApplicationSheetFeeItemId
JOIN PEIS.DBO.[ExamDepartment] C(NOLOCK) ON B.DepartmentId = C.DepartmentId AND B.EnrollmentId = C.EnrollmentId AND A.EnrollmentId =C.EnrollmentId
WHERE A.SendOperDate IS NOT NULL AND A.RemoveOperDate IS NULL AND B.RemoveOperDate IS NULL AND C.RemoveOperDate IS NULL
AND A.GiveUpOperDate IS NULL AND B.GiveUpOperDate IS NULL
order by a.id desc
if(@@error<>0) -- 判断是否报错如果报错就回滚信息否则提交事务
rollback transaction
else
commit transaction
-- 检查
INSERT INTO [Exam_Result]( [PID], [DeptName], [FID], [FeeItemName], [RptItemName], [TextResult], [ItemClass], [Reporter], [ReportTime])
SELECT
C.ID AS PID,C.DeptName,
D.FeeItemId AS FID,D.Name AS FeeItemName,A.NAME AS RptItemName,
A.TextValue AS TextResult,ItemClass='检查',A.PacsVerifyOperName AS Reporter, A.PacsVerifyOperDate AS ReportTime
FROM PEIS.DBO.EnrollmentApplicationSheet A
LEFT JOIN PEIS.DBO.DEPARTMENT B ON A.DepartmentId=B.ID
LEFT JOIN Exam_Part C ON A.EnrollmentId=C.EID AND B.HISCODE=C.DeptCode AND B.NAME=C.DeptName
LEFT JOIN PEIS.DBO.EnrollmentApplicationSheetFeeItem D ON A.ID=D.EnrollmentApplicationSheetId
WHERE A. TextValue IS NOT NULL
-- 【11、Exam_Conclusion】#########################################################
INSERT INTO [dbo].[Exam_Conclusion]([EID],[FID], [RID], [CID], [Conclusion], [Suggestion] , [Seq])
SELECT
[EnrollmentId] AS EID,
[FeeItemId] AS FID,
[ExamItemId] AS RID,
[ConclusionId] AS CID,
[Name] AS Conclusion,
[Suggestion] AS Suggestion ,
SORTNO AS SEQ
FROM PEIS.DBO.ExamConclusion