zoukankan      html  css  js  c++  java
  • 获取患者主索引的所有指定域的患者标识

    ALTER PROCEDURE [dbo].[pGetPersonIdentifiers](
    @identifierRootId int, @identifier varchar(100), @personId int = -1
    )

    AS

    set nocount on
    BEGIN TRY
    IF NOT EXISTS (SELECT * FROM [tempdb].sys.objects WHERE name = '##PersonIdentifier')
    CREATE TABLE ##PersonIdentifier(
    [PersonId] [int] ,
    [IdentifierRootID] [int] ,
    [Identifier] [varchar](100) NOT NULL
    )
    IF NOT EXISTS (SELECT * FROM [tempdb].sys.objects WHERE name = '##relativePersonId')
    CREATE TABLE ##relativePersonId(
    [RID] [int] identity(1,1),
    [RelatedPersonId] [int] ,
    [IsHandled] [bit] NOT NULL default 0
    )
    if @personId = -1
    SELECT @personId = PersonId
    FROM PersonIdentifier with(nolock) WHERE IdentifierRootId = @identifierRootId AND Identifier = @identifier

    INSERT ##PersonIdentifier(PersonId, IdentifierRootId, Identifier)
    SELECT PersonId, IdentifierRootId, Identifier
    FROM PersonIdentifier with(nolock) WHERE IdentifierRootId = @identifierRootId AND PersonId = @personId

    INSERT ##relativePersonId(RelatedPersonId)
    SELECT convert(int, Identifier)
    FROM PersonIdentifier with(nolock)
    WHERE IdentifierRootId = 100 AND PersonId = @personId AND Identifier <> @identifier
    and convert(int, Identifier) not in (select RelatedPersonId from ##relativePersonId)

    INSERT ##relativePersonId(RelatedPersonId)
    SELECT PersonId
    FROM PersonIdentifier with(nolock)
    WHERE PersonId <> @personID AND IdentifierRootId = 100 AND Identifier = convert(varchar(100), @personId)
    and PersonId not in (select RelatedPersonId from ##relativePersonId)

    DECLARE @relatedPersonId int, @rid int
    declare @relatedPersonIdentifier varchar(100)
    SET @relatedPersonIdentifier = convert(varchar(100), @personId)
    SELECT TOP 1 @rid = RID, @relatedPersonId = RelatedPersonId FROM ##relativePersonId WHERE IsHandled = 0
    IF @relatedPersonId IS NOT NULL
    begin
    update ##relativePersonId set IsHandled = 1 where RID = @rid
    exec [dbo].[pGetPersonIdentifiers] @identifierRootId, @relatedPersonIdentifier, @relatedPersonId
    end
    ELSE
    begin
    SELECT * FROM ##PersonIdentifier
    DROP TABLE ##PersonIdentifier
    DROP TABLE ##relativePersonId
    end
    END TRY

    BEGIN CATCH
    IF EXISTS (SELECT * FROM [tempdb].sys.objects WHERE name = '##PersonIdentifier')
    DROP TABLE ##PersonIdentifier
    IF EXISTS (SELECT * FROM [tempdb].sys.objects WHERE name = '##relativePersonId')
    DROP TABLE ##relativePersonId
    END CATCH

    set nocount off
  • 相关阅读:
    Eclipse 修改maven 仓储Repository位置
    使用Eclipse构建Maven的SpringMVC项目
    The word is not correctly spelled问题解决
    navicat for mysql 显示中文乱码解决办法
    Missing artifact net.sf.json-lib:json-lib:jar:2.2.3:compile
    ApacheTiles实战
    使用Apache Tiles3.x构建界面布局
    SpringMVC整合Tiles框架
    最近遇到的问题
    Unity3D流行的游戏开发人员构建高速检查站系统
  • 原文地址:https://www.cnblogs.com/chriskwok/p/1690421.html
Copyright © 2011-2022 走看看