IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SPTetkikDokumanListesiniAl]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE SPTetkikDokumanListesiniAl
GO
CREATE PROCEDURE [dbo].[SPTetkikDokumanListesiniAl]
    @HTETKIKID INT,
	@HKIMLIKID INT OUTPUT,
	@AccNo NVARCHAR(50) OUTPUT,
    @DokumanListesi NVARCHAR(MAX) OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    SET @DokumanListesi = '';

    SELECT @DokumanListesi = STUFF((       
		SELECT '|' + ADRES 
        FROM HTETKIKDOKUMAN 
        WHERE ADRES IS NOT NULL AND ADRES <> ''
          AND HTETKIKID = @HTETKIKID
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 1, '');

	if @DokumanListesi<>''
	SELECT @HKIMLIKID=HDOSYA.HKIMLIKID,@AccNo=AccessionNo  FROM HTETKIKDOKUMAN  
	 INNER JOIN HDOSYA ON HDOSYA.HDOSYAID=HTETKIKDOKUMAN.HDOSYAID
	 INNER JOIN HTETKIK ON HTETKIK.HTETKIKID=HTETKIKDOKUMAN.HTETKIKID
        WHERE ADRES IS NOT NULL AND ADRES <> ''
          AND HTETKIKDOKUMAN.HTETKIKID = @HTETKIKID
	if @DokumanListesi<>''
		SET  @DokumanListesi= @DokumanListesi+'|' 
    
	-- Eğer hiçbir sonuç yoksa, @DokumanListesi zaten boş kalacaktır.
END;

GO

IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SPTetkikDegerOku]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE SPTetkikDegerOku
GO

CREATE PROCEDURE [dbo].[SPTetkikDegerOku]
    @htetkikid INT,
    @Aciklama NVARCHAR(150) OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    BEGIN TRY
        -- Sorguyu çalıştır ve değeri al
        SELECT TOP 1 
            @Aciklama = LEFT(LITEMADI, 100) + ' Hasta Ad Soyad: ' + LEFT(HADI, 3) + '*** ' + LEFT(HSOYADI, 3) + '***'
        FROM 
            VWTETKIK
        WHERE 
            PACS = 1
            AND HTETKIKID = @htetkikid;

        -- Eğer kayıt bulunamazsa
        IF @Aciklama IS NULL
        BEGIN
            SET @Aciklama = 'Kayıt bulunamadı veya PACS=1 koşulu sağlanmadı.';
        END
    END TRY
    BEGIN CATCH
        -- Hata durumunda
        SET @Aciklama = 'Hata oluştu: ' + ERROR_MESSAGE();
    END CATCH
END
GO



IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SPTetkikDokumanInsert]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE SPTetkikDokumanInsert
GO

CREATE PROCEDURE [dbo].[SPTetkikDokumanInsert]
    @htetkikid INT,
    @ADRES NVARCHAR(MAX),
    @DOSYA NVARCHAR(MAX),
    @KayitBasarili BIT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    
    BEGIN TRY
        DECLARE @HTETKIKKARTID INT;
        DECLARE @HDOSYAID INT;
        DECLARE @YENIHTETKIKDOKUMANID INT;
        
        -- Get related IDs from HTETKIK table
        SELECT @HTETKIKKARTID = HTETKIKKARTID, @HDOSYAID = HDOSYAID 
        FROM HTETKIK 
        WHERE HTETKIKID = @htetkikid;

		SELECT  @HDOSYAID,@HTETKIKKARTID
        
        -- Check if we found the related record
        IF @HTETKIKKARTID IS NULL OR @HDOSYAID IS NULL
        BEGIN
            SET @KayitBasarili = 0;
            RETURN;
        END
        
        -- Get new ID for the document
        EXEC SPREADID2 N'HTETKIKDOKUMAN', '', @YENIHTETKIKDOKUMANID OUTPUT;
        
        -- Insert the document
        INSERT INTO HTETKIKDOKUMAN (
            HTETKIKDOKUMANID,
            HTETKIKKARTID,
            TARIH,
            ADRES,
            DOSYA,
            HTETKIKID,
            HDOSYAID
		 ) VALUES (
            @YENIHTETKIKDOKUMANID,
            @HTETKIKKARTID,
            GETDATE(),
            @ADRES,
            @DOSYA,
            @htetkikid,
            @HDOSYAID
        );
        
        -- Success
        SET @KayitBasarili = 1;
    END TRY
    BEGIN CATCH
        -- Error occurred
        SET @KayitBasarili = 0;
        
        -- Optional: Log the error
        -- INSERT INTO ErrorLog(ErrorTime, ErrorMessage) VALUES(GETDATE(), ERROR_MESSAGE());
    END CATCH
END
GO






IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[SPTetkikSorgula]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE SPTetkikSorgula
GO

CREATE PROCEDURE [dbo].[SPTetkikSorgula]
    @htetkikid INT,
    @kayitvarmi BIT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    
    IF EXISTS (SELECT 1 FROM VWTETKIK WHERE PACS = 1 AND HTETKIKID = @htetkikid)
        SET @kayitvarmi = 1;
    ELSE
        SET @kayitvarmi = 0;
END
GO




IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[spTetkikDokumanUserKontrol]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE spTetkikDokumanUserKontrol
GO
CREATE PROCEDURE [dbo].[spTetkikDokumanUserKontrol]
    @username NVARCHAR(50),
    @password NVARCHAR(50),
    @girisonaylandi BIT OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    
    DECLARE @userCount INT;
    
    -- Check if user exists with provided credentials
    SELECT @userCount = COUNT(*)
    FROM [user]
    WHERE isnull(RasyomedPass,'')<>'' and KODU = LTRIM(RTRIM(@username)) AND RasyomedPass = LTRIM(RTRIM(@password));
    PRINT CAST(@userCount AS NVARCHAR) +' KAYIT BULUNDU'
    -- Set output parameter based on result
    IF @userCount > 0
        SET @girisonaylandi = 1;
    ELSE
        SET @girisonaylandi = 0;
END
GO


