I. Tổng quan
- Setting là gì?
- Tại sao sử dụng setting?
- Sử dụng Setting thế nào?
II. Chi tiết
- Setting là gì?
- Nơi lưu trữ trong cơ sở dữ liệu
Application..L_Settings
: chứa giá trị default/global
[ID] [int],
[Category] varchar ,
[Name] varchar,
[Type] varchar,
[DefaultValue] nvarchar ,
[Note] nvarchar ,
[ComboValues] nvarchar ,
[CreatedOn] [datetime],
[CreatedBy] [uniqueidentifier],
[ModifiedOn] [datetime],
[ModifiedBy] [uniqueidentifier],
[CheckIsWarning] [bit]
Application..Settings
: chưa giá trị tương ứng với từng cơ sở/trung tâm
[FacID] varchar,
[ID] [int],
[Category] varchar,
[Name] varchar,
[Type] varchar,
[Value] nvarchar,
[Note] nvarchar,
[ComboValues] nvarchar,
[CreatedOn] [datetime],
[CreatedBy] [uniqueidentifier],
[ModifiedOn] [datetime],
[ModifiedBy] [uniqueidentifier],
[CheckIsWarning] [bit]
2. Tại sao sử dụng Setting ?
- Diễn giải: Nếu 1 chức năng A tại màn hình(screen) mà nhu cầu sử dụng của nhiều khách hàng khác nhau, thì lúc này chức năng A phải có setting để phục vụ cho nhiều nhu cầu khác nhau của khách hàng.
- Ví dụ: Tại màn hình tiếp nhận, có chức năng tiếp nhận chọn đối tượng người bệnh. Và có 2 khách hàng(Client), Client X có nhu cầu tiếp nhận bệnh nhân viện phí và VIP, Client Y có nhu cầu tiếp nhận bệnh nhân bảo hiểm và bệnh nhân viện phí.
- Trong cơ sở dữ liệu có bảng
L_DoiTuongTinhTien
, có các dòng dữ liệu như sau:- Bệnh nhân bảo hiểm
- Bệnh nhân viện phí
- Bệnh nhân VIP
- Đề bài : Làm sao Client X chỉ hiển trong Combobox “Đối tượng” gồm bệnh nhân viện phí và VIP, còn Client Y chỉ hiển thị trong combobox “Đối tượng” gồm bệnh nhân bảo hiểm và bệnh nhân viện phí
- Hình minh họa trên phần mềm

- Cách làm: Tạo 3 setting trong table
L_Settings
tương ứng với 3 đối tượng bệnh nhân, cụ thể sẽ là Admit_BNBH, Admit_BNVP, Admit_BNVIP. - Ta chọn setting tên Admit_BNBH để đi sâu vào chi tiết.

Value của Col <DefaultValue
> của table L_Setting
: sẽ được xác định bằng cách, nếu tình huống nào xảy ra/diễn ra nhiều hơn thì chọn giá trị theo tình huống được đó. Ở đây, vì các đa số các bệnh viện đều có cho khám chữa bệnh cho đối tượng bảo hiểm nên ta chọn <DefaultValue
> = Y.
Tất cả các Client có khám chữa bệnh cho đối tượng bảo hiểm thì sử dụng <Value
> = “Y”

Đối với trường hợp Client không khám chưa bệnh cho đối tượng bảo hiểm thì phải insert 1 row vào table L_Settings 1 Value = “N” (No). Như trong hình minh họa là Client với FacID(Facility)= 16 không có khám chữa bệnh cho đối tượng bảo hiểm.
3. Sử dụng Setting thế nào

Ta sử dụng function <fn_SettingValue_GetByName> trong SQL Server để lấy giá trị của Setting.
Lưu ý: @FacID là param được truyền từ tham số KHÔNG được fix code, ở đây chỉ làm ví dụ để dễ hiểu.