1. Trang chủ
  2. » Công Nghệ Thông Tin

Thiết kế phần mềm hệ thống trên nền tảng android hỗ trợ công tác chăm sóc và phục vụ bệnh nhân tại bệnh viện

106 369 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 106
Dung lượng 1,9 MB

Nội dung

LỜI CẢM ƠN Lời em xin chân thành cảm ơn thầy giáo ThS Nguyễn Thế Dũng, thầy tận tình giúp đỡ, định hướng cho em suốt tình tìm hiểu, nghiên cứu thiết kế đồ án tốt nghiệp Em xin bày tỏ lòng cảm ơn tới ban giám hiệu thầy cô khoa Công nghệ điện tử viễn thông – Trường Đại học Công nghệ thông tin Truyền thông Thầy cô tận tình dạy dỗ tạo điều kiện học tập nghiên cứu năm tháng học nhà trường Cuối xin gửi lời cảm ơn tới gia đình, người bạn bên động viên giúp hoàn thiện tốt đồ án Xin chân thành cảm ơn ! Thái Nguyên, tháng 6/2016 Sinh viên Phạm Văn Phương LỜI CAM ĐOAN Tôi xin cam đoan: Những nội dung đồ án tổng hợp thực Mọi tham khảo đồ án trích dẫn rõ ràng tên tác giả, tên công trình, thời gian địa điểm công bố Mọi chép không hợp lệ vi phạm quy chế đào tạo, hay gian trá, xin chịu hoàn toàn trách nhiệm Sinh viên Phạm Văn Phương MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH SÁCH HÌNH ẢNH DANH SÁCH BẢNG BIỂU LỜI NÓI ĐẦU CHƯƠNG THỰC TRẠNG CÔNG TÁC PHỤC VỤ CHĂM SÓC SỨC KHỎE CÁC BỆNH NHÂN TẠI BỆNH VIỆN 11 1.1 Đặt vấn đề 11 1.2 Mục tiêu 14 1.2.1 Mục tiêu chung 14 1.2.2 Mục tiêu cụ thể 14 1.3 Đối tượng, nội dung phương pháp nguyên cứu 15 1.3.1 Đối tượng nghiên cứu 15 1.3.2 Nội dung nghiên cứu 15 1.3.3 Phương pháp nghiên cứu 15 1.4 Nhận xét kết đạt 15 CHƯƠNG CƠ SỞ LÝ THUYẾT VỀ HỆ ĐIỀU HÀNH ANDROID 2.1 Hệ điều hành Android 2.2 Lịch sử phát triển 17 18 2.3 Các phiên bản19 2.3.1 Các phiên phát hành trước thương mại (2007-2008) 2.3.2 Các phiên thương mại 20 2.4 Kiến trúc hệ điều hành Android 27 2.4.1 Tầng hạt nhân Linux (Linux Kernel layer) 2.4.2 Tầng Library android runtime 28 27 19 17 2.4.3 Tầng Application Framework 29 2.4.4 Tầng Application 29 2.5 Các thành phần ứng dụng Android 30 2.5.1 Activity 30 2.5.2 Intent 32 2.5.3 Service 32 2.5.4 Content Provider34 2.5.5 View 34 2.5.6 Lưu trữ liệu 35 CHƯƠNG CƠ SỞ LÝ THUYẾT VỀ CÔNG NGHỆ TRUYỀN THÔNG KHÔNG DÂY 37 3.1 Giới thiệu truyền thông không dây 37 3.2 Các công nghệ truyền thông không dây dân dụng 38 3.2.1 Hồng ngoại ( IR ) 38 3.2.2 Sóng vô tuyến ( RF ) 38 3.2.3 Wifi 39 3.2.4 Bluetooth 41 3.3 Ứng dụng công nghệ truyền thông không dây 3.4 Thiết bị sử dụng sản phẩm 43 3.4.1 Module thu – phát dải tần 2.4Ghz 3.4.2 Module Bluetooth HC05 43 43 46 CHƯƠNG THIẾT KẾ, XÂY DỰNG PHẦN MỀM HỆ THỐNG CHẠY TRÊN NỀN TẢNG ANDROID 50 4.1 Ý tưởng toán 50 4.2 Mô tả toán 50 4.3 Sơ đồ khối hệ thống 50 4.4 Nguyên lý hoạt động 51 4.5 Thiết kế xây dựng phần mềm hệ thống 52 4.5.1 Môi trường lập trình 4.6 Lưu đồ thuật toán 52 54 4.7 Thiết kế phần mềm 56 4.7.1 Giao diện 56 4.7.2 Giao diện giám sát 57 4.7.3 Giao diện lịch sử57 4.7.4 Giao diện thiết lập 58 4.7.5 Giao diện kết nối Bluetooth 58 4.8 Hình ảnh sản phẩm 59 4.9 Tính sản phẩm 61 4.10 Ưu điểm nhược điểm sản phẩm 61 4.10.1 Ưu điểm 61 4.10.2 Nhược điểm 4.11 Kết luận 62 62 TỔNG KẾT 63 TÀI LIỆU THAM KHẢO 64 PHỤ LỤC 65 DANH SÁCH HÌNH ẢNH Hình 1.1 Phân loại Maslow phản ánh thứ bậc nhu cầu Hình 2.1 Logo biểu tượng hệ điều hành Android 17 Hình 2.2 Chiếc điện thoại chạy Android 17 12 Hình 2.3 Bảng phân phối phiên Android toàn cầu từ tháng 12 2009 Hình 2.4 Phiên Android 1.0 20 Hình 2.5 Phiên Android 1.1 21 Hình 2.6 Phiên Android 1.5 21 Hình 2.7 Phiên Android Donut 1.6 22 Hình 2.8 Phiên Android 2.0 22 Hình 2.9 Phiên Android 2.2 22 Hình 2.10 Phiên Android 2.3 23 Hình 2.11 Phiên Android dành riêng cho máy tính bảng 23 Hình 2.12 Giao diện Android 4.0 Ice Cream Sandwich 24 Hình 2.13 Phiên Androi 4.1 24 Hình 2.14 Giao diện Androi 4.2 Jelly Bean 25 Hình 2.15 Phiên Android 4.3 25 Hình 2.16 Giao diện Andoid 4.4 Kitkat 26 Hình 2.17 Phiên Android 5.0 26 Hình 2.18 Giao diện ứng dụng phiên 6.0 27 Hình 2.19 Kiến trúc hệ điều hành Android 27 Hình 2.20 Lược đồ vòng đời Activity 31 Hình 2.21 Sử dụng Intent để trao đổi thông tin chương trình 32 Hình 2.22 Lược đồ vòng đời Service 33 Hình 2.23 Ví dụ mô hình liệu thông tin số điện thoại máy 34 Hình 3.1 Truyền thông không dây 37 Hình 3.2 Mô hình truyền thông không dây Hình 3.3 Hồng ngoại ứng dụng 38 37 19 Hình 3.4 Sơ đồ khối máy phát sóng vô tuyến đơn giản 39 Hình 3.5 Sơ đồ khối máy thu sóng vô tuyến đơn giản Hình 3.6 Wifi 39 39 Hình 3.7 Các hệ chuẩn Wifi 40 Hình 3.8 Bluetooth 41 Hình 3.9 Ứng dụng công nghệ truyền thông sống 43 Hình 3.10 Sơ đồ khối 44 Hình 3.11 Sơ đồ chức chân 45 Hình 3.12 Modul nRF24L01 46 Hình 3.13 Module Bluetooth HC05 46 Hinh 3.14 Sơ đồ chân HC05 V1 47 Hình 3.15 Giao tiếp vi điều khiển với HC05 Hình 4.1 Sơ đồ khối tổng quan hệ thống Hình 4.2 Sơ đồ hệ thống 50 51 Hình 4.3 Môi trường lập trình Android studio 52 Hình 4.4 Cấu trúc project Hình 4.5 Khu vực Res 53 54 Hình 4.6 Biểu tượng Run 54 Hình 4.7 Lưu đồ thuật toán giám sát 54 Hình 4.8 Lưu đồ thuật toán lịch sử 55 Hình 4.9 Lưu đồ thuật toán thiết lập 55 Hình 4.10 Lưu đồ thuật toán kết nối Bluetooth 55 Hình 4.11 Giao diện hệ thống 56 Hình 4.12 Giao diện giám sát 57 Hình 4.13 Giao diện lịch sử 57 Hình 4.14 Giao diện thiết lập 58 Hình 4.15 Giao diện kết nối Bluetooth 59 Hình 4.16 Hình ảnh sản phẩm mô 59 48 Hình 4.17 Hình ảnh sản phẩm 60 Hình 4.18 Hình ảnh sản phẩm kết nối thiết bị 60 Hình 4.19 Hình ảnh sản phẩm hiển thị lịch sử thông tin sản phẩm 61 DANH SÁCH BẢNG BIỂU Bảng 3.1 Sơ đồ chân HC05 48 Bảng 3.2 Các chân kết nối HC05 với PC 48 Bảng 4.1 Thiết kế giao diện phần mềm 56 LỜI NÓI ĐẦU Y tế hay Chăm sóc sức khỏe, việc chẩn đoán, điều trị phòng ngừa bệnh, bệnh tật, thương tích suy yếu thể chất tinh thần Chăm sóc sức khỏe thực người hành nghề y chỉnh hình, nha khoa, điều dưỡng, dược, y tế liên quan nhà cung cấp dịch vụ chăm sóc Nó đề cập đến việc cung cấp chăm sóc sức khỏe ban đầu, chăm sóc thứ cấp chăm sóc thứ 3, y tế công cộng Y tế Việt Nam bao gồm lĩnh vực: Y tế dự phòng, khám, chữa bệnh, phục hồi chức năng, y học cổ truyền, thuốc phòng chữa bệnh, mỹ phẩm ảnh hưởng đến sức khỏe người, an toàn vệ sinh thực phẩm trang thiết bị y tế Nhưng chi phí đầu tư cho y tế Việt Nam thấp so với nước phát triển: Không đủ bệnh viện, không đủ sở y tế, thiết bị, thuốc men, không thu hút nguồn nhân lực thiếu đào tạo Điều dẫn đến hiệu quản lý vận hành hệ thống y tế thấp Trình độ cán y tế mà bị ảnh hưởng Chăm sóc sức khỏe thông thường coi yếu tố định quan trọng việc nâng cao sức khoẻ tổng quát hạnh phúc người khắp giới Một ví dụ việc xóa bệnh đậu mùa toàn giới vào năm 1980-WHO tuyên bố bệnh lịch sử nhân loại loại bỏ hoàn toàn can thiệp chăm sóc sức khỏe Nhưng chăm sóc sức khỏe phần lớn chịu ảnh hưởng điều kiện xã hội kinh tế sách y tế chỗ Hệ thống chăm sóc y tế tổ chức thành lập để đáp ứng nhu cầu sức khỏe dân số Trong trường hợp, theo Tổ chức Y tế Thế giới (WHO), hệ thống chăm sóc sức khỏe tốt đòi hỏi chế tài mạnh mẽ, đội ngũ cán đào tạo trả lương tốt; thông tin đáng tin cậy làm sở để định lập sách sở vật chất hậu cần trì tốt để cung cấp thuốc công nghệ có chất lượng Đứng trước bùng nổ công nghệ thông tin, tổ chức doanh 10 import android.os.Bundle; import android.widget.CalendarView; import android.widget.Toast; public class history extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.history_layout); CalendarView calendarView=(CalendarView) findViewById (R.id.calendarView1); calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { Toast.makeText(getApplicationContext(), "" + year + " " + month + " " + dayOfMonth, Toast.LENGTH_LONG).show();// TODO Autogenerated method stub final Intent intent = new Intent(getApplicationContext(), DisplayHistory.class); String smonth = ""; String sday = ""; //http://stackoverflow.com/questions/16835402/onselecteddaychange-fromcalendarview-retrieves-the-month-wrong month += 1; if (month >= 10) 92 { smonth = String.valueOf(month); } else { smonth = "0" + String.valueOf(month); } if (dayOfMonth >= 10) { sday = String.valueOf(dayOfMonth); } else { sday = "0" + String.valueOf(dayOfMonth); } String date = String.valueOf(year) + smonth + sday; intent.putExtra(DisplayHistory.EXTRAS_FILES_NAME, date); startActivity(intent); } }); } } File setting.java: package com.example.ki3s.notmyapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; 93 import android.view.View; import android.widget.Button; public class setting extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.setting_layout); Button tt = (Button) findViewById(R.id.btntrangthai); tt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { changelayout1(); } }); } private void changelayout1() { Intent i = new Intent(this, state.class); startActivity(i); } } File state.java: package com.example.ki3s.notmyapp; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity; import android.app.ListActivity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothManager; 94 import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; /** * Activity for scanning and displaying available Bluetooth LE devices */ public class state extends ListActivity { private LeDeviceListAdapter mLeDeviceListAdapter; private BluetoothAdapter mBluetoothAdapter; private boolean mScanning; private Handler mHandler; private static final int REQUEST_ENABLE_BT = 1; // Stops scanning after 10 seconds private static final long SCAN_PERIOD = 10000; 95 private static boolean s_requestInfor = true; private RegisterDeviceModel mRegisterDevice = null; static state mInstance = null; public static RegisterDeviceModel getDeviceModel() { return mInstance.mRegisterDevice; } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mInstance = this; getActionBar().setTitle(R.string.title_devices); mHandler = new Handler(); // Use this check to determine whether BLE is supported on the device Then you can // selectively disable BLE-related features if (!getPackageManager().hasSystemFeature (PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show(); finish(); } // Initializes a Bluetooth adapter For API level 18 and above, get a reference to // BluetoothAdapter through BluetoothManager final BluetoothManager bluetoothManager = (BluetoothManager) getSystemService 96 (Context.BLUETOOTH_SERVICE); mBluetoothAdapter = bluetoothManager.getAdapter(); // Checks if Bluetooth is supported on the device if (mBluetoothAdapter == null) { Toast.makeText(this, R.string.error_bluetooth_not_supported, Toast.LENGTH_SHORT).show(); finish(); return; } } @SuppressLint("NewApi") @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); if (!mScanning) { menu.findItem(R.id.menu_stop).setVisible(false); menu.findItem(R.id.menu_scan).setVisible(true); menu.findItem(R.id.menu_refresh).setActionView(null); } else { menu.findItem(R.id.menu_stop).setVisible(true); menu.findItem(R.id.menu_scan).setVisible(false); //menu.findItem(R.id.menu_refresh).setActionView (R.layout.actionbar_indeterminate_progress); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { 97 switch (item.getItemId()) { case R.id.menu_scan: mLeDeviceListAdapter.clear(); scanLeDevice(true); break; case R.id.menu_stop: scanLeDevice(false); break; } return true; } @Override protected void onResume() { super.onResume(); // Ensures Bluetooth is enabled on the device If Bluetooth is not currently enabled, // fire an intent to display a dialog asking the user to grant permission to enable it if (!mBluetoothAdapter.isEnabled()) { if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent (BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); } } // Initializes list view adapter mLeDeviceListAdapter = new LeDeviceListAdapter(); 98 setListAdapter(mLeDeviceListAdapter); scanLeDevice(true); //// if (s_requestInfor) { //startGetInformationFromServer(); s_requestInfor = false; } } private void viewInformation() { { Intent smsIntent = new Intent(this, state.class); startActivity(smsIntent); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // User chose not to enable Bluetooth if (requestCode == REQUEST_ENABLE_BT && resultCode == Activity.RESULT_CANCELED) { finish(); return; } super.onActivityResult(requestCode, resultCode, data); } @Override protected void onPause() { 99 super.onPause(); scanLeDevice(false); mLeDeviceListAdapter.clear(); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) @Override protected void onListItemClick(ListView l, View v, int position, long id) { final BluetoothDevice device = mLeDeviceListAdapter.getDevice (position); if (device == null) return; final Intent intent = new Intent(this, follow.class); intent.putExtra(follow.EXTRAS_DEVICE_NAME, device.getName()); intent.putExtra(follow.EXTRAS_DEVICE_ADDRESS, device.getAddress()); if (mScanning) { mBluetoothAdapter.stopLeScan(mLeScanCallback); mScanning = false; } /////// // registerDevices(device); /////// startActivity(intent); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) private void scanLeDevice(final boolean enable) { if (enable) { 100 // Stops scanning after a pre-defined scan period mHandler.postDelayed(new Runnable() { @Override public void run() { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); invalidateOptionsMenu(); } }, SCAN_PERIOD); mScanning = true; mBluetoothAdapter.startLeScan(mLeScanCallback); } else { mScanning = false; mBluetoothAdapter.stopLeScan(mLeScanCallback); } invalidateOptionsMenu(); } // Adapter for holding devices found through scanning private class LeDeviceListAdapter extends BaseAdapter { private ArrayList mLeDevices; private LayoutInflater mInflator; public LeDeviceListAdapter() { super(); mLeDevices = new ArrayList(); mInflator = state.this.getLayoutInflater(); } public void addDevice(BluetoothDevice device) { if(!mLeDevices.contains(device)) { 101 mLeDevices.add(device); } } public BluetoothDevice getDevice(int position) { return mLeDevices.get(position); } public void clear() { mLeDevices.clear(); } @Override public int getCount() { return mLeDevices.size(); } @Override public Object getItem(int i) { return mLeDevices.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder; // General ListView optimization code if (view == null) { view = mInflator.inflate(R.layout.listitem_device, null); 102 viewHolder = new ViewHolder(); viewHolder.deviceAddress = (TextView) view.findViewById (R.id.device_address); viewHolder.deviceName = (TextView) view.findViewById (R.id.device_name); view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } BluetoothDevice device = mLeDevices.get(i); final String deviceName = device.getName(); if (deviceName != null && deviceName.length() > 0) viewHolder.deviceName.setText(deviceName); else viewHolder.deviceName.setText(R.string.unknown_device); viewHolder.deviceAddress.setText(device.getAddress()); return view; } } // Device scan callback private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte [] scanRecord) { runOnUiThread(new Runnable() { @Override public void run() { 103 mLeDeviceListAdapter.addDevice(device); mLeDeviceListAdapter.notifyDataSetChanged(); } }); } }; static class ViewHolder { TextView deviceName; TextView deviceAddress; } private class RegisterDeviceModel { } } 104 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… 105 ……………………………………………………………………………………… ……………………………………………………………………………………… …………………………………………………………………… Thái nguyên, ngày … tháng năm 2016 Giáo viên hướng dẫn 106 ... tảng Android hỗ trợ công tác chăm sóc phục vụ bệnh nhân bệnh viện Đề tài gồm phần: - Chương 1: Thực trạng công tác phục vụ chăm sóc sức khỏe bệnh nhân bệnh viện - Chương 2: Cơ sở lý thuyết hệ. .. THIẾT KẾ, XÂY DỰNG PHẦN MỀM HỆ THỐNG CHẠY TRÊN NỀN TẢNG ANDROID 50 4.1 Ý tưởng toán 50 4.2 Mô tả toán 50 4.3 Sơ đồ khối hệ thống 50 4.4 Nguyên lý hoạt động 51 4.5 Thiết kế xây dựng phần mềm hệ. .. Tìm hiểu hệ điều hành Android, công nghệ truyền thông không dây RF, bluetooth Từ đó, thiết kế xây dựng phần mềm hệ thống chuông giường bệnh nhằm hỗ trợ bác sỹ trình chăm sóc điều trị bệnh nhân 1.2.2

Ngày đăng: 23/04/2017, 16:34

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w