USE [TARMED]
GO

/****** Object:  UserDefinedFunction [dbo].[uf_LEISTUNG1]    Script Date: 07.02.2026 08:55:57 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE OR ALTER FUNCTION [dbo].[uf_LEISTUNG1] 
(	
	@tber	integer,			-- Tarifbereich
	@plnr	varchar(14)='',		-- Leistung
	@pper	varchar(10)='',		-- Datum für den Stichtag kanonisch
	@psex	char(1)='',			-- Sex des Patienten
	@pqtd	varchar(255)='',	-- Qualität als FMH-Dignität (z.B. '05,06')
	@pspr	char(1)='G'			-- Sprache E,F,G,I
)

RETURNS @LEISTUNG TABLE 
(
	LMIN	int,
	TYP		tinyint,
	EBB		tinyint,
	BEZ		varchar(255)
)
AS
BEGIN
	DECLARE @lnr varchar(14), @sex char(1), @qtd varchar(5), @lmin int, @typ tinyint, @ebb tinyint, @bez varchar(255)
	DECLARE @beze varchar(255), @bezf varchar(255), @bezg varchar(255), @bezi varchar(255)
	DECLARE @fs1 integer
	SET @pspr = UPPER(@pspr)

-- ohne Hierarchie
	DECLARE LBC1 CURSOR FOR 
		SELECT  dbo.T_LEISTUNG.LMIN, dbo.T_LEISTUNG.TYP, dbo.T_LEISTUNG.EBB, 
				dbo.T_LEISTUNG.BEZE, dbo.T_LEISTUNG.BEZF, dbo.T_LEISTUNG.BEZG, dbo.T_LEISTUNG.BEZI
			FROM dbo.T_LEISTUNG 
			WHERE dbo.uf_ISQTD(dbo.T_LEISTUNG.QTD,@pqtd) = 1
				AND dbo.T_LEISTUNG.BEREICH=@tber AND @plnr=dbo.T_LEISTUNG.LNR
				AND dbo.T_LEISTUNG.GVON <= @pper AND dbo.T_LEISTUNG.GBIS >= @pper
				AND (ISNULL(dbo.T_LEISTUNG.SEX,'')='' OR ISNULL(dbo.T_LEISTUNG.SEX,'')=@psex)
	OPEN LBC1 
	FETCH FROM LBC1 INTO @lmin, @typ, @ebb, @beze, @bezf, @bezg, @bezi  
	SET @fs1 = @@FETCH_STATUS   
	WHILE @fs1 = 0 
		BEGIN
			IF @pspr = 'E' SET @bez=@beze
			ELSE IF @pspr = 'F' SET @bez=@bezf
			ELSE IF @pspr = 'G' SET @bez=@bezg
			ELSE IF @pspr = 'I' SET @bez=@bezi
			IF ISNULL(@bez,'') = '' SET @bez=@bezg
			INSERT @LEISTUNG SELECT @lmin, @typ, @ebb, @bez  	
			FETCH NEXT FROM LBC1 INTO @lmin, @typ, @ebb, @beze, @bezf, @bezg, @bezi 
			SET @fs1 = @@FETCH_STATUS 
		END
	CLOSE LBC1
	DEALLOCATE LBC1
RETURN
END
GO

