از نسخه 2. 20 ما پشتیبانی از یک استاندارد بین المللی برای تبادل داده های انبوه به نام ADX را گنجانده ایم. ADX توسط کمیته تحقیقات کیفیت و سلامت عمومی IHE (یکپارچه سازی شرکت مراقبت های بهداشتی) توسعه یافته و نگهداری می شود. صفحه ویکی مربوط به فعالیت QRPH را می توان در wiki. ihe. net یافت. ADX هنوز در حال توسعه فعال است و اکنون برای اجرای آزمایشی منتشر شده است. توجه داشته باشید که آنچه در حال حاضر در DHIS2 پیادهسازی میشود، قابلیت خواندن و نوشتن دادههای قالببندی شده adx است، یعنی آنچه به عنوان بازیگران مصرفکننده محتوا و تولیدکننده محتوا در نمایه ADX توصیف میشود.
ساختار یک پیام داده ADX کاملاً شبیه به چیزی است که ممکن است قبلاً از داده های DXF 2 که قبلاً توضیح داده شد با آن آشنا باشید. چند تفاوت مهم وجود دارد. ما این تفاوت ها را با اشاره به یک مثال کوچک شرح خواهیم داد:
1. 23. 1 عنصر ریشه adx
عنصر ریشه adx تنها یک ویژگی اجباری دارد که همان مهر زمانی صادر شده است. همانند سایر عناصر adx، طرحواره از این جهت توسعه پذیر است که ویژگی های خاص برنامه اضافی را محدود نمی کند.
1. 23. 2 عنصر گروه
برخلاف dxf2، adx نیاز دارد که مقادیر داده بر اساس orgUnit، period و dataSet گروه بندی شوند. مثال بالا یک گزارش داده برای مجموعه داده "(TB/HIV) VCCT" از پایگاه داده آزمایشی آنلاین را نشان می دهد. این مثال از کدها به عنوان شناسه به جای uidهای dhis2 استفاده می کند. هنگام استفاده از adx کدها شکل ترجیحی شناسه هستند.
ویژگیهای orgUnit، period و dataSet در adx اجباری هستند. عنصر گروه ممکن است دارای ویژگی های اضافی باشد. در اجرای DHIS2 ما، هر ویژگی اضافی به سادگی به واردکننده اصلی منتقل می شود. این بدان معنی است که تمام ویژگی هایی که در حال حاضر در dxf2 معنی دارند (مانند fullDate در مثال بالا) می توانند در adx استفاده شوند و به همین ترتیب پردازش می شوند.
تفاوت قابل توجه بین adx و dxf2 در نحوه کدگذاری دوره ها است. Adx به شدت از ISO8601 استفاده می کند و دوره گزارش را به صورت (تاریخ|تاریخ)/(مدت زمان) رمزگذاری می کند. بنابراین دوره در مثال بالا یک دوره 1 ماهه (P1M) است که از 01-06-2015 شروع می شود. بنابراین، دادههای ژوئن 2015 است. نمادگذاری کمی پرمخاطبتر است، اما بسیار منعطف است و به ما امکان میدهد از همه انواع دورههای موجود در DHIS2 پشتیبانی کنیم.
1. 23. 3 تعاریف دوره ADX
DHIS2 تعداد محدودی از دوره ها یا مدت زمان واردات را پشتیبانی می کند. دوره ها باید با تاریخی که مدت زمان شروع می شود آغاز شود و به دنبال آن "/" و سپس نماد مدت زمان ذکر شده در جدول. در جدول زیر کلیه انواع دوره های پشتیبانی شده ADX ، همراه با مثال.
نوع دوره | نماد مدت زمان | مثال | مدت زمان |
---|---|---|---|
روزانه | P1D | 2017-10-01/p1m | 01 اکتبر 2017 |
هفتگی | P7D | 2017-10-01/P7D | 01 اکتبر 2017-اکتبر 07-2017 |
ماهانه | P1m | 2017-10-01/p1m | 01 اکتبر 2017-اکتبر 31 2017 |
دو ماهه | P2M | 2017-11-01/p1m | 01 نوامبر 2017-دسامبر 31 2017 |
سه ماه یکبار | P3m | 2017-09-01/p3m | سپتامبر 01 2017-دسامبر 31 2017 |
شش ماهه | P6M | 2017-01-01/p6m | 01 ژانویه 2017-ژوئن 30 2017 |
سالانه | P1ý | 2017-01-01/P1Y | 01 ژانویه 2017-دسامبر 31 2017 |
اکتبر مالی | P1y | 2017-10-01/p1y | 01 اکتبر 2017-سپتامبر 30 2018 |
ماه آوریل | P1y | 2017-04-01/P1Y | 1 آوریل 2017-Mar 31 2018 |
ماه ژوئیه مالی | P1y | 2017-07-01/P1Y | 1 ژوئیه 2017-30 ژوئن 2018 |
1. 23. 4 مقادیر داده
عنصر Datavalue در ADX بسیار شبیه به معادل آن در DXF است. ویژگی های اجباری DataElement و مقدار است. ویژگی های orgunit و دوره در Datavalue ظاهر نمی شوند زیرا در سطح گروه مورد نیاز هستند.
مهمترین تفاوت نحوه نمایش تفکیک است. DXF از CaturePtionCombo برای نشان دادن تفکیک داده ها استفاده می کند. در ADX ، تفکیک (به عنوان مثال AGE_GROUP و جنس) صریحاً به عنوان ویژگی ها بیان می شوند. یکی از محدودیت های مهم در استفاده از ADX این است که دسته بندی های مورد استفاده برای داده های موجود در مجموعه داده باید دارای یک کد اختصاص داده شده به آنها باشد ، و علاوه بر این ، آن کد باید از فرم مناسب باشد که برای استفاده به عنوان یک ویژگی XML مناسب باشد. محدودیت دقیق در یک نام ویژگی XML در استاندارد W3C XML شرح داده شده است - در عمل این به معنای هیچ فضایی است ، شخصیت های غیر آلفانومی غیر از ‘_” وجود ندارد و ممکن است با یک نامه شروع نشود. مثال بالا نمونه هایی از کدهای طبقه بندی خوب ("جنسیت" و "HIV_AGE") را نشان می دهد.
این محدودیت در قالب کدها فقط برای دسته بندی ها اعمال می شود. در حال حاضر کنوانسیون هنگام اختصاص کدها توسط DHIS2 اجرا نمی شود ، اما اگر سعی کنید داده های ADX را وارد کنید و کدهای دسته بندی یا اختصاص داده نمی شوند یا مناسب نیستند ، یک پیام خطای آموزنده دریافت خواهید کرد.
مزایای اصلی استفاده از ابعاد صریح داده های تفکیک شده این است که
سیستم تولید کننده داده ها نیازی به هماهنگی با رده بندی در DHIS2 ندارد.
تولید کننده و مصرف کننده می توانند کدهای خود را با یک منبع معتبر شخص ثالث، مانند سرویس vterminology مطابقت دهند. توجه داشته باشید که در مثال بالا کدهای جنسیت و گروه سنی از لیست کدهای رصدخانه جهانی بهداشت WHO استفاده می کنند.
توجه داشته باشید که این ویژگی ممکن است بسیار مفید باشد، به عنوان مثال هنگام تولید داده های تفکیک شده از یک سیستم EMR، اما ممکن است مواردی وجود داشته باشد که نگاشت دسته بندی OptionCombo آسان تر یا مطلوب تر باشد. اجرای DHIS2 adx وجود یک ویژگی categoryOptionCombo را بررسی میکند و در صورت وجود، از آن ترجیح میدهد تا ویژگیهای ابعاد منفجر شده را ترجیح دهد. به طور مشابه، یک ویژگی ویژگیOptionCombo در عنصر گروه به روش قدیمی پردازش می شود. در غیر این صورت ویژگیOptionCombo را میتوان به عنوان دستههای منفجر شده درست مانند dataValue در نظر گرفت.
در مثال ساده بالا، هر یک از عناصر داده در dataSet ابعاد یکسانی دارند (دسته ترکیبی) بنابراین داده ها کاملاً مستطیل شکل هستند. لازم نیست این مورد باشد. مجموعه دادهها ممکن است حاوی عناصر داده با دستهبندیهای مختلف باشد که منجر به پیام دادهای adx با سمت راست میشود.
1. 23. 5 وارد کردن داده - HTTP POST
DHIS2 یک نقطه پایانی برای داده های POST adx در /api/dataValueSets با استفاده از application/xml+adx به عنوان نوع محتوا نشان می دهد. بنابراین، به عنوان مثال، دستور curl زیر را می توان برای ارسال داده های مثال بالا به سرور نمایشی DHIS2 استفاده کرد:
توجه داشته باشید که پارامترهای پرس و جو با داده های DXF مشابه هستند. نقطه پایانی adx باید تمام پارامترهای DXF موجود را با معنایی مشابه DXF تفسیر کند.
1. 23. 6 صادرات داده - HTTP GET
DHIS2 با استفاده از application/xml+adx به عنوان نوع محتوای پذیرفته شده، یک نقطه پایانی را در معرض مجموعه داده های GET adx در /api/dataValueSets قرار می دهد. بنابراین، برای مثال، دستور curl زیر را می توان برای بازیابی داده های adx استفاده کرد:
توجه داشته باشید که پارامترهای پرس و جو با داده های DXF مشابه هستند. یک تفاوت مهم این است که شناسه های dataSet و orgUnit به جای uid، کد فرض می شوند.