-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb_script.sql
More file actions
112 lines (99 loc) · 2.56 KB
/
db_script.sql
File metadata and controls
112 lines (99 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
USE master;
GO
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'PatientDB')
BEGIN
CREATE DATABASE PatientDB;
END
GO
USE PatientDB;
GO
-- Create Patient Table
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Patient')
BEGIN
CREATE TABLE Patient (
Id INT IDENTITY(1,1) PRIMARY KEY,
FirstName VARCHAR(50) NULL,
MiddleName VARCHAR(50) NULL,
LastName VARCHAR(50) NOT NULL,
SuffixName VARCHAR(10) NULL,
BirthDate DATETIME NULL,
Gender VARCHAR(10) NULL,
InitialDiagnosis VARCHAR(500) NOT NULL,
PatientNo VARCHAR(8) NULL UNIQUE -- Will be populated by SP
);
END
GO
-- SP: Get All Patients
CREATE OR ALTER PROCEDURE sp_GetAllPatients
AS
BEGIN
SELECT * FROM Patient ORDER BY Id DESC;
END
GO
-- SP: Get Patient By Id
CREATE OR ALTER PROCEDURE sp_GetPatientById
@Id INT
AS
BEGIN
SELECT * FROM Patient WHERE Id = @Id;
END
GO
-- SP: Create Patient
CREATE OR ALTER PROCEDURE sp_CreatePatient
@FirstName VARCHAR(50),
@MiddleName VARCHAR(50) = NULL,
@LastName VARCHAR(50),
@SuffixName VARCHAR(10) = NULL,
@BirthDate DATETIME = NULL,
@Gender VARCHAR(10) = NULL,
@InitialDiagnosis VARCHAR(500)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @NewId INT;
-- Insert without PatientNo first
INSERT INTO Patient (FirstName, MiddleName, LastName, SuffixName, BirthDate, Gender, InitialDiagnosis)
VALUES (@FirstName, @MiddleName, @LastName, @SuffixName, @BirthDate, @Gender, @InitialDiagnosis);
-- Get the generated Identity
SET @NewId = SCOPE_IDENTITY();
-- Update PatientNo based on the new ID (Format 00000000)
UPDATE Patient
SET PatientNo = RIGHT('00000000' + CAST(@NewId AS VARCHAR(10)), 8)
WHERE Id = @NewId;
-- Return the created record
SELECT * FROM Patient WHERE Id = @NewId;
END
GO
-- SP: Update Patient
CREATE OR ALTER PROCEDURE sp_UpdatePatient
@Id INT,
@FirstName VARCHAR(50),
@MiddleName VARCHAR(50) = NULL,
@LastName VARCHAR(50),
@SuffixName VARCHAR(10) = NULL,
@BirthDate DATETIME = NULL,
@Gender VARCHAR(10) = NULL,
@InitialDiagnosis VARCHAR(500)
AS
BEGIN
SET NOCOUNT ON;
UPDATE Patient
SET FirstName = @FirstName,
MiddleName = @MiddleName,
LastName = @LastName,
SuffixName = @SuffixName,
BirthDate = @BirthDate,
Gender = @Gender,
InitialDiagnosis = @InitialDiagnosis
WHERE Id = @Id;
END
GO
-- SP: Delete Patient
CREATE OR ALTER PROCEDURE sp_DeletePatient
@Id INT
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM Patient WHERE Id = @Id;
END
GO