{ "ListFormCode": "App.DevRequests", "KeyFieldName": "Id", "GeneratedAt": "2026-10-01T07:16:56.9244132Z", "Order": 0, "Rows": [ { "Id": "ec7d68c2-2dae-466a-8f8b-f28f6042746a", "TenantId": null, "UserName": "system@sozsoft.com", "RequestDate": null, "Status": "Staging", "Title": "Human Resources -> Health Card", "Description": "

Human Resources menüsünün altına Health Card adında listesi ekle. Bu liste kullanıcı listesi gibi bir liste olmalı ve bu listenin sadece Detay butonu olmalı. Bu butona basınca açılan detay formu aynı aşağıdaki resimdeki gibi olmalı. Üst kısımda kullanıcı bilgileri alt kısımdaki tablarda aynı User Detaildeki Health Card gibi olmalı.


", "DueDate": null, "Tags": "HR", "Assignees": "system@sozsoft.com", "Priority": null, "Completed": true, "SortOrder": 2, "Timesheets": "[{\"id\":\"fe72afa0-9b50-e90a-a166-3a24088f5087\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Talep analiz edildi\",\"duration\":0.0833},{\"id\":\"0bad51df-91ee-6eba-2d25-3a2408986e70\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardHistory.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.05},{\"id\":\"20934d75-88dd-5a98-7314-3a2408991d44\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardLabPhysical.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"7fb1d459-e85f-6a5b-2b17-3a24089a350e\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardAnamnesis.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"196f9b32-8294-f469-e553-3a24089a843e\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardResult.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"09c813af-f6ed-0bde-590f-3a24089ae48f\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardPeriodicExamination.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"12563d83-6c1a-5e01-3590-3a24089b59bb\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardPatientProtocol.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"7e0681de-3e80-120e-8039-3a24089bd0c7\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCardSickLeave.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"57ed3514-62b1-3a13-7aa3-3a24089c6423\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"HealthCard.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"3f790c75-99c4-3d11-e2d7-3a24089c7ac0\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"8 tamamlanm\\u0131\\u015F alt g\\u00F6rev eklendi\",\"duration\":0.0167},{\"id\":\"95e09967-9627-2e6b-50ac-3a24089cb3e7\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Analize \\u00FCretim notu eklendi\",\"duration\":0.0167},{\"id\":\"d7e031b1-84a9-ccea-56f8-3a24089cde4a\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.DevRequests ekran\\u0131nda sat\\u0131r g\\u00FCncellendi (Status)\",\"duration\":0.0167}]", "SubTasks": "[{\"id\":\"40ca1e11-348e-6a1f-44da-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardHistory.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"c531aead-5088-8d56-f0c0-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardLabPhysical.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"0e8ffd2f-24e8-389a-69d1-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardAnamnesis.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"f46a3065-6d16-6afa-9651-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardResult.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"6d5926eb-db17-b024-ff88-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardPeriodicExamination.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"bbf66052-8bc3-cbd3-e089-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardPatientProtocol.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"db2f5469-4f39-16be-6954-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCardSickLeave.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"1fea5028-41a1-a95e-601e-3a24089c7aae\",\"title\":\"deploy_wizard: HealthCard.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true}]", "Analysis": "

Amaç

\n

İK / işyeri hekimliği ekibi, kullanıcı yönetimi yetkisi (AbpIdentity.Users.Update) olmadan çalışanların sağlık kartını İnsan Kaynakları menüsünden açıp güncelleyebilsin. Liste kullanıcı listesine benzer, yalnızca Detay butonu taşır; detay formu üstte çalışan bilgisi, altta User Detail › Health Card ile aynı yedi sekmeyi gösterir.

\n\n

Görsel analizi

\n

[image-1] — Sekmeli düzenleme formu (User Detail › Health Card'ın kopyası). Sekmeler: Family / Personal History (açık), Laboratory - Physical Examination, Anamnesis, Result, Periodic Examinations, Patient Protocol Book, Sick Leaves. Sağ altta Save.

\n\n\n

Çözüm yolu

\n

Wizard List + Form alt formları. Sağlık kartı alanlarının tamamı AbpUsers'ta, çok kayıtlı bölümler mevcut Adm_T_User* tablolarında durur; yeni tablo gerekmez. Ana liste AbpUsers üzerinde salt okunur bir ListForm'dur ve hazır Detay butonuyla form görünümünü (/admin/form/App.Hr.HealthCard/{Id}) açar; formun üst kısmı çalışan bilgisi (salt okunur), sekmeler SubForms'tur: ilk dört sekme AbpUsers üzerinde TabType: Form (Id → Id, 1:1), son üç sekme Adm_T_User* üzerinde TabType: List (Id → UserId). Custom component gerekmez; User Detail React sayfasına dokunulmaz.

\n\n

Menü yeri

\n

İnsan Kaynakları › Sağlık Kartı

\n\n\n\n\n
SeviyeKodAd (TR / EN)İkonDurum
KökApp.Hrİnsan Kaynakları / Human ResourcesFcConferenceCallVar
EkranApp.Hr.HealthCardSağlık Kartı / Health CardFcInspectionYeni
\n

ModuleId: Hr · izin grubu App.Hr · route /admin/list/App.Hr.HealthCard · MenuParentCode: App.Hr, MenuParentPath boş.

\n

Yetki: App.Hr › App.Hr.HealthCard (Yeni; izin grubu App.Hr Var). Alt formlar: App.Hr › App.Hr.HealthCard › App.Hr.HealthCard{History|LabPhysical|Anamnesis|Result|PeriodicExamination|PatientProtocol|SickLeave} (hepsi Yeni).

\n\n

Veri modeli

\n

Yeni tablo yok. Tanım tablosu: Hayır (yeni tablo açılmıyor).

\n

Ana ekran App.Hr.HealthCard — AbpUsers (var), SelectCommandType: 1, anahtar Id (Guid, KeyFieldDbSourceType: 9), IsTenant: true, IsBranch: false, DefaultFilter \"IsDeleted\" = 'false'. Salt okunur alanlar (grid + formun üst grubu): Name, Surname, IdentityNumber, BirthDate, Gender (Male/Female, App.StaticLookup.*), Email, PhoneNumber, DepartmentId (lookup Hr_T_Department), JobPositionId (lookup Hr_T_JobPosition), HireDate, SskNo, BloodType, IsActive. Başlıklar AbpIdentity.Users ekranındaki anahtarlar.

\n

Form sekmeleri — tablo AbpUsers, anahtar Id, alan adı/tip/boy kolonla aynı:

\n\n\n\n\n\n\n
EkranGruplar ve alanlar
App.Hr.HealthCardHistoryFamilyHistory: {Mother|Father|Sibling|Child}HealthStatus nvarchar(16) dxSelectBox (Alive / Disease / Deceased) + …HealthNote nvarchar(512) dxTextBox. PersonalHistory: BloodType nvarchar(16) dxSelectBox (0 Rh+, 0 Rh-, A Rh+, A Rh-, B Rh+, B Rh-, AB Rh+, AB Rh-; anahtar = görünen metin), ChronicDisease nvarchar(512), Immunization: TetanusVaccination, HepatitisVaccination nvarchar(256), OtherVaccination nvarchar(512).
App.Hr.HealthCardLabPhysicalLaboratoryFindings: LabBiologicalAnalysis, LabBlood, LabUrine, LabRadiological, LabRadiologicalPhysiological, LabAudiometry, LabPulmonaryFunction, LabPsychologicalTests, LabOther (nvarchar(256)). PhysicalExamResults: ExamSensoryOrgans, ExamEye, ExamEnt, ExamSkin, ExamCardiovascular, ExamRespiratory, ExamDigestive, ExamUrogenital, ExamMusculoskeletal, ExamNeurological, ExamPsychiatric, ExamOther (nvarchar(256)), ExamBloodPressure, ExamPulse (nvarchar(16)), ExamHeight, ExamWeight (decimal, dxNumberBox).
App.Hr.HealthCardAnamnesisComplaintsQuestion: 7 × Complaint* bit dxCheckBox. DiagnosesQuestion: 10 × Diagnosis* bit dxCheckBox. Anamnesis (3–10. sorular): Hospitalized, HadSurgery, HadWorkAccident, OccupationalDiseaseExam, DisabilityPension, UnderTreatment bit dxCheckBox + her birinin …Note nvarchar(512); Smoking, Alcohol nvarchar(16) dxSelectBox (None / Occasionally / Normal / Quit) + SmokingNote, AlcoholNote.
App.Hr.HealthCardResultFitForWorkJob nvarchar(256), FitForWorkCondition nvarchar(512), FitnessDoctorId Guid, ShiftWorkFit, NightWorkFit bit dxCheckBox, ShiftNightDoctorId Guid. Doktor lookup'ı: SELECT \"Id\" AS \"Key\", \"FullName\" AS \"Name\" FROM \"Hr_T_Doctor\" WHERE \"IsDeleted\" = 'false' AND \"IsActive\" = 'true' AND \"TenantId\" = '@TENANTID' ORDER BY \"FullName\".
\n

Alan başlıkları var olan Abp.Identity.User.HealthCard.{FieldName} anahtarlarıdır; grup başlıkları Abp.Identity.User.HealthCard.{FamilyHistory|PersonalHistory|Immunization|LaboratoryFindings|PhysicalExamResults|ComplaintsQuestion|DiagnosesQuestion|Anamnesis}. Durum seçeneklerinin başlıkları var olan App.StaticLookup.{Alive|Disease|Deceased|None|Occasionally|Normal|Quit} anahtarları.

\n

Liste sekmeleri — var olan tablolar, alanlar kolonla aynı:

\n\n\n\n\n\n
EkranTabloAlanlar
App.Hr.HealthCardPeriodicExaminationAdm_T_UserPeriodicExaminationExamDate (zorunlu), Examination nvarchar(256) zorunlu, Result nvarchar(512), DoctorId (Hr_T_Doctor), DoctorDiplomaNo nvarchar(50) salt okunur; UserId gizli, ilişki kolonu.
App.Hr.HealthCardPatientProtocolAdm_T_UserPatientProtocolSequenceNo int, ProtocolDate zorunlu, ProtocolType nvarchar(32) zorunlu (Disease / WorkAccident / OccupationalDisease / Control / Other), ProtocolResult nvarchar(32) (TreatmentDischarged / Rest / Referral), RestDays int, ReferralPlace nvarchar(256), DoctorId; UserId gizli.
App.Hr.HealthCardSickLeaveAdm_T_UserSickLeaveStartDate, EndDate zorunlu, Days int zorunlu, SickLeaveType nvarchar(32) zorunlu (Disease / WorkAccident / OccupationalDisease / Maternity), Institution, Clinic nvarchar(256), SickLeaveReason nvarchar(512); UserId gizli.
\n

Üç tabloda kiracı + audit + soft delete kolonları var (TenantId, Creation*, LastModification*, IsDeleted, Deleter*); silme soft delete.

\n\n

Alt form ağacı

\n\n\n\n\n\n\n\n\n\n
SekmeHedef ListFormCodeTabTypeMenüİlişkiEkle / Düzenle / SilYetki yolu
Family / Personal HistoryApp.Hr.HealthCardHistoryFormMenüsüzId → Id✓ / ✓ / –App.Hr › App.Hr.HealthCard › App.Hr.HealthCardHistory
Laboratory - Physical ExaminationApp.Hr.HealthCardLabPhysicalFormMenüsüzId → Id✓ / ✓ / –… › App.Hr.HealthCard › App.Hr.HealthCardLabPhysical
AnamnesisApp.Hr.HealthCardAnamnesisFormMenüsüzId → Id✓ / ✓ / –… › App.Hr.HealthCard › App.Hr.HealthCardAnamnesis
ResultApp.Hr.HealthCardResultFormMenüsüzId → Id✓ / ✓ / –… › App.Hr.HealthCard › App.Hr.HealthCardResult
Periodic ExaminationsApp.Hr.HealthCardPeriodicExaminationListMenüsüzId → UserId✓ / ✓ / ✓… › App.Hr.HealthCard › App.Hr.HealthCardPeriodicExamination
Patient Protocol BookApp.Hr.HealthCardPatientProtocolListMenüsüzId → UserId✓ / ✓ / ✓… › App.Hr.HealthCard › App.Hr.HealthCardPatientProtocol
Sick LeavesApp.Hr.HealthCardSickLeaveListMenüsüzId → UserId✓ / ✓ / ✓… › App.Hr.HealthCard › App.Hr.HealthCardSickLeave
\n

Sekme başlıkları var olan anahtarlar: Abp.Identity.User.HealthCard.{History|LabPhysical|Anamnesis|Result}, App.IdentityManagement.{UserPeriodicExamination|UserPatientProtocol|UserSickLeave}. IsRefresh: true, DbType: 11 (Guid). Alt formlarda widget yok; tek gruplu formlarda (Result ve liste sekmeleri) grup başlığı yazılmaz.

\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. deploy_wizard: HealthCardHistory.json
  2. \n
  3. deploy_wizard: HealthCardLabPhysical.json
  4. \n
  5. deploy_wizard: HealthCardAnamnesis.json
  6. \n
  7. deploy_wizard: HealthCardResult.json
  8. \n
  9. deploy_wizard: HealthCardPeriodicExamination.json
  10. \n
  11. deploy_wizard: HealthCardPatientProtocol.json
  12. \n
  13. deploy_wizard: HealthCardSickLeave.json
  14. \n
  15. deploy_wizard: HealthCard.json
  16. \n
\n\n

Üretime hazır

\n

Evet

MCP

\n

Üretilenler (8 wizard, yeni tablo yok): HealthCardHistory, HealthCardLabPhysical, HealthCardAnamnesis, HealthCardResult (AbpUsers, menüsüz, Form sekmesi, Ekle/Düzenle açık, Sil kapalı) · HealthCardPeriodicExamination, HealthCardPatientProtocol, HealthCardSickLeave (Adm_T_User*, menüsüz, List sekmesi, Ekle/Düzenle/Sil açık, soft delete) · HealthCard (AbpUsers, menülü, yalnızca Detay butonu, 7 alt form sekmesi, Toplam/Aktif/Pasif widget'ı).

\n

Menü / yetki: İnsan Kaynakları › Sağlık Kartları (App.Hr.HealthCard, FcInspection, /admin/list/App.Hr.HealthCard). Alt form yetkileri App.Hr.HealthCard altına taşınır. Yetkiler hiçbir role otomatik atanmaz.

\n

Analizden sapma / varsayımlar:

\n\n

DB Migrate bekleyen wizard'lar: HealthCardHistory, HealthCardLabPhysical, HealthCardAnamnesis, HealthCardResult, HealthCardPeriodicExamination, HealthCardPatientProtocol, HealthCardSickLeave, HealthCard. Demo veri yok.

" } ] }