داده های FHIR را از برنامه Android با OHS و Google Cloud مدیریت کنید

1. معرفی

در این نرم‌افزار، یاد می‌گیریم که چگونه از OHS (Open Health Stack) و Google Cloud Healthcare API برای ایجاد راه‌حل‌های بهداشتی نوآورانه ایمن، مقیاس‌پذیر و سازگار استفاده کنیم. ترکیبی از این ابزارهای قدرتمند به کارکنان و توسعه دهندگان مراقبت های بهداشتی توانایی ایجاد راه حل های مبتنی بر داده را می دهد که می تواند به طور قابل توجهی مراقبت و نتایج بیمار را بهبود بخشد.

ما قصد داریم از قدرت Open Health Stack و Google Cloud Healthcare API در یک برنامه تلفن همراه استفاده کنیم که از Android-FHIR SDK استفاده می کند تا کاربران را قادر سازد سوابق بیماران FHIR را در Google Cloud مدیریت کنند.

بیایید به مراحل اجرا بپردازیم.

چیزی که خواهی ساخت

در این اجرا،

  • ما از کتابخانه ضبط داده‌های ساختاریافته برای ارائه یک پرسشنامه و از کتابخانه موتور FHIR برای ذخیره محتوای FHIR پاسخ استفاده خواهیم کرد.
  • سپس داده ها با استفاده از Cloud Healthcare API در فروشگاه Cloud FHIR آپلود می شوند
  • قبل از آپلود، ابتدا خود را با استفاده از Firebase احراز هویت می کنیم

8514f90f016ecfc0.png

نمودار بالا نشان دهنده جریان است. برای توضیح دقیق هر جزء وبلاگ را بخوانید.

2. الزامات

  • مرورگری مانند کروم یا فایرفاکس
  • یک پروژه Google Cloud با فعال کردن صورت‌حساب
  • نسخه اخیر اندروید استودیو
  • یک شبیه ساز Android راه اندازی شده است (شما می توانید از دستگاه اندروید فیزیکی خود نیز استفاده کنید)

پروژه خود را ایجاد کنید

  1. در Google Cloud Console ، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید.
  2. مطمئن شوید که صورتحساب برای پروژه Cloud شما فعال است. با نحوه بررسی فعال بودن صورت‌حساب در پروژه آشنا شوید.
  3. فعال کردن API های لازم (BigQuery، Healthcare API)

Cloud Shell را فعال کنید

  1. شما از Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان در حال اجرا در Google Cloud که با bq از قبل بارگذاری شده است:

از Cloud Console، روی Activate Cloud Shell در گوشه سمت راست بالا کلیک کنید:

51622c00acec2fa.png

  1. پس از اتصال به Cloud Shell، باید ببینید که قبلا احراز هویت شده اید و پروژه از قبل روی ID پروژه شما تنظیم شده است، اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید:
gcloud config set project <YOUR_PROJECT_ID>

برای دستورات و استفاده از gcloud به اسناد مراجعه کنید.

3. Healthcare API Setup

  1. اطمینان حاصل کنید که Healthcare API فعال است: به کتابخانه Google Cloud Console API بروید، Healthcare API را جستجو کنید، روی ENABLE کلیک کنید و API را انجام دهید و حساب خدمات بهداشت و درمان را به پروژه اضافه کنید.
  2. اعطای مجوزهای مدیریت BigQuery به حساب سرویس برای اعطای مجوز، دستور gcloud زیر را در ترمینال Cloud Shell اجرا کنید:
gcloud projects add-iam-policy-binding <<YOUR_PROJECT_ID>> \
--member=serviceAccount:service-<<PROJECT_NUMBER>>@gcp-sa-healthcare.iam.gserviceaccount.com  --role=roles/bigquery.admin

توجه: می‌توانید PROJECT_ID و PROJECT_NUMBER خود را از کنسول پیدا کنید، برای شناسایی به سند مراجعه کنید.

مجموعه داده مراقبت های بهداشتی را ایجاد کنید

در Cloud Shell، دستور زیر را برای ایجاد مجموعه داده Healthcare اجرا کنید:

gcloud beta healthcare datasets create <<DATASET_ID>> --location=us-central1

