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
  • 相关阅读:
    JAVA不可变类(immutable)机制与String的不可变性
    如何高效学习
    [细品java]ThreadLocal源码学习
    Spring 入门知识点笔记整理
    spring远程服务知识梳理
    Spring Security 入门详解
    Selenium 安装 geckdriver Firefox 对应关系 历史版本下载
    Redhat linux 下 Jmeter 非GUI界面执行压力测试
    Spring Boot 进程守护 修改启动端口号 Spring Boot 监听端口被占用无法启动
    Redhat Linux 部署maven环境
  • 原文地址:https://www.cnblogs.com/chriskwok/p/1690421.html
Copyright © 2011-2022 走看看