Download Personal Medical Record - MSU CSE

Document related concepts

Telecommunications relay service wikipedia , lookup

Transcript
Software Requirements Specification (SRS)
Personal Medical Record
Authors: Christopher Dasbach, Sammy Djap, John Furcean, Steven Garske, Michael Kerwin,
Haohan Lin, Wayne Stiles, William Zajac
Customer: Dr. Raza Haque
Instructor: Dr. Betty H.C. Cheng
1 Introduction
This document first introduces the product specified within, then gives an overall
description of the system and specific, modeled requirements thereof, and afterwards describes a
prototype of the software. The references used and a point of contact for further information are
listed at the conclusion of the document. This software requirements specification should
provide a high-level perspective of the product’s purpose, requirements, and design. This
document should serve as a basis for implementation of the product described.
1.1 Purpose
The purpose of this document is to describe the Personal Medical Record (PMR)
application for the iPhone and Android smartphone platforms in a manner clearly understood by
both the developers and the customer of the system for validation of the high-level design. The
final version of this document will be recommended as the basis of low-level design of the
software and its implementation.
The intended audience for this document is the students of CSE 435 at Michigan State
University, Dr. Betty Cheng, and Dr. Raza Haque.
1.2 Scope
The software product to be produced is the Personal Medical Record application. This
application, for the iPhone and Android platforms, provides a user access to a portable copy of
their medical records on the device. The medical information will be stored on a secure server to
1
which the application is linked. The user can view their medical history and list of medications,
view and modify their general contact and diagnosis information, and authorize persons they
specify as having access to their information via remote connection to the online server
(constrained to those for which the user states as having signed a HIPAA agreement, or Health
Insurance Portability and Accountability Act agreement). The user can authorize persons as
having read-only or editorial access to their medical information. The user can backup
information to either the secure server or to a personal laptop, and can restore information to the
portable platform from either.
The user can also add comments and personal notes to their medical records, which will
be delineated as user-entered information. Comments added by authorized caretakers or family
members would also be noted as unofficial. Any medical professionals who the user authorizes
to access their medical information would be able to add information (medication prescriptions,
laboratory results, and other medical events) marked as physician-entered information. Medical
professionals can add information manually or from the electronic medical record system. All
modifications to the user’s medical record stored on the secure server will be included when the
device next synchronizes to the server to update information. Physician-entered information
may not be modified except by a medical professional.
The server that will be used for this project will only accept data from two points. The
server will update itself from the ARMOR collection server for the medical records and also
receive updates for personal records from the phone as well as notes associated with both the
medical and personal records. Constricting the application to accept data from these two sources
in a specified format, will minimize any security issues associated with this system.
The user interface on each platform will be designed with user-friendliness in mind and
with the understanding that users of the personal medical record application will primarily be
geriatric patients taking several medications.
1.3 Definitions, acronyms, and abbreviations
The purpose of this section is to explain and define any acronyms or abbreviations used
in this document for clarification.
2
ARMOR – “Assess, Review, Minimize, Optimize, Reassess”. An electronic medical
record system designed for use by medical professionals. It collects medical information and
analyzes it for possible drug interactions and issues related to patient quality of life for geriatric
patients taking several medications. This system is being designed in parallel with the PMR
software.
CCR – Continuity of Care Record. A documentation format for storing medical records,
built as a subset of the XML format described below.
EMR – Electronic Medical Record. A copy of a patient’s medical records stored on a
computer or online for security, efficiency, convenience, and portability. May be intended for
use by medical professionals, patients, or both.
HIPAA – Health Insurance Portability and Accountability Act. A law which mandates
that a patient sign an agreement whenever they want to authorize any person to view their
medical information. A statement that the user has signed a HIPAA agreement is required for
the user to authorize any person to view their medical records through the PMR software.
HW – Hardware. The physical electronic machine(s) on which software is run.
PDM – Personal Drug Management. An electronic system for tracking, maintaining, and
managing a user’s medications, including descriptions of each drug and notifications for when
medication needs to be taken. This system is being designed in parallel with the PMR software,
but does not directly interact with it.
PMR – Personal Medical Record. An electronic copy of one’s medical records intended
to be user-portable, such that the user always has their medical records with them in case they are
needed. Image files in their record are only accessible with an internet connection, as they are
not saved on the smartphone.
3
SRS – Software Requirements Specification. A document outlining a high-level design
of a software system, the requirements it should meet and the constraints by which it should be
limited.
SW – Software. The applications, both user-run and system-run, which perform
numerous functions for the user.
UML – Unified Modeling Language. A widely-used notation for describing a software
system in a series of diagrams, helpful in designing how to build the system.
XML – Extensible Markup Language. A highly-flexible and easy to use documentation
format for storing information, which can be adapted to almost any software input specifications.
ZIP – (not an acronym) A widely-used file format that allows one to compress a folder of
files into a single file for purposes of easy portability.
1.4 Organization
The remainder of this document consists of an overall description of the product
(including the product perspective and functions, user characteristics, constraints, assumptions
and dependencies, and apportioning of requirements), followed by the specific and modeled
requirements of the system. Then, this document describes a functional prototype, how to use
the prototype, and example scenarios of the prototype in use. Finally, this document includes all
references used and a point of contact for further information.
2 Overall Description
This section is intended to give an overview of the purpose of our application and what
functions it will include. It will also explain who will benefit from the product, and how we plan
to design the application to meet the needs of our target demographic.
4
2.1 Product Perspective
The main purpose of the Personal Medical Record system is to allow the user to observe
their medical records with their smartphone wherever and whenever they want. This ability
empowers the patient and encourages them to take a more proactive role in their health. It allows
physicians and healthcare workers to promptly review vital information in a timely fashion (an
otherwise time-consuming process) essential to making more meaningful clinical judgments.
Our goal is to create a simple product geared towards geriatric patients which will allow them to
confidently participate in their healthcare using this new medium.
The types of medical records that can be provided are confidential documents such as CT
and X-ray scans, and lists of medications, consultation or emergency room reports from other
physicians, and prescriptions. However, there are also some secondary level personal records
such as blood type, age, health condition, organ donation instructions, etc.
The Personal Medical Record is a part of a bigger system (see Figure 2.1). The back-end
system is the database of information from the ARMOR system (Data Collection, Data Analysis,
and Optimization), which provides medical documents to both the PDM and PMR software
applications on all platforms (iPhone and Android for the PMR software; iPhone, iPad, and
Android for the PDM software). The format of documents in the database to be used as input to
the PMR system is expected to be CCR, a subset of the XML format.
5
Figure 2.1: Entire system, of which the Personal Medical Record application is a part.
The Personal Medical Record software must be built to follow several constraints. Both
the iPhone and Android platforms should have the same functionality, and the same basic
features, including a touchscreen, on-screen keyboard, camera, and microphone. Beyond this
extra platform-specific features may be implemented, such as use of the Android’s slide-out
keyboard functionality. The application should have a touch-based user interface on both
platforms, and should have functionality to output medical records to a laptop or server. This
may be implemented wirelessly or through a smartphone – computer connection.
In addition to system constraints, there should be limitations to the user interface. Given
the small screen of a smartphone platform, the functionalities of the application should be
divided into separate pages in a manner that does not confuse the user. Menus or lists that have
too many options or events for the screen to display at once should implement scrolling
capability.
6
The application should be able to process information obtained from the server or laptop
backup efficiently using the smartphone hardware. The application should account for the rare
situation where the smartphone runs out of memory and cannot process the entire medical
record. Any solution for this problem should not write over information that would be important
in an emergency, including the user’s list of medications, allergies, blood type, external devices
used, and pacemaker information (if any).
The application should include a high level security system to protect the confidentiality
of the user’s private medical information. This security should extend to both communication
with the server and authorization to view the actual application. Despite this, the personal
medical record should implement an override that medical professionals can use in the event of
an emergency, allowing them to view emergency information (listed above).
2.2 Product Functions
The most significant feature of the software is letting the user conveniently observe their
personal medical record wherever they go. Their record is downloaded periodically from the
secure server, and includes the user’s entire medical history of documents, list of medications,
and physician information. Images are downloaded from the server as they are accessed. Each
category will be presented in a list, with the ability to select individual records to view their
details. These details include all results and summary of medical events, dosage information of
medications, and contact information for physicians and the user. Information will be clearly
delineated as user-entered or physician-entered, and official records may not be modified, though
the user may add their own user-entered comments if they desire.
The application allows for backups to be made to the secure server or to an external
storage device, including all user-entered and physician-entered information and comments. The
application and server will be secure; security of information stored on a laptop is the user’s
prerogative. The user, as well as anyone the user authorizes, can access their medical record on
the server remotely through an internet browser, allowing other authorized persons to add
comments and the user to have access to their information even if their smartphone breaks.
The user will have ultimate control concerning who is authorized to view their medical
information through the personal medical record system, either on the smartphone or through the
server remotely. The user must assert that they have signed a HIPAA agreement concerning
7
each person before that person can be authorized, though no electronic copy of the agreement is
stored on the smartphone. A subset of medical information critical in an emergency may be
viewable by any medical professional using the system.
2.3 User Characteristics
Our target demographic is geriatric patients who are, as a whole, unlikely to be
technically savvy. Many seniors who have limited experience with handheld devices might be
intimidated by them. Therefore it is important that they trust our system and are never required
to perform any complex tasks. Furthermore, due to memory loss, some users may need frequent
notifications of important information and it may not be enough to merely display information
once.
Other users of the system would be persons the patient authorizes, some of whom may be
medical professionals. These people will have different levels of access to the personal medical
record application – authorized medical professionals will be able to add physician-entered
information to the record, while authorized relatives or friends may view the system but may not
add comments unless authorized by the user. Medical professionals should be informed of how
to retrieve emergency information from the system even if unauthorized to view the patient’s full
medical record.
2.4 Constraints
There are three main constraints of the PMR system, to ensure the safety and security of
the medical record. First, logging in is always required when the user tries to access the medical
file. If there are too many failed login attempts, the program will try to help with id and password
recovery with registered email, phone number, and security question. If there are still too many
failed attempts to login, the login will lock up for one hour.
Second, when the user logs in, a timer will start and the user will be automatically logged
out within 5 minutes if they do not take any action. This timer will reset every time the user
takes an action.
Third, the user should know that their iPhone or Android is using its legal and proper OS
to protect both the local and back up medical file. Any modifications, disassembly, or cracking
8
operations may lead to safety issues and/or application faults. The application cannot be held
liable for any problems that arise from running it on a modified smartphone.
2.5 Assumptions and Dependencies
We are assuming that the device will only be available to the patient whose medical
records are stored on the device. Additionally the patient using the smartphone device will have
internet access frequently, allowing the system to communicate with the server. We expect the
user to have at minimum a very basic understanding of digital interfaces, and be able to grasp
concepts like saving, loading, and basic data input, and that the user will be able to operate and
view the smartphone regardless of any disabilities. The system will be made as accessible as
possible, but some patients may still have difficulties using it. We also assume the patient will
know and remember enough about their own medical history and situation that the information
displayed will be relevant and useful to them.
Regarding the smartphone itself, we assume the iPhone or Android includes a
touchscreen, camera, and microphone (the camera and microphone will be used in a later
implementation). The PMR software assumes that the user understands the significance of a
HIPAA agreement, and uses the application responsibly and in its proper environment.
2.6 Apportioning of Requirements
Some features originally intended will not be included in the initial version of the
application. Voice commands, HIPAA verification, email notifications of appointments,
interaction with the smartphone’s camera function, and automated data sharing will not be
included, but will be valuable to the user in a future version of the software.
3 Specific Requirements
Next to each requirement below is a letter denoting whether the requirement is common
to all platforms, or is a variation for either the iPhone or Android platform only. A ‘C’
represents a common requirement, whereas a ‘V’ represents a variant requirement.
9
1. External interface requirements
1.1 User interfaces
1.1.1 C Convenient, easy to use
1.1.2 C Scalable windows
1.1.3 C “Main menu” button
1.2 Hardware interfaces
1.2.1 V Apple iPhone operating system
1.2.2 V Google Android operating system
1.2.3 C Web server
1.3 Software interfaces
1.3.1 C CCR file format
1.3.1 C Server must link to ARMOR database
2. System Features
2.1 Login
2.1.1 C The login screen will allow returning users to specify username and
password to gain access to the application and verify those credentials. It
will also allow new users to set up an account.
2.1.2 C Stimulus/Response
2.1.2.1 C PMR Application Icon clicked in smartphone menu/Login
screen presented if application not already running
2.1.2.2 C User submitted and invalid credentials/Display phrase “Incorrect
username or password” and allow user to resubmit.
2.1.2.3 C User submitted and valid credentials/Advance screen to Main
Menu
2.1.2.4 C User clicks “Forgot Password?” link/Application asks for user's
username
2.1.2.4.1 C If username was previously registered, send password
to associated email address
2.1.2.4.2 C If username not registered, advance user to Registration
Screen with message displayed “Unregistered Username”
10
2.1.2.4.3 C User clicks “Register” link/Application advances to
Registration Screen
2.1.3 C Functional Requirements
2.1.3.1 C The system shall mask the password field
2.1.3.2 C The system shall validate username and password match by
sending a request to the server
2.1.3.2.1 C The username and password shall be sent encrypted
2.1.3.3 C The username and password field will hold a max of 20
characters
2.1.3.4 C The username and password field will only contain
alphanumeric characters
2.1.3.5 C When clicked, the username and password field will use the
smartphone's onscreen keyboard functionality
2.1.3.6 V The Android platform may alternately use its slide-out keyboard
functionality.
2.1.3.7 C After a failed login attempt, the password field shall be cleared
2.1.3.8 C The system shall take less than 10 seconds to validate user
credentials
2.1.3.8.1 C If server is inaccessible, output message “Can't connect
to server”
2.2 Main Menu Screen
2.2.1 C The main menu screen will be a full view, scrollable screen containing
large buttons linking to the User Information, Medical History, Backup,
and User Permissions screen. Also, a box on the bottom which will be
displayed at all times on this screen allows for quick user recording of
notes.
2.2.2 C Stimulus/Response
2.2.2.1 C User clicks “User Information” button / Application advances to
User Information Screen
2.2.2.2 C User clicks “Medical History” button / Application advances to
Medical History Screen
11
2.2.2.3 C User clicks “Backup” button / Application advances to Backup
Screen
2.2.2.4 C User clicks “User Permissions” button / Application advances to
User Permissions Screen
2.2.2.5 C User clicks “Edit” link on note box / On screen keyboard
displayed allowing user to type in current condition
2.2.2.6 C User clicks “Add a picture?” link on note box / smartphone
Camera application is launched, picture captured is displayed in
thumbnail near bottom
2.2.2.7 C User clicks Picture Thumbnail / Picture displayed in full screen
with close option
2.2.2.8 C User scrolls window / If information is too large to fit into one
view, view will scroll to reveal extra information not displayed
2.2.3 C Functional Requirements
2.2.3.1 C The system shall always display the note box even when the user
scrolls
2.2.3.2 C If the user makes a change in the note box, the system shall
record the note information and save the information daily on the
server for retrieval later
2.3 User Information Options
2.3.1 C The user’s personal information record will be a full screen, scrollable
view containing information about the user including name, age, blood
type, current known medical condition, primary and specialist physician
contact information, and a link to current medication list.
2.3.2 C Stimulus/Response
2.3.2.1 C User clicks “List of Medication” button / Application advances
to drug list on Medical History screen
2.3.2.2 C User clicks “Back” button / Application advances to Main Menu
screen
2.3.2.3 C User scrolls window / If information is too large to fit into one
view, view will scroll to reveal extra information not displayed
12
2.3.3 C Functional Requirements
2.3.3.1 C Information displayed on this screen will be stored locally on the
phone's storage system
2.4 Medical History Options
2.4.1 C The medical history will be displayed in a full screen, scrollable view
with information including what, who, where, and when the record is
for/from, and a comment field with edit and submit buttons. A next button
will advance to the next most recent record. A list of the user’s
medications may be viewed as part of the history or separately.
2.4.2 C Stimulus/Response
2.4.2.1 C User clicks “View Comment” button / On-screen keyboard is
displayed allowing user to edit comment
2.4.2.1.1 C On return, comment box displays typed comment
2.4.2.1.2 V On the Android platform the slide-out keyboard may
be used instead
2.4.2.2 C User clicks “Submit Comment” button / Comment is sent to
server and attached to record but delineated as a user addition and
not part of the official record
2.4.2.2.1 C If user has already associated a comment with the
particular record, the new comment is appended to the list
of comments with new timestamp
2.4.2.3 C User clicks “Next” button / Application pulls down the next
most recent history record from the server
2.4.2.4 C User clicks “Previous” button / Application pulls down the last
most recent history record from the server
2.4.2.5 C User clicks “Back” button / Application advances to Main Menu
screen
2.4.2.6 C User scrolls window / If information is too large to fit into one
view, view will scroll to reveal extra information not displayed
2.4.3 C Functional Requirements
13
2.4.3.1 C Comment field with have a maximum character limit of 160
alphanumeric characters and punctuation.
2.4.3.2 C On initial load of screen, the user will get most recent record
from server and display it
2.4.3.2.1 C Subsequent loads of screen will display latest viewed
record
2.4.3.3 C If the most recent record is displayed, then a “Previous” button
will be grayed out and inoperable in the bottom-left hand corner
2.4.3.4 C If the oldest record is displayed, then the “Next” button will be
greyed out and inoperable.
2.4.3.5 C Comment box will display all comments associated with the
record
2.4.3.6 C User comments will be in a different color than that used for
official medical record comments
2.4.3.7 C Comment box shall be scrollable separately from the main
screen
2.5 Backup Data
2.5.1 C The backup screen will display two options as buttons to either restore
data to last backup by syncing with the server or backup current data to an
external device.
2.5.2 C Stimulus/Response
2.5.2.1 C User clicks “Restore to last backup” button / Application
initiates backup action overwriting current information with that of
backup
2.5.2.2 C User clicks “Backup Current Data” button / Application initiates
backup action writing current information to the external device
(or server). The data is stored as a zip file on the external device.
2.5.2.3 C User clicks “Back” button / Application advances to Main Menu
14
2.5.3 C Functional Requirements
2.5.3.1 C When a backup action is initiated, application will check for
external device connected to phone (usually through USB,
Bluetooth, or the server)
2.5.3.2 C Application will be locked while backup is in progress
(smartphone may still be used for other purposes such as calling)
2.5.3.3 C Application will ask for location to write data on external device
or where to read data from
2.5.3.4 C All data will be stored in a zip file and the zip file will include:
records, user information, and notes associated with the records.
2.5.4.5 C Backup utility will not be fully available in final prototype
release.
2.6 User Permissions
2.6.1 C The user permissions menu maintains a list of current people the user has
authorized to view their personal medical record.
2.6.2 C Stimulus/Response
2.6.2.1 C User clicks “Add new person” link / Application advances to
Authorized Person screen
2.6.2.2 C User selects an entry from the table / Application advances to
Authorized Person screen with that person's information displayed
in the fields
2.6.2.3 C User clicks the “Back” button / Application advances to the
Main Menu
2.6.2.4 C User scrolls table / If information is too large to fit into one
view, view will scroll to reveal extra information not displayed
2.6.3 C Functional Requirements
2.6.3.1 C User permissions data is stored locally and on the server
2.6.3.2 C The name and relationship columns each have a 25 character
limit
15
2.7 Authorized Person
2.7.1 C This screen displays information about a person a user has authorized or
allows a user to add a new person and includes name, address, relation,
and permissions: view, edit, and HIPAA.
2.7.2 C Stimulus / Response
2.7.2.1 C User clicks the Name field / On-screen keyboard opens allowing
user to update name field
2.7.2.1.1 V On the Android platform, the slide-out keyboard may
be used instead
2.7.2.2 C User clicks the Address field / On-screen keyboard opens
allowing user to update address field
2.7.2.2.1 C Same for each line of address
2.7.2.2.2 V On the Android platform, the slide-out keyboard may
be used instead
2.7.2.3 C User clicks the Relation field / On-screen keyboard opens
allowing user to update relation field
2.7.2.3.1 V On the Android platform, the slide-out keyboard may
be used instead
2.7.2.4 C User clicks the View checkbox / If checked, uncheck; else if
unchecked, check
2.7.2.5 C User clicks the Edit checkbox / If checked, uncheck; else if
unchecked, check
2.7.2.6 C User clicks the HIPAA checkbox / If checked, uncheck; else if
unchecked, check
2.7.2.6.1 C The application assumes the user has signed a HIPAA
agreement for the person if they click the checkbox. The
application does not have any way to verify this itself.
2.7.2.7 C User clicks the “Cancel” button / Application advances to User
Permissions screen and changes are not saved
16
2.7.2.8 C User clicks the “OK” button / Application advances to the User
Permissions screen, changes are saved, and new/updated entry is
displayed in the table
2.7.3 C Functional Requirements
2.7.3.1 C The name field and relation field have a 25 character limit
2.7.3.2 C Each address line has a 200 character limit
2.7.3.3 C If an entry has the view checkbox enabled and the HIPAA
checkbox is also enabled, the person is allowed to view the user's
records
2.7.3.4 C If an entry has the edit checkbox enabled and the HIPAA
checkbox is also enabled, the person is allowed to leave comments
on records
4 Modeling Requirements
It is useful to create models of software designs before implementing the program in
code, as these diagrams can make obvious possible errors early on in the design process. Below
are diagrams commonly used to model software: a use-case diagram, a domain model diagram,
sequence diagrams, and state diagrams.
4.1 Use-Case Diagram
Figure 4.1 is a use-case diagram, which details the actions that can be taken within the
system. The characters outside the box are called actors; they are the users outside the system
that interact with the system. The circles within the box, or system boundary, are the use cases.
They describe the functions each actor can take within the system. A use-case may be linked to
another use-case as an ‘include’. An included use-case has all the functionality of the use-case
including it, with additional features besides.
Use-case descriptions help explain the functionality and relationships which may not be
clear from the diagram below. The use-case descriptions for this diagram follow Figure 4.1.
17
Figure 4.1: Use-case diagram for the personal medical record system.
Add Image/Document
Use Case:
User
Actors:
Description: The user can add an image taken by the camera of their phone or a text document
they write with the smartphone’s keyboard to any medical record they have
personally created. These images or documents would be permanently attached
to the record and can be viewed at any time.
Primary and Essential
Type:
Create Record
Includes:
Extends:
Cross-refs: 2.2.2.5, 2.2.2.6, 2.2.3.2, 2.4.2.2
Create Record
Use cases:
Add Note
Use Case:
User
Actors:
Description: The user will have the option to add on notes regarding a certain medical record.
These notes will be attached to the record permanently and will be able to be
viewed at later times.
Secondary
Type:
View Record
Includes:
Extends:
Cross-refs: 2.4.2.2
View Record
Use cases:
18
Backup
Use Case:
User, Server, Laptop
Actors:
Description: The user has the opportunity to backup all of the medical records on to an
external storage device. The user must have an established connection with the
device, and data will be transferred to the device so that the device will have a
hard copy backup. The data will be directly downloaded from the server.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 2.5.3.2, 2.5.2.2, 2.5.3.1, 2.5.3.3
Use cases:
Create Record
Use Case:
User
Actors:
Description: The user has an option to create his/her own medical record to store information
about symptoms of ailments.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 2.4.2.2
Use cases:
Login
Use Case:
User, Server
Actors:
Description: The system will require the user to login to the system via a pre-established
username and password that is linked to the users account. The user cannot
access any data unless they are logged in. The server is used to verify the users
credentials.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 2.1.2.1, 2.1.2.3
Use cases:
Logout
Use Case:
User
Actors:
Description: The user may logout of the system at any time during use. A user must be logged
in, in order for a logout to be possible.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs:
Login
Use cases:
19
Manage Permissions
Use Case:
User
Actors:
Description: The user may edit the list of persons authorized to log in to the system. A person
who is not authorized may not log in or view information.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 2.2.2.4, 2.6.2.1, 2.7.2
Use cases:
Sync
Use Case:
User, Server
Actors:
Description: The PMR application will listen to the server and update any record that has a
newer version that was previously displayed on the phone.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 1.2.3, 1.3.1
Use cases:
Update User Information
Use Case:
User
Actors:
Description: The user can update their personal information such as name, primary doctor,
address, blood type, and any other information that would be medically relevant.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 2.3.1
Use cases:
View Records
Use Case:
User
Actors:
Description: The user can request a medical record that is either provided from the healthcare
provider or the user themselves. The record will contain all the information
associated with the visit or entry.
Primary and Essential
Type:
Includes:
Extends:
Cross-refs: 2.4.1, 2.4.2.3, 2.4.2.4, 2.4.2.6, 2.4.3.2
Use cases:
20
4.2 Domain Model Diagram
The following, Figure 4.2, is a domain model diagram, which details the objects within
the system. The boxes, or elements, represent different classes in an object-oriented
programming environment. The lines between boxes show the relationships between these
classes. A line with a white arrow indicates that the class pointing to the other ‘inherits’ from the
other class – it includes all the functionality of the base class, with additional features or
capabilities. A line with a black diamond indicates a composition association: the first class is a
part of the class with the diamond, and furthermore neither element can exist without the other.
The numbers at the ends of lines represent how many of a given class can be associated with the
other class, an ‘…’ represents a range of values, and an asterisk (*) indicates that any finite
number of the given class may be associated with the other class.
Domain models, or class diagrams, help show relationships between objects and reveal
possible contradictions or errors before software is implemented. Data dictionaries help explain
the attributes and functionalities of each element that may not be clear from the diagram below.
The data dictionary for this diagram follows Figure 4.2.
Although the attributes and operations of the class objects are included in both diagram
4.2 and the data dictionary, the stereotypes and constraints included in the data dictionary were
excluded from the diagram to make it easier to read.
21
Figure 4.2: Domain model diagram for the personal medical record system.
Element Name
CareGiver
Description
Class that contains the full information regarding
about each care giver.
Attributes
name:String
position:String
role:String
workplace:String
The care giver’s fullname
The care giver’s job position
The care giver’s role for the official record
The location where the care giver is working
Operations
Relationships
UML
Extensions
getCareGiverInfo () :
Function that returns the information regarding
String[]
about a care giver into an array of strings.
CareGiver class is fully owned by the official record. Mainly because, each
official record will be created by one or more care givers.
<<optionalLifeline>> The lifeline of CareGiver is fully dependent on the
OfficialRecord. If the OfficialRecord is destroyed, the CareGiver’s lifeline will
then end.
22
Element Name
Documents
Description
The documents class is abstract and used to
represent official documents on the patients
record either added manually or scanned in
Attributes
documentID:String
description:String
comments:String
timestamp:String
author:String
A unique identifier for each document.
A description of what the document contains
Any comments associated with the
document
Time the document was added to the record
Name of person who added document to
record
Operations
getDocumentInfo(String
documentID): Document
Relationships
UML
Extensions
Virtual function which takes document ID
and returns all information about that
document.
getDocumentData(String
Function to request the binary data for a
documentID) : File
particular document.
Documents is associated with one DocumentView which displays its info.
Records also contains a list of documents which make up the record.
Documents is abstract and has two sub-classes which inherit from it, Text and
Scanned.
Constraint of comments to stay within 160 characters.
Element Name
DocumentView
Attributes
Description
An interface for display a document.
File_name : string
Path : string
The name of the document.
The local path of document.
Operations
RecordView(string, string) :
void
show () : int
Relationships
UML
Extensions
Constructor for initialize File_name and
Path.
Virtual function for open and show
documents.
Accept by the interface object. Children Class of SingleView.
<<interface>>
<<variationPoint>>
23
Element Name
Drug
Description
Drug contains all the information related to a
particular medication including name, dosage,
frequency, duration, condition, and physician.
Attributes
name:String
dosage:Int
frequency:Float
duration:Int
condition:String
physician:String
The name of the drug
Amount of dosage of the drug, given in milligrams
(mg)
How often to take drug, given in times per day
How long to take drug, given in number of days
Name of condition(s) that the drug is used to treat
Name of physician who prescribed drug
Operations
getDrugInfo(String
property): String
Relationships
Function which takes a string which is the name of
the attribute you want to know. The result is
returned as a string of the attribute requested.
Drug is associated with DrugView in that a drug only has one view and Drug
View reads the data to display from Drug. Record contains a list of drugs
associated with the particular record and makes up part of the record.
UML
Extensions
Element Name
DrugView
Attributes
Description
Display a drug list.
File_name : string
Path : string
The name of the drug list.
The local path of drug list.
RecordView(string,
string) : void
show () : int
Constructor for initialize File_name and Path.
Operations
Relationships
UML
Extensions
Function for open and displays drug list. Any
failure will return -1; otherwise, return 1;
Accept by the interface object. Child Class of SingleView.
<<variation>>
24
Element Name
Image
Description
Image class simply contains the property of an
image associated with a record
Attributes
imageID:String
description:String
comments:String
picture:Object
timestamp:String
Unique identifier for the image.
A description of what the image contains
Any comments associated with the image
Actual image data (could be stored different on
different platforms)
Time the image was added to the record
Operations
getImageData(String
imageID) : File
getImageInfo(String
imageID): Image
Relationships
UML
Extensions
Function to return the binary image data from
the server for a particular image.
Function to return all data about a known
image with the exception of the actual image
data.
The image class is associated with an ImageView class which displays the
image properly. The Record class can also contain a list of images which
makes up the record.
<<variation>> on how the picture Object is actually stored on the platform.
Constraint on comments to stay within 160 characters.
Element Name
ImageView
Attributes
Description
Display an image.
File_name : string
Path : string
The name of the image.
The local path of image.
RecordView(string,
string) : void
show () : int
Constructor for initialize File_name and Path.
Operations
Relationships
UML
Extensions
Function for open and displays image. Any failure
will return -1; otherwise, return 1;
Accept by the interface object. Child Class of SingleView.
<<variation>>
25
Element Name
Interface
Description
The main class that is capable of calling the default
iOS User Interface API, in this case is the List/Grid
view window and single view window. Moreover,
it is the main menu for displaying documents.
Attributes
singleView:View
listView:View
viewType:String
The single view object
The list view object
The type of objects to show in the view (e.g. image,
document, drug, or record)
startListView (String
viewType, View
listView): void
startSingleView (String
viewType, View
singleView): void
RequestBackup()
Function to start and open the ListView for a given
type of objects.
Operations
Relationships
UML
Extensions
Function to start and open the SingleView for a
given type of objects.
Function to start the process of receiving a zip
backup of all of the data on the server.
Interface class is owned by the PMRSystem due to it starts the whole
application and user interface. Moreover, since Interface class controls how
object/s should be displayed, it has an association with the view objects.
Constraint in the user interface might be a small issue for the interface as it
represents as the main menu for all view. Therefore, limitation in showing all
possible view choices might occur.
Element Name
ListView
Attributes
Description
List all medical files and display.
File_name_ Vector:
vector<string>
Path_ Vector:
vector <string>
The vector of local files’ name.
The vector of local files’ path.
Operations
ListView( ) : void
Relationships
UML
Extensions
Constructor by search local storage to find the medical
file and recode the name and path by File_name_ Vector
and Path_Vector.
show ( ) : int
Show all medical files to user to choose in the vector.
Once the user chooses one file, open and display it until
the user closes it. Any failure will return -1; otherwise,
return 1.
Accept by the interface object. Inheritance form View.
<<variation>>
26
Element Name
OfficialRecord
Description
Official Record is a class derived from the
Record class. It holds the records, such as
notes, written by care giver (e.g. specialist,
physicians, nurse, etc.)
Attributes
summary:String
date:String
careGiver:CareGiver[]
category:String
note:String
The official record’s description
The date when the record is made
An array of care givers
The official record’s category (e.g. drug,
medical condition, etc.)
The user added note.
Operations
addCareGiver(CareGiver
careGiver) : boolean
Relationships
UML
Extensions
Function that adds new care giver into the
official records. The function returns true if
adding is successful, false otherwise.
deleteCareGiver(CareGiver
Function that deletes existing care giver. The
caregiver) : boolean
function returns true if deleting is successful,
false otherwise
addNote(String note)
Adds a comment to the official record
Official record is inherited from parent Record class. Official record also owns
the list of care givers who contribute to the record.
<<variant>> Official record is a variant of variation point. The variation is the
Record class. Moreover, Official record behavior is relying on the Record
interaction with other classes.
Element Name
PatientRecord
Description
PatientRecord is a class derived from the Record
class. It holds the records added unofficially by the
patient and delimited as such.
Attributes
summary:String
date:String
category:String
A description of what the record contains
The date when the record was made/added
The record's category (what it's for)
Operations
GetInfo():String[]
Relationships
UML
Extensions
Returns the information associated with the record as
an array of string
SendToServer(Record) Sends the record to the server to be stored
permanently.
Patient record inherits from the abstract class Record. It contains Records
attributes and Operations.
<<variant>> PatientRecord is a variant of variation point. The variation is the
Record class. Moreover, PatientRecord behavior is relying on the Record
interaction with other classes.
27
Element Name
PMRSystem
Description
Start the whole PMR program and controls the
connection with the application’s interface and
the web server. Moreover, it contains the user
log-in functionality.
Attributes
username:String
password:String
Interface:Interface
currentUser:User
The username of a particular user
The password of a particular username
The main interface object
The user information associated with the
application
Operations
tryLogIn (String username,
String password): boolean
Relationships
UML
Extensions
Function to validate the authentication by sending
username and password to the web server.
Function will return true if authentication
successful, false otherwise.
startMenu (Interface
Start the main interface and also the main menu
interface): void
for the application
Logout()
Will log the user out of the application
GetUpdate()
Will request an updated list of records from the
server.
GetBackup()
Will ask the server to return a zip file of all of the
user’s data.
PMRSystem is made up of the interface class that acts as the application’s
output (TouchScreen). Without interface, any user will not be able to access the
system. Moreover, PMRSystem also has association with Server due to the
whole system will be required to synchronize with the server in order to obtain
some data. With the log-in functionality, PMRSystem need to have an
association with user class because of the information gained from the loggingin will be feed into the user class.
Communication constraint between the application and server might be a big
issue. Security constraint in the communication will also affect the quality of
data transferring.
28
Element Name
Record
Description
Record is an abstract class and represents
an official Medical History record on the
patient's file. It can contain any number
documents, drugs, or images.
Attributes
recordID : String
documents:Vector<Documens>
drugs:Vector<Drugs>
images:Vector<Image>
comments:String
additionalInfo:String
title:String
updateDate:String
The unique ID associated with this record.
A list of documents associated with the
record
A list of drugs associated with the record
A list of images associated with the
record
Any comments associated with the record
Any additional info associated with the
record such as follow-up activities, sideeffects, or relationship to family history
The record’s title
Shows when the record was last updated
Operations
addDrug(Drug drug):boolean
Relationships
UML
Extensions
Adds a Drug to the record, returns true if
successful
deleteDrug(Drug drug):boolean
Deletes a Drug from the record, returns
true if successful
addImage(Image image):boolean
Adds a Image to the record, returns true if
successful
deleteImage(Image image):boolean Deletes a Image from the record, returns
true if successful
addDocument(Documents
Adds a Documents to the record, returns
doc):boolean
true if successful
deleteDocument( Documents
Deletes a Documents from the record,
doc):boolean
returns true if successful
getRecordInfo(String
Requests information about a single
recordID):Record
record from the server.
Record is an abstract class that has two subclass types, PatientRecord and
Official Record which actually do the implementation. Record contains a list of
documents, drugs, and images. Record also has an associated RecordView and
interacts with the User which each record is attached to.
Constraint on comments to 160 character limit.
29
Element Name
RecordView
Attributes
Description
Display a record.
File_name : string
Path : string
The name of the record.
The local path of record.
RecordView(string,
string) : void
show ( ) : int
Constructor for initialize File_name and Path.
Operations
Relationships
UML
Extensions
Function for open and displays record. Any
failure will return -1; otherwise, return 1;
back ( ) : void
Function to return to the record list view.
Accept by the interface object. Children Class of SingleView.
<<variation>>
Element Name
Scanned
Attributes
Operations
Relationships
UML
Extensions
Description
A sub-class of documents, represents a document
which was inputted scanned as an image. Inherits
attributes and operations from Documents.
(NOTE: implements
Documents attributes)
picture:Object
The scanned picture of the document
(NOTE: implements
Documents operations)
None
Inherits from and is a Documents and implements the virtual function
GetDocumentInfo().
<<variation>> Could be variation in how the document image is stored on
different platforms
Element Name
ScanView
Attributes
Description
Display a scanned document.
File_name : string
Path : string
The name of the scanned document.
The local path of scanned document.
RecordView(string,
string) : void
show () : int
Constructor for initialize File_name and Path.
Operations
Relationships
UML
Extensions
Function for open and show scanned document.
Any failure will return -1; otherwise, return 1;
Accept by the interface object. Children Class of DocumentView.
<<variant>>
30
Element Name
Server
Description
Responsible to execute HttpGet or HttpPost
method to the web server in order to obtain
records. This class will be called every time the
user initiates a functionality that requires a data
sent or received by the web server.
Attributes
url:String
parameter:String
entity:ResponseEntity
The complete url of the web server.
The parameter required to complete the URL
(Mainly used for HttpGet).
Save the Http response sent by the server.
Operations
tryConnect(url:String) :
ResponseEntity
trySearch (String url, String
parameter): ResponseEntity
Relationships
UML
Extensions
Function to connect to a web server given as the
URL parameter.
Function to connect and request data from the
web server. The request data will be returned by
this function
tryUpload (String url, String Function to connect and feed new data to the web
parameter): int
server. The Http status code will be returned by
this function
handleResponse (HttpEntity Function responsible for receiving the Http
response) : void
Response sent by the web server and pass it to the
appropriate class.
Server is mainly connected only with PMRSystem. It is important to limit the
vulnerability of server class from other classes in order to increase the security
Communication constraint between the application and server will still be an
issue and again Security constraint in the communication will also affect the
quality of data transferring.
<<optionalLifeline>> Server class is used only when data transferring or
feeding is required.
31
Element Name
SharedPermissions
Description
Class that holds the information regarding about
the shared permission users.
Attributes
fullname:String
age:int
gender:String
userID:String
sharedLevel:int
The user’s fullname
The user’s age
The user’s gender
The user’s ID
Indicate the level of access the shared
permission user has.
Operations
setSharedLevel(int lvl) : void
Relationships
UML
Extensions
Function to set the sharedLevel. This function
will be invoked by User class.
SharedPermissions class is controlled by the User only. Each user can have
multiple numbers of shared permissions users, but the main user is allowed to
limit the level of access.
<<optionalLifeline>> Each shared permissions user will have optional lifeline
and it is controlled by the user. <<optionalInteraction>> Each shared
permissions user will also have optional interaction with the main user, and only
the main user can control the amount of interaction.
Element Name
SingleView
Attributes
Description
An interface for display of a single object.
File_name : string
Path : string
The name of the file
The local path of file.
SingleView(string, string) :
void
show ( ) : int
Constructor for initialize File_name and Path.
Operations
Relationships
UML
Extensions
Virtual function for all view type class
displays different objects.
Accept by the interface object. Parent of RecordView, ImageView, DrugView,
and DocumentView. Inheritance from View.
<<interface>>
<<variationPoint>>
32
Element Name
Text
Attributes
Operations
Relationships
Description
A sub-class of documents, represents a document
which was input manually with user editable fields.
Inherits attributes and operations from Documents.
(NOTE: implements
Documents attributes)
contents:String
The text of the document
(NOTE: implements
Documents operations)
None
Inherits from and is a Documents and implements the virtual function
GetDocumentInfo().
UML
Extensions
Element Name
TextView
Attributes
Description
Display a text-based document.
File_name : string
Path : string
The name of the text-based document.
The local path of text-based document.
RecordView(string,
string) : void
show () : int
Constructor for initialize File_name and Path.
Operations
Relationships
UML
Extensions
Function for open and show text-based document.
Any failure will return -1; otherwise, return 1.
Accept by the interface object. Children Class of DocumentView.
<<variant>>
33
Element Name
User
Description
Class that holds the information regarding
a user. It also controls the amount of
shared permissions users.
Attributes
fullname:String
age:int
gender:String
userID:String
records:vector<Record>
The user’s fullname
The user’s age
The user’s gender
The user’s ID
Contains a vector of records associated
with the user.
Operations
getRecordList(String userID):
vector<Record>
Relationships
UML
Extensions
Function to request some data from the
web server. The function will return the
Records objects associated with the user
getDrugList(String userID) :
Function to request all drugs precribed to
vector<Drug>
a user.
getDocumentList(String userID) :
Function to request all documents
vector<Document>
associated with any of a users records.
getImageList(String userID) :
Function to request all images associated
vector<Image>
with a user.
setSharedPermissions (String user, Function that will set another shared
String ID): void
permission user.
deleteSharedPermissions (String
Function that will delete a shared
user, String ID) : void
permission user.
createRecord(String title, String
Function that will create a blank patient
summary, String Category)
record for the user to fill in.
getProfile(String user) : User
Fuction to call PMRSystem and return
information about a sigle user.
Each user has several records which mean there is an association between the
user and records. However, user does not own the records. User also has an
association with PMRSystem due to it is the log-in page for every user.
Communication constraint with the server might occur as a result of user does
not have direct connection with server. Hence, uploading or searching data
might have longer delay.
34
Element Name
View
Description
Pure virtual class (Protocol). Help the interface accept the unify
type View to display different objects like record, image, drug,
documents, etc.
Attributes
NONE
Operations
Relationships
UML
Extensions
View () : Virtual constructor
void
show () : Virtual function for displaying different object
int
Accept by the interface object. Parent of all view objects.
<<interface>>
<<variationPoint>>
4.3 Sequence Diagrams
The following diagrams are classified as “sequence diagrams”. The purpose of these
diagrams is to show how the different objects of a system interact with each other during a
specific instance of an execution. The objects are located along the top horizontal axis, and time
is depicted along the vertical axis. Time zero is located at the top of the vertical axis, and the
time increments positively downward.
The objects are defined by their object name followed by a “:” and the class name. The
defining of the object is done in rectangular boxes that are located above the timeline of the
object. The object name can be left blank, but the box must contain the class name. The
timeline of the object represents when the object is created in reference to the other objects
associated in the particular sequence diagram. The start of the object is shown by the top of the
vertical rectangle box, and the conclusion of the objects lifetime is associated with the bottom of
the rectangle box.
The creation of an object is due to a function call from another object. These function
calls are shown above the solid arrows which go from the object that is calling the function
(caller object) to the object that data or an action is being requested from (called object). Solid
arrows come in two types, synchronous, and asynchronous. Asynchronous arrows have both the
top and bottom part of the arrowhead and show that the called object must complete the
execution of the function in order for the caller object to continue. Synchronous calls are shown
by an arrowhead that is missing the bottom half of the arrowhead. The synchronous calls show
35
that both the caller object and called object can execute in parallel and both objects are not
waiting for any return values from the other in order to continue execution. The dashed arrows
represent return values from a called object and often state a piece of data on top of the dashed
arrow to show the actual data or variable returned to the called object.
4.3.1 Adding a Note
This sequence diagram (Figure 4.3) shows the execution of the user first logging in and
syncing the information to make sure the data is consistent between the server and the phone
application. Next, a particular record is requested from a user's list of records. When the record
is successfully obtained, the user is able to use the system and add a note to be associated with
that particular record. After the user is finished, they upload the new information to the server
and log out of the system.
Figure 4.3: Sequence Diagram showing the execution steps to view and add a note to a
record.
36
4.3.2 Creating a Record
In this sequence diagram, Figure 4.4, the user begins by logging in and syncing the data
between the server and the phone application. Then, the user uses the system to instantiate a new
empty record which is added to the user's list of records. When the record is successfully
created, the user is able to add an image and a document to be associated with that particular
record. After the user is finished, they upload the new information to the server and log out of
the system.
Figure 4.4: Sequence Diagram showing the execution steps to create a new record and
add an image and document
37
4.3.3 Setting Permissions
The following sequence diagram, Figure 4.5, displays the steps to edit user information
and set permissions for additional users. First, the user must log in and begins by syncing with
the server to make sure the information obtained is the most recent. Next, the user uses the
system to edit the information associated with the User class such as contact information,
emergency contacts, primary physicians, etc. Then, the user updates a permission (read, edit) for
an additional specified user by setting the shared permissions for that person. When finished, the
user uploads the new information to the server and logs out of the system.
Figure 4.5: Sequence Diagram showing the execution steps to edit user information and
set permissions
38
4.4 State Diagram
State diagrams show which state a single object can be in at any point of the program’s
execution. Whereas the sequence diagram showed multiple objects for a single execution, a state
diagram shows a single object over multiple executions.
The state diagram has a specific notation. The object being described is encompassed by
a large rectangle with the name of the object in the upper left hand corner of the rectangle. The
objects in the circle are called the “states” and an object must be in a state at any point of the
programs execution. The states are connected via arrows which represent functions or guards on
a state. The functions are functions as defined in the class diagram above for the specified
object. The guards are conditions that must be met in order for the object to transition to another
state. Guards are enclosed by “<<” and “>>” and functions just give the name of the function
along with any values needed where the values are in between “(“and “)”.
4.4.1: User
The following state diagram is used for the class object of user. User objects store what
records the user of the system is associated with. These records associated with a certain user are
referred to as profiles. Users can have the ability to access multiple profiles. This is done
through the first user associated with the profile setting up another user’s permission to view the
profile. A user can only view one profile at a time as to eliminate cross-profile confusion.
Figure 4.6: State diagram for the User object.
39
4.4.2: Interface
The following state diagram is for the interface class object. The interface object is the
controller for the actual screen of the application. The states of the interface object are therefore
the set of screens that the application could be in at any time. The functions and guards
connecting the states are the functions required to execute in order to change screens.
Figure 4.7: State diagram for the Interface object.
40
4.4.3: Server
The following state diagram is for the server class object. The server object is in charge
of sending and receiving data from the server. The states associated with the server are basic
states associated with a server. The functions and guards in this diagram are the functions
needed to retrieve and send data to the server, and the server guards needed for connection to
occur.
Figure 4.8: State diagram for the Server object.
41
4.4.4: Record
The following state diagram is for the record class object. The record class is a
combination of all data associated with an individual medical or personal entry into the profile.
The states of the record class are the states associated with each individual record. The functions
and guards are those required to accomplish tasks such as view or updating a record.
Figure 4.9: State diagram for the Record object.
42
5 Prototype
Next to each statement below is a letter denoted whether the statement is true for all
platforms, or is a variation that is true for either the iPhone or Android platform only. A ‘C’
represents a common statement, whereas a ‘V’ represents a variant statement.
C: The prototype will allow a user access to the medical records currently associated with
that user as determined by the server. The user will be able to view, create and add notes
to medical records.
C: The user can keep a current profile which includes relevant health information and this
profile can be edited at any time and does not need to interact with the server at all.
C: The user can back up all of the medical records and personal information onto an
external storage device via a backup button.
5.1 How to Run Prototype
C: The prototype can be run from any internet accessing computer or device.
V: For the iPhone Prototype: http://www.cse.msu.edu/~cse435/Projects/F2010/PMRiPhone/web/prototype.html
V: For the Android Prototype: http://www.cse.msu.edu/~cse435/Projects/F2010/PMRAndroid/Prototype/index.html
V: The iPhone Prototype (shown below) is a web-based text and picture mock-up of the
intended application.
V: The Android Prototype (shown below) is an application-based interactive model. The
user of the prototype can navigate through the design to determine the flow of one screen
to the next.
43
5.2 Sample Scenarios (Android Prototype)
5.2.1: Login
The login screen (Figure 5.1) is the first thing a user will see upon opening the
application. No data will be presented until they successfully log in.
Figure 5.1: Prototype screenshot for the Login screen.
44
5.2.2: Main Menu
The main menu (Figure 5.2) lists each type of record that the application keeps track of.
Additionally there is a button to back-up the data onto another device such as a laptop.
Figure 5.2: Prototype screenshot for the Main Menu screen.
45
5.2.3: Records List
The official records page (Figure 5.3) lists only records which were input by medical
professionals. These are not able to be edited by the user, or anyone else once entered. The
“Sync Records” button at the bottom of the page will communicate with the server to download
new records. The application synchronizes with the server automatically every month, but the
user can use this button to update information immediately. Additionally, every screen will have
the “Home” button at the bottom for easy navigation back to the home screen of the application.
Figure 5.3: Prototype screenshot for the Official Records List screen.
46
5.2.4: Single Record
This screen, Figure 5.4, is displayed when an individual record button is clicked. It
shows the details of that record including the date of the event, the practitioner involved, the
rationale for any actions the doctor took, and more.
Figure 5.4: Prototype screenshot for the Single Records screen.
47
5.2.5: Patient Records List
Patient records (Figure 5.5) are displayed separately from official medical records. All
patient entered information is shown in blue to easily distinguish it to the user. The user is
allowed to enter and delete his/her own records in this category as well.
Figure 5.5: Prototype screenshot for the Patient Records List screen.
48
5.2.6: Single Patient Record
This screen, Figure 5.6, shows an example of a patient record. The patient can describe
what symptoms they are having, and the context of the event. Additionally they can attach an
image to the record if applicable.
Figure 5.6: Prototype screenshot for the Single Patient Records screen.
49
5.2.7: Practitioners List
The practitioners list (Figure 5.7) displays both official practitioners gleaned from the
official records, and patient entered practitioners. Once again they are differentiated by color.
Figure 5.7: Prototype screenshot for the Practitioners screen.
50
5.2.8: Single Practitioner
All known contact information for a practitioner is available by selecting a practitioner
from the list (see Figure 5.8).
Figure 5.8: Prototype screenshot for the Single Practitioners screen.
.
51
5.2.9: Prescriptions List
The prescriptions page, Figure 5.9, shows all prescriptions that the patient is currently
taking. Medications can be entered by a practitioner, or by the user.
Figure 5.9: Prototype screenshot for the Prescriptions List screen.
52
5.2.10: Single Prescription
The details of a medication (see Figure 5.10) show all relevant information about the
medicine. This allows the user to make more informed decisions when taking new medications,
and helps them to remember which medications are supposed to be taken and when.
Figure 5.10: Prototype screenshot for the Single Prescription screen.
53
5.2.11: Images List
Images which have been used in medical records or added by the user for general use are
listed on the images page (Figure 5.11).
Figure 5.11: Prototype screenshot for the Images List screen.
54
5.2.12: Single Image
Images can be previewed individually, as in Figure 5.12.
Figure 5.12: Prototype screenshot for the Single Images screen.
55
5.3 Sample Scenarios (iPhone Prototype)
5.3.1: Login
The user must log in to the system (see Figure 5.13) before viewing their personal
medical record.
Figure 5.13: Login screen for the iPhone prototype.
56
5.3.2 Login Failure
A user who is not authorized will not be allowed to access the system, as shown in Figure
5.14.
Figure 5.14: Login failure for the iPhone prototype.
57
5.3.3 Main Menu
Figures 5.15, 5.16, and 5.17 display the main menu. The main menu of the personal
medical record shows all possible menu options - the user's health record, medical history, drug
list, calendar function (apportioned since making this prototype), backup, and permissions.
Figure 5.15: First page of the main menu for the iPhone prototype.
58
Figure 5.16: Second page of the main menu for the iPhone prototype.
59
Figure 5.17: Third page of the main menu for the iPhone prototype
60
5.3.4 User Record
The user record menu, Figure 5.18, includes the most recent information about the user's
health status, medical conditions, age, contact information, and so forth as a quick reference
page. It also links to the drug list menu.
Figure 5.18: User record for the iPhone prototype.
61
5.3.5 Medical History
Figures 5.19 and 5.20 show the medical history menu. The medical history menu
maintains a list of medical events the user has experienced, most recent first. The medical
history menu also includes for each event any and all details known, and delineates patiententered information from physician-entered information.
Figure 5.19: First page of the medical history menu for the iPhone prototype.
62
Figure 5.20: Second page of the medical history menu for the iPhone prototype.
63
5.3.6 Drug List
The drug list menu, Figure 5.21, shows the details of all the medications the user is
currently taking, including their dosage, frequency, duration, and purpose. Where possible, it will
also include the doctor who prescribed the medication and the pharmacy which filled it out, as
well as a picture of the medication.
Figure 5.21: Drug List menu for the iPhone prototype.
64
5.3.7 Backup Menu
Figure 5.22 shows the Backup menu. The backup menu allows the user to back-up the
current information on their iPhone to the server, or restore the information from a previous
backup on the server.
Figure 5.22: Backup menu for iPhone prototype.
65
5.3.8 User Permissions
The user permissions menu (Figure 5.23) maintains a list of current people the user has
authorized to view their personal medical record.
Figure 5.23: Permissions menu for iPhone prototype.
66
5.3.9 Add New Person
Figure 5.24 shows the Add New Person page. Adding a new person requires that the user
specify they have signed a HIPAA agreement for that person, though the personal medical record
does not maintain an electronic copy of any HIPAA agreements.
Figure 5.24: Add New Person for iPhone prototype.
67
6 References
[1]
Dr. Raza Haque, “ARMOR: A Tool to Evaluate Polypharmacy in Elderly Persons,”
Annals of Long-Term Care, June 2009.
[2]
Android SDK, http://developer.android.com/reference/packages.html, Google, November
2010.
[3]
iOS SDK, http://developer.apple.com/library/ios/navigation/, Apple Inc., 2010.
[4]
UML, http://www.uml.org/, Object Management Group, Inc., 2010.
[5]
Personal Medical Record - Android,
http://www.cse.msu.edu/~cse435/Projects/F2010/PMR-Droid/web/index.html, 2010.
7 Point of Contact
For further information regarding this document and project, please contact Prof. Betty
H.C. Cheng at Michigan State University (chengb at cse.msu.edu). All materials in this
document have been sanitized for proprietary data. The students and the instructor gratefully
acknowledge the participation of our industrial collaborators.
68