مکان را روی یک منطقه تنظیم کنید.

FHIR Datastore را ایجاد کنید

در Cloud Shell، دستور زیر را برای ایجاد دیتا استور FHIR اجرا کنید:

gcloud beta healthcare fhir-stores create <<FHIR_STORE>> \
  --dataset=<<DATASET_ID>> --location=us-central1 --version=r4

مکان را روی یک منطقه تنظیم کنید.

4. راه اندازی BigQuery و جریان

این شامل ذخیره داده‌های FHIR Store در BigQuery Dataset می‌شود تا بتوان با استفاده از قدرت BigQuery و BQML آن‌ها را پرس و جو کرد، برنامه‌ریزی و آنالیز کرد.

مجموعه داده BigQuery را ایجاد کنید

مجموعه داده BigQuery مجموعه ای از جداول است. همه جداول در یک مجموعه داده در یک مکان داده ذخیره می شوند. همچنین می‌توانید کنترل‌های دسترسی سفارشی را برای محدود کردن دسترسی به مجموعه داده و جداول آن ضمیمه کنید.

در Cloud Shell دستور زیر را اجرا کنید:

bq mk --location=us-central1 --dataset <<PROJECT_ID>>:<<BQ_DATASET>>

مکان را روی یک منطقه تنظیم کنید.

ایجاد BigQuery Streaming

هر بار که یک منبع FHIR در یک فروشگاه FHIR ایجاد می شود، به روز می شود، وصله می شود یا حذف می شود، برای صادرات تغییرات منبع به BigQuery نیاز به جریان است. هر فروشگاه مجاز است حداکثر 10 پیکربندی جریان داشته باشد.

  1. به کنسول Google Cloud Healthcare، صفحه مرورگر بروید
  2. روی DATASET جدید ایجاد شده کلیک کنید
  3. روی DATA STORE جدید ایجاد شده کلیک کنید 7acaa364337086aa.png
  4. روی افزودن پیکربندی جریان جدید کلیک کنید

caa2cc881d3406aa.png

  1. مجموعه داده BigQuery تازه ایجاد شده را از لیست انتخاب کنید، Schema را به عنوان "Analytics V2" و نوع منبع "Patient" را از لیست انتخاب کنید (شما می توانید انواع مختلفی از منابع را انتخاب کنید) و روی Done کلیک کنید.

1e038c694fcca1ef.png

خودشه. شما آماده هستید که داده های فروشگاه FHIR را ذخیره کنید و آن را به BigQuery پخش کنید.

5. توابع ابری (داده‌های R4 را با استفاده از Healthcare API در FHIR Datastore بنویسید)

Cloud Functions به شما این امکان را می دهد که به راحتی کد خود را بنویسید و به روشی بدون سرور در فضای ابری مستقر کنید. از نظر فناوری و پشتیبانی زبان، مقیاس‌پذیر، قابل پرداخت، رویداد محور و باز است. برای ویژگی های بیشتر به مستندات مراجعه کنید.

تابعی که خواهیم نوشت قصد دارد داده هایی را که با فرمت FHIR R4 وارد فروشگاه داده FHIR با استفاده از Cloud Healthcare API می شوند، احراز هویت کند و بنویسد. برای ایجاد تابع Cloud:

  1. به Cloud Functions بروید و روی CREATE FUNCTION کلیک کنید
  2. نام را روی fhir-datastore-proxy، منطقه را روی us-central1 و گزینه Authentication را روی "نیاز به احراز هویت" تنظیم کنید.
  3. تنظیمات زمان اجرا، ساخت، اتصالات و امنیت را گسترش دهید. شما پنج متغیر محیط Runtime اضافه خواهید کرد:

نام: CLOUD_FUNCTIONS_ENDPOINT | مقدار: نقطه پایانی URL تابع شما این را در بلوک احراز هویت در بالا مشاهده خواهید کرد و به این شکل خواهد بود: https://us-central1-PROJECT_ID.cloudfunctions.net/fhir-datastore-proxy

نام: PROJECT_ID | ارزش: شناسه پروژه شما

نام: DATASET_LOCATION | ارزش: مکان FHIR Datastore شما

نام: DATASET_ID | مقدار: شناسه Healthcare Datastore

