{ "ListFormCode": "App.DevRequests", "KeyFieldName": "Id", "GeneratedAt": "2026-09-30T13:46:58.3804382Z", "Order": 0, "Rows": [ { "Id": "ce4269ad-8d08-487a-9e36-c002dd482a3c", "TenantId": null, "UserName": "system@sozsoft.com", "RequestDate": null, "Status": "Backlog", "Title": "Human Resources -> Sağlık", "Description": "

Bu eklenecekler Human Resources -> Sağlık alt menüsünün içerisine eklenecektir. Çalışan (Kullanıcı) ile ilgili tüm bilgileri AbpUsers tablosundan alınabilir. Örneğin Idendity Number, Gender, EducationStatus, BirthDate vs. tüm bilgiler bu tablodan alınabilir. Branch bilgisi eğer kullanıcı birden fazla Branch yetkisi varsa seçmeli, eğer bir branch yetkisi varsa o branch kullanıcı seçildikten sonra otomatik gelmeli. Lİstelerde Avatar (Kullanıcı Resmi) olmasına gerek yok, eklenmeyecek.


İstirahat Listesi : Çalışanların istirahat listesi ekranıdır. İstirahat Tipi: Hastalık, İş Kazası, Analık, Meslek Hastalığı gibi seçilebilmelidir.


Muayene Listesi : Çalışanların Muayene Listesidir. Her kullanıcının periyodik veya plansız şekilde yapılan muayene sonuçlarının listesidir.Kullanıcı seçilince Eğitim Durumu, Tc Kimlik No, Doğum Tarihi, Departman gibi bilgiler otomatik gelir.



Hasta Kayıt Defteri: Kullanıcıların hasta olduklarında doldurdukları listedir. Tip sütununda Hastalık, İş Kazası Dönüş, İstirahat Dönüş, Sonuç kısmında Tedavi (Taburcu), Sevk ve İstirahat seçenekleri olmalı. Sevk olaunca Sevk Yeri açılıyor. Kullanıcı seçilince Adres, yaş, cinsiyet gibi bilgiler otomatik gelir. Sıra No sütunu eklenmeyecek.

", "DueDate": "2026-09-30T13:58:00", "Tags": "HR", "Assignees": "system@sozsoft.com", "Priority": "5", "Completed": false, "SortOrder": 0, "Timesheets": "[{\"id\":\"513d552f-dd7b-087b-cecf-3a2406c146e2\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_SickLeave tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"a256b7df-8987-46e4-940d-3a2406c1ebed\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"SickLeave.json wizard\\u0027\\u0131 deploy edildi (1 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"82bf0002-cb61-3f1a-68cd-3a2406c2038c\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_MedicalExamination tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"b300744f-c937-5077-1163-3a2406c2b2c7\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"MedicalExamination.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"a9948d0b-f295-2b53-03cb-3a2406c2cf79\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_PatientRegister tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"39277b02-bfea-5956-e53f-3a2406c37cb7\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"PatientRegister.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"9dd7b848-72b6-69ee-7605-3a2406c38b22\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"6 tamamlanm\\u0131\\u015F alt g\\u00F6rev eklendi\",\"duration\":0.0167},{\"id\":\"49f9f61d-15f0-1d2b-3740-3a2406c3b8e5\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Analize \\u00FCretim notu eklendi\",\"duration\":0.0167},{\"id\":\"341e6a23-9f14-cb0c-aa1e-3a2406c3c46c\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.DevRequests ekran\\u0131nda sat\\u0131r g\\u00FCncellendi (Status)\",\"duration\":0.0167}]", "SubTasks": "[{\"id\":\"8464be6d-1c5c-d05d-fca4-3a2406c38b07\",\"title\":\"create_table: Hr_T_SickLeave\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"19173842-47c0-628a-7d6d-3a2406c38b07\",\"title\":\"deploy_wizard: SickLeave.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"b3b782f7-48bc-19b4-28ef-3a2406c38b07\",\"title\":\"create_table: Hr_T_MedicalExamination\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"16aa3400-b553-c836-ef94-3a2406c38b07\",\"title\":\"deploy_wizard: MedicalExamination.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"b0b4d1e7-cfb2-c2ae-2058-3a2406c38b07\",\"title\":\"create_table: Hr_T_PatientRegister\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"d4be70d9-98b3-38c6-a8da-3a2406c38b07\",\"title\":\"deploy_wizard: PatientRegister.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true}]", "Analysis": "

Amaç

\n

İK / işyeri hekimliği ekibinin çalışanların sağlık süreçlerini tek menüde takip etmesi: istirahat raporları, periyodik/plansız muayene sonuçları ve revire başvuran çalışanların hasta kayıt defteri. Çalışan bilgileri (TC, cinsiyet, doğum tarihi, eğitim, adres, departman, görev) kullanıcı seçilince AbpUsers'tan, şube ise kullanıcının şube yetkilerinden (Sas_T_BranchUsers) otomatik gelir.

\n\n

Görsel analizi

\n\n

Görsellerdeki fotoğraf alanı talep metni gereği (\"Listelerde Avatar olmasına gerek yok, eklenmeyecek\") üretilmez.

\n\n

Çözüm yolu

\n

Üç ekran da Wizard List (ComponentKind 0) ile, her biri kendi yeni tablosu üzerinde üretilir: kayıt listesi + popup ekle/düzenle/sil, filtre ve arama. Otomatik dolan çalışan/şube/doktor bilgileri lookup'ların seçili kaydından EditorScript (copy, selected) ile taşınır; hesaplar (Gün, Yaş), şube doğrulaması ve koşullu kilitler de EditorScript ile yapılır.

\n\n

Menü yeri

\n

İnsan Kaynakları › Sağlık › {Ekran}

\n\n\n\n\n\n\n\n
SeviyeKodAd (TR / EN)İkonDurum
KökApp.Hrİnsan Kaynakları / Human ResourcesFcConferenceCallVar
AraApp.Hr.HealthSağlık / HealthFcLikeYeni
EkranApp.Hr.SickLeaveİstirahat Listesi / Sick LeavesFcPlannerYeni
EkranApp.Hr.MedicalExaminationMuayene Listesi / Medical ExaminationsFcInspectionYeni
EkranApp.Hr.PatientRegisterHasta Kayıt Defteri / Patient RegisterFcViewDetailsYeni
\n

ModuleId: Hr · İzin grubu: App.Hr (var) · MenuParentCode: App.Hr.Health · MenuParentPath: App.Hr · Route: /admin/list/{ListFormCode}.

\n

Yetki: App.Hr › App.Hr.Health (Yeni) › App.Hr.SickLeave / App.Hr.MedicalExamination / App.Hr.PatientRegister.

\n

Ekranlar arasında lookup bağımlılığı yok (hepsi var olan tanım ekranlarını kullanır); menüde talepteki sırayla yer alırlar.

\n\n

Veri modeli

\n

Üç tablo da yenidir (önceki üretimin tabloları, wizard'ları ve menüleri kaldırılmış; veritabanında yoklar). Her tabloda Multi-Tenant + Full Audited kolon seti. Kapsam IsTenant = true, IsBranch = false. Kullanıcıdan kopyalanan kolonlar AbpUsers ile aynı ad/tip/boyla açılır: IdentityNumber nvarchar(15), Gender nvarchar(16) (Male/Female), EducationLevel nvarchar(128), HomeAddress nvarchar(512), BirthDate datetime2, DepartmentId/JobPositionId uniqueidentifier. Avatar kolonu hiçbir tabloda açılmaz.

\n\n

Şube kuralı (üç ekranda ortak): BranchId kullanıcının şube yetkilerinden (Sas_T_BranchUsers, yalnızca aktif ve silinmemiş Sas_T_Branch) belirlenir.

\n\n\n

Gösterim lookup'ları: DepartmentId → Hr_T_Department, JobPositionId → Hr_T_JobPosition, DoctorId → Hr_T_Doctor (IsActive), HospitalId/ReferralHospitalId → Hr_T_Hospital (IsActive), HospitalDepartmentId → Hr_T_HospitalDepartment (IsActive); hepsinde IsDeleted = 'false' ve TenantId = '@TENANTID'.

\n\n

Hr_T_SickLeave — Tanım tablosu: Hayır (çalışan bazlı hareket kaydı).

\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KolonTipZorunluBaşlıkNot
UserIduniqueidentifierEvetAdı Soyadıkullanıcı lookup'ı
BranchIduniqueidentifier NULLEvet (form)Şube Adışube kuralı
IdentityNumbernvarchar(15)HayırTC Kimlik Nokopya, salt okunur
DepartmentIduniqueidentifierHayırDepartmankopya, salt okunur
StartDatedateEvetBaşlangıç Tarihi
EndDatedateEvetBitiş Tarihi
DayCountintHayırGünhesap, salt okunur
LeaveTypenvarchar(32)Evetİstirahat Tipisabit liste: Hastalık · İş Kazası · Analık · Meslek Hastalığı; varsayılan Hastalık
HospitalIduniqueidentifierHayırKurumHr_T_Hospital
HospitalDepartmentIduniqueidentifierHayırBölümHr_T_HospitalDepartment
Reasonnvarchar(MAX)Hayırİstirahat SebebidxTextArea
\n\n

Hr_T_MedicalExamination — Tanım tablosu: Hayır (çalışan bazlı muayene kaydı).

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KolonTipZorunluBaşlıkNot
UserIduniqueidentifierEvetAdı Soyadıkullanıcı lookup'ı
IdentityNumbernvarchar(15)HayırTC Kimlik Nokopya, salt okunur
ExaminationDatedateEvetMuayene Tarihiaçılışta bugün
ExaminationTypenvarchar(32)EvetMuayene Tipisabit liste: Periyodik · Plansız; varsayılan Periyodik
EducationLevelnvarchar(128)HayırEğitim Durumukopya, salt okunur
BirthDatedatetime2HayırDoğum Tarihikopya, salt okunur
JobPositionIduniqueidentifierHayırGörevikopya, salt okunur
DepartmentIduniqueidentifierHayırDepartmankopya, salt okunur
BranchIduniqueidentifier NULLEvet (form)Şube Adışube kuralı
Examinationnvarchar(MAX)HayırMuayenedxTextArea
Resultnvarchar(MAX)HayırSonuçdxTextArea
DoctorIduniqueidentifierEvetDoktorHr_T_Doctor
DiplomaNonvarchar(50)HayırDiploma Nodoktordan kopya, salt okunur
DiplomaDatedateHayırDiploma Tarihidoktordan kopya, salt okunur
OhsCertificateNonvarchar(50)Hayırİşyeri Hekimi Belge Nodoktordan kopya, salt okunur
OhsCertificateDatedateHayırİşyeri Hekimi Belge Tarihidoktordan kopya, salt okunur
\n\n

Hr_T_PatientRegister — Tanım tablosu: Hayır (revir başvuru kaydı).

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KolonTipZorunluBaşlıkNot
UserIduniqueidentifierEvetAdı Soyadıkullanıcı lookup'ı
RegisterDatedateEvetTarihaçılışta bugün
HomeAddressnvarchar(512)HayırAdreskopya, salt okunur
BirthDatedatetime2HayırDoğum Tarihikopya, salt okunur (Yaş hesabının kaynağı)
AgeintHayırYaşhesap, salt okunur
Gendernvarchar(16)HayırCinsiyetkopya, salt okunur; Male/Female, App.StaticLookup.Male/Female
BranchIduniqueidentifier NULLEvet (form)Şube Adışube kuralı
DoctorIduniqueidentifierHayırDoktorHr_T_Doctor
RegisterTypenvarchar(32)EvetTipsabit liste: Hastalık · İş Kazası Dönüş · İstirahat Dönüş; varsayılan Hastalık
Resultnvarchar(32)EvetSonuçsabit liste: Tedavi (Taburcu) · Sevk · İstirahat; varsayılan Tedavi (Taburcu)
LeaveDayCountintHayırİstirahat Günüyalnızca Sonuç = İstirahat iken açık
ReferralHospitalIduniqueidentifierHayırSevk YeriHr_T_Hospital; yalnızca Sonuç = Sevk iken açık
Descriptionnvarchar(MAX)HayırAçıklamadxTextArea
\n\n

Etkilenen kısımlar

\n\n\n

Görünümler ve davranış

\n\n\n

Kararlar

\n\n\n

Üretim planı

\n
    \n
  1. create_table: Hr_T_SickLeave
  2. \n
  3. deploy_wizard: SickLeave.json
  4. \n
  5. create_table: Hr_T_MedicalExamination
  6. \n
  7. deploy_wizard: MedicalExamination.json
  8. \n
  9. create_table: Hr_T_PatientRegister
  10. \n
  11. deploy_wizard: PatientRegister.json
  12. \n
\n\n

Üretime hazır

\n

Evet

MCP

\n

Üretilenler (menü: İnsan Kaynakları › Sağlık — App.Hr.Health yeni ara menü/ara yetki, ikon FcLike; izin grubu App.Hr; IsTenant = true, IsBranch = false; görünümler Grid/Card/Pivot/Chart, açılış Grid; form popup, tek grup 2 kolon):

\n\n

Avatar talep gereği hiçbir ekrana ve tabloya eklenmedi. Şube kuralı üç ekranda da uygulandı (tek şubede otomatik dolup kilitlenir, birden fazla ya da hiç şube yoksa seçime açılır, çalışana tanımlı olmayan şube uyarıyla reddedilir; BranchId formda zorunlu).

\n

Yetkiler her ekranda {ListFormCode} + .Create/.Update/.Delete/.Export/.Import/.Note; hiçbir role atanmadı. Yeni dil anahtarları: ara menü, üç ekran başlığı/açıklaması, dokuz widget başlığı ve yeni alan başlıkları.

\n

Varsayılanlar: script'ler kod olarak yazıldı (Script Builder kod görünümünde açılır); kopya alanlar EditorOptions.readOnly ile kilitli; departman ve görev gösterim lookup'larında IsActive filtresi yok (eski satırlarda adları görünsün diye); menü sırası deploy sırasıyla (İstirahat · Muayene · Hasta Kayıt).

\n

DB Migrate bekleyen wizard'lar: SickLeave.json, MedicalExamination.json, PatientRegister.json.

" } ] }