<?php
$data=is_array($profileData??null)?$profileData:[];$availability=is_array($data['availability']??null)?$data['availability']:[];$summary=is_array($data['summary']??null)?$data['summary']:[];$rows=is_array($data['rows']??null)?$data['rows']:[];$filters=is_array($filters??null)?$filters:[];$total=(int)($data['total']??0);$page=max(1,(int)($data['page']??1));$perPage=max(1,(int)($data['per_page']??50));$totalPages=max(1,(int)ceil($total/$perPage));$status=(string)($availability['status']??'PENDING_5D');$isAr=current_lang()==='ar';$tr=static function(string $en,string $ar)use($isAr):string{return $isAr?$ar:$en;};$isDeveloper=(new \App\Services\DiarAccessPolicy())->isDeveloper();
$readinessLabels=['READY'=>$tr('Ready','جاهز'),'LIMITED'=>$tr('Limited history','تاريخ محدود'),'SPARSE'=>$tr('Sparse history','تاريخ متفرق'),'NO_ACTIVITY'=>$tr('No recent activity','لا يوجد نشاط حديث')];$number=static function($value,int $decimals=2):string{return $value===null||$value===''?'—':number_format((float)$value,$decimals);};
$availabilityLabel=$status==='LIVE'?$tr('Expected patterns available','الأنماط المتوقعة متاحة'):($status==='EMPTY_READY'?$tr('No current patterns returned','لم تُرجع أنماط حالية'):$tr('Expected patterns are being prepared','يجري إعداد الأنماط المتوقعة'));
$grain=$tr('Hospital + Branch + Store + Item + Recorded unit + Movement type + Inventory effect','المستشفى + الفرع + المخزن + الصنف + الوحدة المسجلة + نوع الحركة + أثر المخزون');
?>
<section class="diar-command-page diar-ui-r3 diar-profile-workspace diar-functional-page diar-production-r273"><?php include __DIR__.'/_tabs.php';?><?php include __DIR__.'/_context.php';?>
<header class="diar-subpage-hero profile-hero"><div class="hero-copy"><span class="eyebrow"><?= e($tr('EXPECTED MEDICATION MOVEMENT PATTERNS','الأنماط المتوقعة لحركات الأدوية')) ?></span><h1><?= e($tr('Expected movement patterns','الأنماط المتوقعة للحركة')) ?></h1><p><?= e($tr('Historical patterns describe the usual quantity, value and frequency of each recorded medication movement.','تصف الأنماط التاريخية الكمية والقيمة والتكرار المعتاد لكل حركة دوائية مسجلة.')) ?></p></div><aside class="hero-boundary"><span class="boundary-label"><?= e($tr('Availability','حالة التوافر')) ?></span><strong><?= e($availabilityLabel) ?></strong><span><?= e($tr('Patterns use completed historical activity and remain separate for every exact movement.','تعتمد الأنماط على النشاط التاريخي المكتمل وتظل منفصلة لكل حركة دقيقة.')) ?></span></aside></header>
<?php if(!empty($loadError)):?><div class="diar-command-alert error"><?= e($loadError) ?></div><?php endif;?>
<section class="diar-command-section baseline-explainer"><div class="section-heading"><div><span class="section-kicker"><?= e($tr('HOW TO READ THIS PAGE','كيفية قراءة هذه الصفحة')) ?></span><h2><?= e($tr('The usual pattern for each movement','النمط المعتاد لكل حركة')) ?></h2><p><?= e($tr('Each row represents one hospital, branch, store, item, recorded unit, movement type and inventory effect.','يمثل كل صف مستشفى وفرعًا ومخزنًا وصنفًا ووحدة مسجلة ونوع حركة وأثر مخزون محددًا.')) ?></p></div></div><div class="metric-guide-grid"><article><span>01</span><strong><?= e($tr('Usual level','المستوى المعتاد')) ?></strong><p><?= e($tr('Typical daily quantity or value.','الكمية أو القيمة اليومية المعتادة.')) ?></p></article><article><span>02</span><strong><?= e($tr('Normal variation','التغير الطبيعي')) ?></strong><p><?= e($tr('How much the movement usually changes.','مقدار تغير الحركة في المعتاد.')) ?></p></article><article><span>03</span><strong><?= e($tr('Frequency','التكرار')) ?></strong><p><?= e($tr('How often the movement normally occurs.','مدى تكرار الحركة في المعتاد.')) ?></p></article><article><span>04</span><strong><?= e($tr('Inactivity period','فترة عدم النشاط')) ?></strong><p><?= e($tr('How long the movement may remain inactive.','المدة التي قد تتوقف فيها الحركة.')) ?></p></article></div><div class="clarity-note"><strong><?= e($tr('Important:','مهم:')) ?></strong><span><?= e($tr('A historical pattern supports review; it is not an accusation or a confirmed finding.','يدعم النمط التاريخي المراجعة، ولا يمثل اتهامًا أو نتيجة مؤكدة.')) ?></span></div></section>
<?php if($status==='PENDING_5D'):?><div class="diar-command-alert warning profile-pending-alert"><strong><?= e($tr('Expected movement patterns are still being prepared for this hospital.','لا يزال إعداد الأنماط المتوقعة جاريًا لهذا المستشفى.')) ?></strong><span><?= e($tr('No estimated or placeholder values are displayed. The page will populate after the historical preparation is complete.','لا تُعرض قيم تقديرية أو افتراضية، وستظهر البيانات بعد اكتمال التجهيز التاريخي.')) ?></span><?php if($isDeveloper&&!empty($availability['missing_columns'])):?><details class="diar-technical-details"><summary><?= e($tr('Technical readiness details','تفاصيل الجاهزية الفنية')) ?></summary><code><?= e(implode(', ',(array)$availability['missing_columns'])) ?></code></details><?php endif;?></div><?php elseif($status==='EMPTY_READY'):?><div class="diar-command-alert info"><strong><?= e($tr('No current patterns were returned.','لم تُرجع أنماط حالية.')) ?></strong><span><?= e($tr('Review the latest completed processing date before using the filters.','راجع آخر تاريخ معالجة مكتمل قبل استخدام الفلاتر.')) ?></span></div><?php endif;?>
<div class="diar-command-kpis profile-kpis"><article><span><?= e($tr('Patterns','الأنماط')) ?></span><strong><?= number_format((int)($summary['profile_count']??0)) ?></strong><small><?= e($tr('Current records','السجلات الحالية')) ?></small></article><article class="readiness-ready"><span><?= e($tr('Ready','جاهز')) ?></span><strong><?= number_format((int)($summary['ready_count']??0)) ?></strong><small><?= e($tr('Strong historical coverage','تغطية تاريخية قوية')) ?></small></article><article class="readiness-limited"><span><?= e($tr('Limited','محدود')) ?></span><strong><?= number_format((int)($summary['limited_count']??0)) ?></strong><small><?= e($tr('Limited historical coverage','تغطية تاريخية محدودة')) ?></small></article><article class="readiness-sparse"><span><?= e($tr('Sparse','متفرق')) ?></span><strong><?= number_format((int)($summary['sparse_count']??0)) ?></strong><small><?= e($tr('Sparse historical activity','نشاط تاريخي متفرق')) ?></small></article><article><span><?= e($tr('No recent activity','لا يوجد نشاط حديث')) ?></span><strong><?= number_format((int)($summary['no_activity_count']??0)) ?></strong><small><?= e($tr('Retained for comparison','محفوظ للمقارنة')) ?></small></article></div>
<section class="diar-command-section profile-contract-panel"><div class="section-heading"><div><h2><?= e($tr('Pattern coverage','نطاق النمط')) ?></h2><p><?= e($tr('Patterns remain separate at the following level of analysis.','تظل الأنماط منفصلة وفق مستوى التحليل التالي.')) ?></p></div><span class="profile-live-chip status-<?= e(strtolower($status)) ?>"><?= e($availabilityLabel) ?></span></div><div class="profile-contract-grid"><div><span><?= e($tr('Hospital','المستشفى')) ?></span><strong><?= e((string)($data['site']??'—')) ?></strong></div><div><span><?= e($tr('As of','حتى تاريخ')) ?></span><strong><?= e((string)($summary['as_of_date']?:'—')) ?></strong></div><div class="wide"><span><?= e($tr('Level of analysis','مستوى التحليل')) ?></span><strong><?= e($grain) ?></strong></div></div><?php if($isDeveloper):?><details class="diar-technical-details"><summary><?= e($tr('Technical traceability','التتبع الفني')) ?></summary><dl><div><dt>Internal status</dt><dd><?= e($status) ?></dd></div><div><dt>Processing run</dt><dd><?= (int)($summary['latest_stat_run_id']??0)>0?number_format((int)$summary['latest_stat_run_id']):'—' ?></dd></div><div><dt>Package</dt><dd><?= e((string)($summary['package_version']?:'—')) ?></dd></div><div><dt>Method</dt><dd><?= e((string)($summary['profile_method_version']?:'—')) ?></dd></div></dl></details><?php endif;?></section>
<form class="diar-profile-filters" method="get" action="index.php"><input type="hidden" name="page" value="diar-statistical-profiles"><input type="hidden" name="lang" value="<?= e(current_lang()) ?>"><div class="field"><label><?= e($tr('Hospital','المستشفى')) ?></label><select name="site"><?php foreach((array)$allowedSites as $site):?><option value="<?= e((string)$site) ?>" <?= (string)($filters['site']??'')===(string)$site?'selected':'' ?>><?= e((string)$site) ?></option><?php endforeach;?></select></div><div class="field"><label><?= e($tr('Readiness','الجاهزية')) ?></label><select name="readiness"><option value=""><?= e($tr('All readiness levels','كل مستويات الجاهزية')) ?></option><?php foreach($readinessLabels as $code=>$label):?><option value="<?= e($code) ?>" <?= (string)($filters['readiness']??'')===$code?'selected':'' ?>><?= e($label) ?></option><?php endforeach;?></select></div><div class="field field-search"><label><?= e($tr('Item, store or branch','الصنف أو المخزن أو الفرع')) ?></label><input name="q" value="<?= e((string)($filters['q']??'')) ?>" placeholder="<?= e($tr('Enter an exact code','أدخل كودًا دقيقًا')) ?>"></div><?php foreach(['branch'=>$tr('Branch','الفرع'),'store'=>$tr('Store','المخزن'),'item'=>$tr('Item','الصنف'),'unit'=>$tr('Recorded unit','الوحدة المسجلة'),'transcode'=>$tr('Movement type','نوع الحركة'),'effect'=>$tr('Inventory effect','أثر المخزون')] as $key=>$label):?><div class="field"><label><?= e($label) ?></label><input inputmode="numeric" name="<?= e($key) ?>" value="<?= e((string)($filters[$key]??'')) ?>"></div><?php endforeach;?><div class="filter-actions"><button class="primary-button" type="submit"><?= e($tr('Apply filters','تطبيق الفلاتر')) ?></button><a class="secondary-button" href="<?= e(url_to('diar-statistical-profiles',['site'=>(string)($data['site']??'')])) ?>"><?= e($tr('Reset','إعادة ضبط')) ?></a></div></form>
<section class="diar-command-section profile-results-section"><div class="section-heading"><div><h2><?= e($tr('Expected movement patterns','الأنماط المتوقعة للحركة')) ?></h2><p><?= number_format($total) ?> <?= e($tr('matching patterns','نمطًا مطابقًا')) ?></p></div><strong><?= e((string)($summary['last_updated_at']?:'—')) ?></strong></div><?php if($rows===[]):?><div class="diar-empty-state"><strong><?= e($status==='PENDING_5D'?$tr('Expected patterns are not available yet.','الأنماط المتوقعة غير متاحة بعد.'):$tr('No patterns match the selected filters.','لا توجد أنماط تطابق الفلاتر المحددة.')) ?></strong><span><?= e($tr('Only completed historical records are shown.','لا تُعرض إلا السجلات التاريخية المكتملة.')) ?></span></div><?php else:?><div class="diar-table-wrap profile-table-wrap"><table class="diar-data-table profile-table"><thead><tr><th><?= e($tr('Scope','النطاق')) ?></th><th><?= e($tr('Movement','الحركة')) ?></th><th><?= e($tr('Readiness','الجاهزية')) ?></th><th><?= e($tr('Activity','النشاط')) ?></th><th><?= e($tr('Quantity pattern','نمط الكمية')) ?></th><th><?= e($tr('Frequency','التكرار')) ?></th><th><?= e($tr('Value pattern','نمط القيمة')) ?></th><?php if($isDeveloper):?><th><?= e($tr('Technical details','تفاصيل فنية')) ?></th><?php endif;?></tr></thead><tbody><?php foreach($rows as $row):$ready=(string)($row['readiness_code']??'');$effect=(string)($row['storetranseffect']??'');$effectLabel=$effect==='1'?$tr('Inbound','وارد'):($effect==='2'?$tr('Outbound','صادر'):$tr('Neutral','محايد'));?><tr><td><strong><?= e((string)($row['hospital_code']??'')) ?></strong><small><?= e($tr('Branch','فرع')) ?> <?= e((string)($row['branch_id']??'')) ?> · <?= e($tr('Store','مخزن')) ?> <?= e((string)($row['store_code']??'')) ?><br><?= e($tr('Item','صنف')) ?> <?= e((string)($row['item_code']??'')) ?> · <?= e($tr('Unit','وحدة')) ?> <?= e((string)($row['raw_unit_code']??'')) ?></small></td><td><strong><?= e($tr('Type','نوع')) ?> <?= e((string)($row['storetranscode']??'')) ?></strong><span class="effect-badge effect-<?= e($effect) ?>"><?= e($effectLabel) ?></span></td><td><span class="readiness-badge readiness-<?= e(strtolower($ready)) ?>"><?= e($readinessLabels[$ready]??$ready) ?></span><small><?= e($tr('As of','حتى')) ?> <?= e((string)($row['as_of_date']??'—')) ?><br><?= e($tr('Last activity','آخر نشاط')) ?> <?= e((string)($row['last_activity_date']??'—')) ?></small></td><td><strong><?= number_format((int)($row['active_days']??0)) ?> / <?= number_format((int)($row['observation_days']??0)) ?></strong><small><?= e($tr('Recent active days','أيام النشاط الحديثة')) ?> <?= number_format((int)($row['recent_active_days']??0)) ?></small></td><td><strong><?= e($tr('Upper historical range','النطاق التاريخي الأعلى')) ?> <?= $number($row['qty_p95']??null) ?></strong><small><?= e($tr('Median','الوسيط')) ?> <?= $number($row['qty_median']??null) ?> · <?= e($tr('Average','المتوسط')) ?> <?= $number($row['qty_mean']??null) ?></small></td><td><strong><?= e($tr('Upper transaction range','نطاق التكرار الأعلى')) ?> <?= $number($row['txn_p95']??null) ?></strong><small><?= e($tr('Average transactions','متوسط المعاملات')) ?> <?= $number($row['txn_mean']??null) ?></small></td><td><strong><?= e($tr('Upper historical value','القيمة التاريخية العليا')) ?> <?= $number($row['value_p95']??null) ?></strong><small><?= e($tr('Median','الوسيط')) ?> <?= $number($row['value_median']??null) ?></small></td><?php if($isDeveloper):?><td><details class="diar-technical-details"><summary><?= e($tr('Show','عرض')) ?></summary><small><?= e((string)($row['source_db']??'')) ?> · Run <?= number_format((int)($row['stat_run_id']??0)) ?> · Ruleset <?= number_format((int)($row['ruleset_version_id']??0)) ?></small><code><?= e((string)($row['profile_hash']??'')) ?></code></details></td><?php endif;?></tr><?php endforeach;?></tbody></table></div><?php endif;?><?php if($totalPages>1):?><nav class="pagination"><?php $base=$filters;$base['per_page']=$perPage;if($page>1):$q=$base;$q['p']=$page-1;?><a href="<?= e(url_to('diar-statistical-profiles',$q)) ?>"><?= e($tr('Previous','السابق')) ?></a><?php endif;?><span><?= e($tr('Page','صفحة')) ?> <?= number_format($page) ?> / <?= number_format($totalPages) ?></span><?php if($page<$totalPages):$q=$base;$q['p']=$page+1;?><a href="<?= e(url_to('diar-statistical-profiles',$q)) ?>"><?= e($tr('Next','التالي')) ?></a><?php endif;?></nav><?php endif;?></section></section>