نام: FHIR_STORE_ID | مقدار: شناسه فروشگاه FHIR

  1. Next را فشار دهید تا به صفحه بعدی بروید، جایی که کد خود را اضافه می کنیم
  2. اکنون باید یک ویرایشگر درون خطی نمایش داده شود، جاوا 17 را به عنوان زبان انتخاب کنید و به کلاس HelloHttpFunction.java بروید. نام آن را به FhirDatastoreProxy.java تغییر دهید. فراموش نکنید که نام نقطه ورودی را نیز به gcfv2.FhirDatastoreProxy تغییر دهید
  3. کد را از مخزن کپی کرده و در ویرایشگر درون خطی قرار دهید
  4. به فایل pom.xml بروید و فایل pom موجود در مخزن را در ویرایشگر درون خطی کپی کنید
  5. روی DEPLOY کلیک کنید تا تابع شما به زودی ایجاد و اجرا شود

توجه داشته باشید:

  1. Cloud Healthcare API استفاده شده در این تابع از Application Default Credential برای احراز هویت درخواست هایی که به Healthcare API می آیند استفاده می کند.
  2. URL تابع مستقر را ذخیره کنید تا بتوانید از برنامه اندروید فراخوانی کنید تا کنون ما تمام قطعات مورد نیاز برای برنامه Android را ایجاد کرده ایم تا با استفاده از Healthcare API مستقلاً داده های FHIR را در BigQuery بنویسد. حالا بیایید مطمئن شویم که همه قطعات به هم متصل هستند و API در ارسال پرسشنامه فراخوانی شده است.

6. پروژه Android و راه اندازی Firebase

ما از نسخه اخیر Android Studio و یک شبیه ساز Android راه اندازی شده استفاده خواهیم کرد (شما می توانید از دستگاه اندروید فیزیکی خود نیز استفاده کنید). پس از آماده شدن مراحل زیر را دنبال کنید:

  1. کلون کردن مخزن FHIR App Examples: https://github.com/google/fhir-app-examples
  2. Android Studio را باز کنید، Import Project (Gradle، Eclipse ADT، و غیره) را انتخاب کنید و پوشه cloudfunction/ را از کد منبعی که قبلا دانلود کرده اید انتخاب کنید. app/google-services.json را باز کنید. خالی است و باید پر شود.

یک کلید SHA-1 با استفاده از ./gradlew signingReport ایجاد کنید و فیلد SHA1 را در زیر نوع اشکال زدایی یادداشت کنید.

با استفاده از Firebase Console (مراحل 1 و 2) را با استفاده از Firebase Console، برنامه را به Firebase اضافه کنید. در قسمت "Debug signing Certificate SHA-1" مقدار مرحله قبل را پر کنید

google-services.json را دانلود کنید و محتوا را از Firebase در فایل خالی موجود در پوشه برنامه جایگزین کنید

Firebase SDK قبلاً در فایل های build Gradle اضافه شده است

  1. FhirApplication.kt را باز کنید و فیلد baseUrl را روی URL تابع Cloud خود تنظیم کنید.
  2. "Sync your project with Gradle files" را از نوار ابزار Android Studio انتخاب کنید

ما اکنون قسمت راه اندازی و شامل وابستگی پیاده سازی را تکمیل کرده ایم.

7. تنظیم و پاسخ پرسشنامه

ما قبلاً با راه اندازی پرسشنامه در مخزن راه اندازی شده ایم. اما بیایید به کدها بپردازیم:

  1. مطمئن شوید که FragmentContainerView در داخل ConstraintLayout در فایل app/src/main/res/layout/activity_main.xml وجود دارد.
  2. اطمینان حاصل کنید که QuestionnaireFragment دارای یک پرسشنامه FHIR با کد JSON برای ارائه قطعه است.

در این مورد ما از json - " new-patient-registration-paginated.json " برای رندر کردن قطعه استفاده خواهیم کرد. بررسی فایل‌های MainActivity.kt ، AddPatientFragment.kt و AddPatientViewModel.kt

اکنون که قطعه، json و مدل را تأیید کردیم، ادامه دهید و برنامه را اجرا کنید و سعی کنید پاسخ فیلدهای پرسشنامه را وارد کنید.

