1. Field of the Invention
The present invention pertains to transferring files, and, in particular, to a system and method for transferring sleep study files.
2. Description of the Related Art
Obstructive sleep apnea (OSA) is a condition that affects millions of people from around the world. OSA is characterized by disturbances or cessation in breathing during sleep. OSA episodes result from partial or complete blockage of airflow during sleep that lasts at least 10 seconds and often as long as 1 to 2 minutes. In a given night, people with moderate to severe apnea may experience complete or partial breathing disruptions as high as 200-500 per night. Because their sleep is constantly disrupted, they are deprived of the restorative sleep necessary for efficient functioning of body and mind. This sleep disorder has also been linked with hypertension, depression, stroke, cardiac arrhythmias, myocardial infarction and other cardiovascular disorders. OSA also causes excessive tiredness.
Various methods have been used to assess whether a patient suffers from OSA. The most comprehensive method is a clinical polysomnogram (PSG), which can diagnose many significant sleep pathologies. A PSG generally involves a sleep study of a patient where audio and other parameters of the patient is recorded while the patient sleeps. A technician then “scores” the recorded data. Scoring the recorded data involves analyzing the data to identify events that occurred during the PSG that may be useful in diagnosing sleep pathologies. Data collected during a PSG is generally stored in several different files such as multiple audio files, other data files, and a scoring file.
The PSG data (also referred to as sleep study data) is generated or used in several different locations, such as a sleep lab, a scoring technician's office, and a physician's office. It is preferable to store the sleep study data at a central location, such as a server, where it is accessible to multiple locations through a network, such as the internet.
Current file transfer services upload to a temporary directory on the server, and when the upload is complete, the file is copied to a permanent directory. This protocol prevents an incomplete transfer of a single file, such as one in which connection was lost before the upload completed, from being permanently stored on the server. Some file transfer services forgo the temporary directory and copy files directly to their final destination. However, this process can lead to incomplete files being stored at their final destination in the case of an incomplete transfer.
When a file is being uploaded, the server will provide synchronization locking which prevents the same file from being uploaded or downloaded by a different user at the same time. However, under current file transfer protocols, uploads are transferred to a permanent directory and synchronization locking is provided on a file-by-file basis. That is, when uploading of one file is complete, the file will be transferred to the permanent directory and the synchronization locking will stop.
Current file transfer services behave in a similar manner when downloading files from the server to a client computer. That is, they may download a file to a temporary directory to prevent an incomplete file from being downloaded to its final destination directory in the case the connection was lost before the download was complete. Some services may download a file directly to its final destination directory, which can result in an incomplete transfer. Additionally, when a file is being downloaded, the client operating system will provide synchronization locking which prevents other applications on the client from accessing the file while it is being downloaded. However, under current file transfer protocols the synchronization locking is provided on a file-by-file basis.
In the case of the sleep study data files, file transfers may consist of multiple data files that are related to each other, and as such, must be transferred as one logical unit. In the case of an upload, if the first one of the files is uploaded to the server properly and the connection is lost while uploading the second one of the data files, then the set of sleep study data files stored on the server will be incomplete. Furthermore, if connection is lost while uploading an updated set of sleep study files, the resultant set of sleep study data files on the server will have some data files that are updated and some that are not updated, thus compromising the integrity of the set of sleep study data files stored on the server. Similarly, if a user is uploading the second one of the data files, the synchronization locking for the first data file will have stopped and another user will be able to download the first data file.
The same issues apply when downloading sleep study files. That is, if the connection to the server is lost when downloading files from the server to the client, then the set of sleep study data files stored on the client will be incomplete. Furthermore, if the connection is lost while downloading an updated set of sleep study files, the resultant set of sleep study data files on the client will have some data files that are updated and some that are not updated, thus compromising the integrity of the set of sleep study data files stored on the client. Similarly, if a user is downloading the first data file, the synchronization locking on the server will not prevent users from updating the other sleep data files on the server while the first is being downloaded. The resultant set of sleep data files downloaded to the client will have some data files that are updated and some that are not updated.
For the purpose of transferring the sleep study data files to the server, it is preferable to treat the sleep study data files as a single entity to ensure that the complete set of sleep study data files is uploaded to the server before it is transferred to the permanent directory and that the complete set of sleep study data files is synchronization locked when a user is uploading the sleep study data files. Similarly, when downloading sleep study files from the server, it is preferable to treat the sleep study data files as a single entity to ensure that the complete set is downloaded to the client before it is transferred to the permanent directory, and to ensure the complete set of sleep study data files is locked on the server when a user is downloading the study data files. Although in some cases sleep study data files can be packaged into a single file, such as a ZIP file, and then transferred, the process of packaging and unpacking the sleep study data files can become cumbersome and time consuming.
Accordingly, a need exists for improvement in transferring sleep study data files to and from a server.
In one embodiment, method of transferring files includes receiving a download request for a group of files, determining whether the group of files is locked, upon determining that the group of files is not locked, allowing the download request, creating a transfer object corresponding to the group of files and the download request, the transfer object including information on the group of files and the download request, performing download operations on the files in the group of files, and when all files in the group of files have been downloaded, deleting the transfer object.
In another embodiment a method of transferring files includes receiving an upload request for a group of files, determining whether the group of files is locked, upon determining that the group of files is not locked, allowing the upload request, creating a transfer object corresponding to the group of files and the upload request, the transfer object including information on the group of files and the upload request, performing upload operations on the files in the group of files, and when all files in the group of files have been uploaded, deleting the transfer object.
In another embodiment, a non-transitory computer readable medium storing one or more programs, including instructions, which when executed by a computer, causes the computer to perform a method of transferring files, the method including receiving a download request for a group of files, determining whether the group of files is locked, upon determining that the group of files is not locked, allowing the download request, creating a transfer object corresponding to the group of files and the download request, the transfer object including information on the group of files and the download request, performing download operations on the files in the group of files, and when all files in the group of files have been downloaded, deleting the transfer object.
In another embodiment, a non-transitory computer readable medium storing one or more programs, including instructions, which when executed by a computer, causes the computer to perform a method of transferring files, the method including receiving an upload request for a group of files, determining whether the group of files is locked, upon determining that the group of files is not locked, allowing the upload request, creating a transfer object corresponding to the group of files and the upload request, the transfer object including information on the group of files and the upload request, performing upload operations on the files in the group of files, and when all files in the group of files have been uploaded, deleting the transfer object.
In another embodiment, a system to transfer files includes a server structured to receive a download request for a group of files, to determine whether the group of files is locked, to allow the download request upon determining that the group of files is not locked, to create a transfer object corresponding to the group of files and the download request, the transfer object including information on the group of files and the download request, to perform download operations on the files in the group of files, and to delete the transfer object when all files in the group of files have been downloaded.
In another embodiment, a system to transfer files includes a server structured to receive an upload request for a group of files, to determine whether the group of files is locked, to allow the upload request upon determining that the group of files is not locked, to create a transfer object corresponding to the group of files and the upload request, the transfer object including information on the group of files and the upload request, to perform upload operations on the files in the group of files, and to delete the transfer object when all files in the group of files have been uploaded.
These and other objects, features, and characteristics of the present invention, as well as the methods of operation and functions of the related elements of structure and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for the purpose of illustration and description only and are not intended as a definition of the limits of the invention.
As used herein, the singular form of “a”, “an”, and “the” include plural references unless the context clearly dictates otherwise. As used herein, the statement that two or more parts or components are “coupled” shall mean that the parts are joined or operate together either directly or indirectly, i.e., through one or more intermediate parts or components, so long as a link occurs. As used herein, “directly coupled” means that two elements are directly in contact with each other. As used herein, “fixedly coupled” or “fixed” means that two components are coupled so as to move as one while maintaining a constant orientation relative to each other.
As used herein, the word “unitary” means a component is created as a single piece or unit. That is, a component that includes pieces that are created separately and then coupled together as a unit is not a “unitary” component or body. As employed herein, the statement that two or more parts or components “engage” one another shall mean that the parts exert a force against one another either directly or through one or more intermediate parts or components. As employed herein, the term “number” shall mean one or an integer greater than one (i.e., a plurality).
Directional phrases used herein, such as, for example and without limitation, top, bottom, left, right, upper, lower, front, back, and derivatives thereof, relate to the orientation of the elements shown in the drawings and are not limiting upon the claims unless expressly recited therein.
A system 1 adapted to collect and store sleep study data is generally shown in
Clients 20 are any suitable processing device such as, without limitation, a general-purpose computer, a wireless device, a personal computer, or a mobile phone. Clients 20 and server 32 each include an associated memory 22. Memory 22 can be any one or more of a variety of types of internal and/or external storage media such as, without limitation, RAM, ROM, EPROM(s), EEPROM(s), FLASH, and the like that provide a storage register, i.e., a machine readable medium, for data storage such as in the fashion of an internal storage area of a computer, and can be volatile memory or nonvolatile memory. Memory 22 may also be located outside of clients 20 or server 32 and communicatively connected with its associated client 20 or server 32. Memory 22 may also be a removable device that is able to be removed from its associated client 20 or server 32.
Sleep lab 2 includes a patient room 12 and a control room 14. Patient room 12 and control room 14 are communicatively connected by a suitable network connection such as a local area network connection 16. Patient room 12 includes data collection equipment 18. Data collection equipment 18 is used to collect raw sleep study data such, without limitation, audio and video data, electroencephalogram (EEG) data, electrocardiogram (ECG) data, electroculogram (EOG) data, electromyogram (EMG) data, measurements of nasal airflow, measurements of blood oxygen levels and/or other physiological parameters. Control room 14 includes client 20 and memory 22. The raw sleep study data is transferred from data collection equipment 18 to client 20 via local area network connection 16 and is stored in memory 22. The raw sleep study data is stored in memory 22 as a set of files.
Remote scoring technician site 4 includes its associated client 20 and memory 22. A scoring technician at remote scoring technician site 4 “scores” raw sleep study data and stores the scoring data in memory 22 as a file. The scoring data includes data such as, without limitation, sleep staging data, apnea event data, and high heart rate event data.
Remote physician site 6 includes its associated client 20 and memory 22. A physician at remote physician site 6 reviews the raw sleep study data and scoring data in order to diagnose a patient.
Central server site 8 includes server 32 which is communicatively connected with clients 20 in order to send or receive data. Server 32 includes memory 22 which stores the data. Server 32 also includes web service 34. Web service 34 coordinates communication between server 32 and clients 20 such as responding to requests from clients 20 for data uploads or downloads. Web service 34 also tracks transfer operations between server 32 and clients 20. In order to track transfer operations between server 32 and clients 20, web service 34 uses data structures which will be described in more detail hereinafter with respect to
Although sleep lab 2, remote scoring technician site 4 and remote physician site 6 are shown in
A visual representation of a transfer object 40 in accordance with an exemplary embodiment of the disclosed concept is generally shown in
A visual representation of a transfer map 50 in accordance with an exemplary embodiment of the disclosed concept is generally shown in
Methods of transferring files between clients 20 and server 32 will be described hereinafter with respect to
A flowchart of a method of downloading a group of files (e.g., a group of sleep study files) from server 32 to one of clients 20 in accordance with an exemplary embodiment of the disclosed concept is generally shown in
After removing expired transfer operations, web service 34 checks if the files requested for download are locked 64. The process of checking if the requested files are locked will be described in more detail with respect to
If the requested files are not locked, web service 34 proceeds with the download request and creates a new transfer object 40 at 68. As previously described, transfer object 40 includes transfer ID 42 which is unique to the transfer operation, isDownloadOperation 44 which holds a value indicating that the current transfer operation is a download, and lastFileTransferTime 46 to hold information on the time the last file was transferred. At 70, web service 34 updates transfer map 50 to include the recently created transfer object 40. In the case that transfer map 50 does not include file group transfer information 52 corresponding to the requested group of files, web service 34 creates a new file group transfer information 52 entry including the file group ID 54 corresponding to the requested group of files and includes the recently created transfer object 40 in the new file group transfer information 52. If file group transfer information 52 corresponding to the requested group of files already exists, web service 34 adds the recently created transfer object 40 to the corresponding file group transfer information 52. Once transfer map 50 is updated, web service 34 communicates transfer ID 42 back to the client 20 which allows client 20 to begin downloading the requested group of files.
At 72, client 20 creates a temporary directory in which to temporarily store the downloaded files. At 74, client 20 downloads one of the requested files to the temporary directory by communicating file group ID 54, transfer ID 42 and the name of the requested file to web service 34. Web service 34 locates the requested file and begins the download of the requested file. Web service 34 also updates the lastFileTransferTime 46 in the transfer object 40 corresponding to the current operation to indicate the time that the download operation started. Upon receiving the requested file, client 20 places the file in the temporary directory. At 76, client 20 checks if all files in the requested group of files are downloaded. If all the files are not downloaded, client 20 repeats 74 for the next file in the requested group of files. If all the files are downloaded, client 20 informs web service 34 to indicate that the download operation is complete.
At 78, web service 34 removes the transfer object 40 corresponding to the recently completed download operation. At 80, web service 34 updates transfer map 50 by removing transfer object 40 from transfer map 50 and, if there are no transfer objects 40 remaining in the file group transfer information 52 corresponding to the requested group of files, web service 34 also removes the file group transfer information 52 corresponding to the requested group of files from transfer map 50.
At 82, client 20 moves the downloaded files from the temporary directory to their final destination, such as a directory where a user requested the files to be downloaded to. At 84, client 20 deletes the temporary directory.
A flowchart of a method of uploading a group of files (e.g., a group of sleep study files) from one of clients 20 to server 32 in accordance with an exemplary embodiment of the disclosed concept is generally shown in
After removing expired transfer operations, web service 34 checks if the files requested for upload are locked 94. The process of checking if the requested files are locked will be described in more detail with respect to
If the requested files are not locked, web service 34 proceeds with the upload request and creates a new transfer object 40 at 98. As previously described, transfer object 40 includes transfer ID 42 which is unique to the transfer operation, isDownloadOperation 44 which holds a value indicating that the current transfer operation is an upload, and lastFileTransferTime 46 to hold information on the time the last file was transferred. At 100, web service 34 updates transfer map 50 to include the recently created transfer object 40. In the case that transfer map 50 does not include file group transfer information 52 corresponding to the requested group of files, web service 34 creates a new file group transfer information 52 entry including the file group ID 54 corresponding to the requested group of files and includes the recently created transfer object 40 in the new file group transfer information 52. If file group transfer information 52 corresponding to the requested group of files already exists, web service 34 adds the recently created transfer object 40 to the corresponding file group transfer information 52.
At 102, web service 34 creates a temporary directory on server 32 to store uploaded files. Once the temporary directory is created, web service 34 communicates transfer ID 42 back to the client 20 which allows client 20 to begin uploading the requested group of files.
At 104, client 20 uploads one of the requested files to the temporary directory on server 32. When a file is uploaded, client 20 communicates file group ID 54, transfer ID 42 and the name of the requested file to web service 34. Web service 34 updates the lastFileTransferTime 46 in the transfer object 40 corresponding to the current operation to indicate the time that the upload operation started. Upon receiving the requested file, web service 34 places the file in the temporary directory on server 32. At 106, client 20 checks if all files in the requested group of files are uploaded. If all the files are not uploaded, client 20 repeats 104 for the next file in the requested group of files. If all the files are uploaded, client 20 informs web service 34 to indicate that the download operation is complete.
At 108, web service 34 moves the uploaded files from the temporary directory to their final destination. At 110, web service 34 deletes the temporary directory.
At 112, web service 34 removes the transfer object 40 corresponding to the recently completed upload operation. At 114, web service 34 updates transfer map 50 by removing transfer object 40 from transfer map 50 and, if there are no transfer objects 40 remaining in the file group transfer information 52 corresponding to the requested group of files, web service 34 also removes the file group transfer information 52 corresponding to the requested group of files from transfer map 50.
A flowchart of a method of checking if files are locked from a download operation in accordance with an exemplary embodiment of the disclosed concept is generally shown in
If the file group transfer information 52 is present in transfer map 50, web service 34 checks all transfer objects 40 in key to determine whether any upload operations are in progress for the requested group of files. Web service 34 checks isDownloadOperation 44 in the file transfer objects 40 to determine whether any uploads are in progress for the requested group of files. Multiple simultaneous downloads are permitted for a group of files, so if web service 34 determines that no upload operations are in progress, web service 34 proceeds to allow the download operation at 124. However, if there is an upload operation in progress, web service 34 proceeds to deny the download request at 126 and informs client 20 that the download request has been denied. At 128, the method of
A flowchart of a method of checking if files are locked from an upload operation in accordance with an exemplary embodiment of the disclosed concept is generally shown in
At 136, the method of
A flowchart of a method of checking and removing expired transfer operations in accordance with an exemplary embodiment of the disclosed concept is generally shown in
If the file group transfer information 52 is present, web service 34 proceeds to check the transfer objects 40 in the file group transfer information 52 to determine whether any transfer operations are expired at 142. Expired file transfers are those that have been in progress for a time that exceeds a predetermined expiration time for an individual file, and that won't complete because the transfer has failed for any reason such as, without limitation, a loss of internet connection. Web service 34 checks lastFileTransferTime 46 in the transfer objects 40 in file group transfer information 52 to determine whether the time between when the last file transfer started and the current time exceeds a predetermined expiration time. The predetermined expiration time is a selected maximum amount of time a single file transfer is permitted to take. If the time between when the last file transfer started and the current time does not exceed the predetermined expiration time, web service 34 determines that the transfer operation is still in progress and proceeds to end the routine at 148. If the time between when the last file transfer started and the current time exceeds the predetermined expiration time, web service 34 determines that the transfer operation meeting this condition has expired and proceeds to remove the corresponding transfer object 40 at 144. Web service 34 then updates transfer map 50 at 146 to remove transfer object 40 from transfer map 50. After, the method of
Setting the predetermined expiration time for an individual file transfer allows web service 34 to clean up transfer objects 40 and temporary directories for transfer operations that have failed for any reason such as, without limitation, a loss of internet connection. Clean up of transfer object 40 prevents files from being locked indefinitely, which in turn will allow other users to perform file transfer operations on the files in the file group. The predetermined expiration time also aids in preventing Denial of Service (DoS) attacks on the server 32 by limiting the amount of time for a single file transfer.
Although the disclosed concept has been described in the context of transferring sleep study data, it is contemplated that the disclosed concept may also be adapted for use in transferring any type of data between remote locations and a central storage location. It will be appreciated that the disclosed concept is particularly suitable for use in transferring groups of files.
The disclosed concept can also be embodied as computer readable codes on a tangible, non-transitory computer readable recording medium. The computer readable recording medium is any data storage device that can store data which can be thereafter read by a computer system. Non-limiting examples of the computer readable recording medium include read-only memory (ROM), non-volatile random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, disk storage devices, and optical data storage devices.
In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. The word “comprising” or “including” does not exclude the presence of elements or steps other than those listed in a claim. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The word “a” or “an” preceding an element does not exclude the presence of a plurality of such elements. In any device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain elements are recited in mutually different dependent claims does not indicate that these elements cannot be used in combination.
Although the invention has been described in detail for the purpose of illustration based on what is currently considered to be the most practical and preferred embodiments, it is to be understood that such detail is solely for that purpose and that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover modifications and equivalent arrangements that are within the spirit and scope of the appended claims. For example, it is to be understood that the present invention contemplates that, to the extent possible, one or more features of any embodiment can be combined with one or more features of any other embodiment.
This application claims priority under 35 U.S.C. §119(e) from U.S. provisional patent application No. 61/829,306, entitled “METHOD AND SYSTEM FOR RELIABLY TRANSFERRING FILES TO AND FROM A REMOTE SERVER” and filed on May 31, 2013, the contents of which are incorporated herein by reference.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/IB2014/061768 | 5/28/2014 | WO | 00 |
Number | Date | Country | |
---|---|---|---|
61829306 | May 2013 | US |