شما متوجه اعتبار رشته، تاریخ، فیلدهای عددی و سایر شرایط خواهید شد

می توانید برنامه را اجرا کرده و گزارش را بررسی کنید تا رکورد ایجاد شده خود را ببینید

9e1bb440074f1a88.png

در اینجا می توانید درباره استفاده از قطعات بیشتر بیاموزید. این تقریباً برای بخش پرسشنامه و تنظیم پاسخ است.

8. نمایش نتایج FHIRStore و BigQuery Dataset

اکنون که همه ما با تنظیمات و به‌روزرسانی آماده‌ایم، روی «Sync Project with Gradle Files» کلیک کنید. پس از تکمیل،

  1. برنامه را در شبیه ساز اندروید اجرا کنید و بارگیری پرسشنامه خود را تماشا کنید
  2. به سوالات پاسخ دهید و روی ارسال کلیک کنید
  3. باید پیام "بیمار ذخیره شده است" را در برنامه مشاهده کنید

مشاهده نتایج فروشگاه FHIR

به کنسول Google Cloud Healthcare FHIRViewer بروید

1064f03b4e1e45f5.png

FHIR Store خود را انتخاب کنید، پرس و جو کنید و RUN SEARCH را بزنید و باید نتایج جستجو را درست در زیر ببینید. 37a070480a06362c.png

مشاهده نتیجه مجموعه داده BigQuery

به کنسول Google Cloud BigQuery بروید و در پنجره Explorer، به مجموعه داده ای که برای این پروژه ایجاد کرده اید بروید.

7c483ec6d578b8cd.png

روی Preview کلیک کنید و باید همان تعداد و داده های حاصل را در Healthcare FHIR Store در BigQuery Dataset مشاهده کنید.

faafeae4a837a41c.png

اکنون می توانید BigQuery SQL، Analytics و ML را روی داده های FHIR که به تازگی در مجموعه داده های ابری ذخیره کرده اید، انجام دهید.

9. قابلیت جستجو و آفلاین

برای اطمینان از قابلیت آفلاین در برنامه Android FHIR SDK مجهز به OHS، حتماً از دستورالعمل طراحی پیروی کنید که باید در اجرای ما در اینجا فعال شود.

برای جستجوی منابع FHIR دو راه داریم:

  1. FHIR Viewer در Google Cloud Console
  2. روش جستجوی FHIR با استفاده از درخواست‌های GET یا POST

10. برنامه نمایشی

اکنون که برنامه ما توسعه یافته است، بیایید با آن بازی کنیم و نتیجه را در فضای ابری ببینیم.

11. پاکسازی کنید

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این پست، این مراحل را دنبال کنید:

  1. در کنسول Google Cloud، به صفحه مدیریت منابع بروید
  2. در لیست پروژه، پروژه ای را که می خواهید حذف کنید انتخاب کنید و سپس روی Delete کلیک کنید
  3. در محاوره، شناسه پروژه را تایپ کنید و سپس روی Shut down کلیک کنید تا پروژه حذف شود

12. تبریک می گویم

تبریک می گویم! در این پروژه، ما با موفقیت یک برنامه اندرویدی برای ذخیره و پرس و جو داده های Patient FHIR در فروشگاه مراقبت سلامت ابری FHIR و مجموعه داده BigQuery با استفاده از Cloud Healthcare API تنها در 7 مرحله ایجاد کرده ایم:

  1. برنامه اندروید را راه اندازی کنید
  2. Google Cloud Healthcare API را تنظیم کنید
  3. مجموعه داده مراقبت های بهداشتی و داده های FHIR را ایجاد کرد
  4. مجموعه داده BigQuery ایجاد کرد
  5. یک جریان BigQuery را برای نوشتن داده‌های FHIR Datastore در مجموعه داده BigQuery پیکربندی کرد.
  6. یک تابع ابری برای نوشتن داده های R4 در FHIR Datastore مستقر کرد
  7. عملکردهای ابری فعال شده از برنامه Android در ارسال پاسخ پرسشنامه

اکنون که مراحل مشخص شده‌اند، با خیال راحت همان مراحل را برای همگام‌سازی ویرایش FHIR بیمار در فضای ابری امتحان کنید.