WO1999063462A1 - Method and apparatus for predicting and improving patient compliance with medical treatment - Google Patents

Method and apparatus for predicting and improving patient compliance with medical treatment Download PDF

Info

Publication number
WO1999063462A1
WO1999063462A1 PCT/US1999/012222 US9912222W WO9963462A1 WO 1999063462 A1 WO1999063462 A1 WO 1999063462A1 US 9912222 W US9912222 W US 9912222W WO 9963462 A1 WO9963462 A1 WO 9963462A1
Authority
WO
WIPO (PCT)
Prior art keywords
γöa
γöainclude
smp
γöadefine
null
Prior art date
Application number
PCT/US1999/012222
Other languages
French (fr)
Inventor
Russell P. Hall, Iii
Seth M. Powsner
Allan Ray Showalter
Richard Alan Spitzer
Original Assignee
Paretoscope, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Paretoscope, Inc. filed Critical Paretoscope, Inc.
Priority to AU43276/99A priority Critical patent/AU4327699A/en
Publication of WO1999063462A1 publication Critical patent/WO1999063462A1/en

Links

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H15/00ICT specially adapted for medical reports, e.g. generation or transmission thereof
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H10/00ICT specially adapted for the handling or processing of patient-related medical or healthcare data
    • G16H10/20ICT specially adapted for the handling or processing of patient-related medical or healthcare data for electronic clinical trials or questionnaires
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H10/00ICT specially adapted for the handling or processing of patient-related medical or healthcare data
    • G16H10/60ICT specially adapted for the handling or processing of patient-related medical or healthcare data for patient-specific data, e.g. for electronic patient records
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H50/00ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
    • G16H50/70ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for mining of medical data, e.g. analysing previous cases of other patients

Definitions

  • This invention relates to medical therapies and. more particularly, to apparatus and methods for predicting and improving patient compliance with prescribed medical treatments.
  • This invention which may be used in individual patient treatment as well as group medical care, has application in all fields of medicine, including but not limited to, internal medicine, psychiatry, surgery, obstetrics, pediatrics, and other medical specialties.
  • Steps to make treatments less onerous include prescribing fewer medications, prescribing medications with fewer side-effects (or side-effects less troubling to a specific patient), prescribing medication according to regimes that reduce the number of times a day the medication must be ingested, and prescribing medication according to regimes that reduce the number of pills that must be ingested each day.
  • Steps to make patients better informed include reviewing medication schedules with patients, reviewing side- effects with patients, reviewing basic medical facts and prognostic information with patients, and providing informational brochures, video tapes or instructional software which allow patients to learn about their illness and their treatments on their own.
  • Wrist watches can beep when it is time to take another pill. Somewhat larger timers play back a family member's voice as a reminder. Medication alarm clocks can flash a light to alert patients with hearing loss. Special pill boxes and charts help organize medications. Automated medication dispensers assure the right pills at the right time, and safeguard against overuse of medicine.
  • Pagers with signal-back capability can both deliver a reminder to a patient and accept an acknowledgment from the patient: a form of monitoring without actual visits.
  • An object of this invention accordingly, is to provide improved methods and apparatus for predicting and improving patient compliance with prescribed medical treatments. More particularly, an object of the invention is to provide such methods and apparatus as take into account characteristics of individual patients in selecting and presenting treatment recommendations in fashions that increase the likelihood those treatments will be followed to completion.
  • a further object of this invention is to provide such methods and apparatus as take into account the practices and preferences of individual physicians and other health care providers, in concert with patient characteristics, in selecting and presenting such recommendations.
  • Yet still another object of the invention is to provide such methods and apparatus as are amenable to automation.
  • the invention provides methods and apparatus for predicting and improving patient compliance with a course of medical treatment.
  • a method of predicting and/or improving compliance by inputting data about the patient and. optionally, about the health care provider, the condition diagnosis/prognosis, and the treatment recommendation. From this data, the method determines the patient's attitude or amenability to treatment. The method can also determine the health care provider's attitude, or ability to induce compliance with a course of treatment. The method generates, from the input data and corresponding determinations, an estimation of likelihood of patient compliance with a recommended treatment. Alternatively, or in addition, the method can generate a suggested style or program of treatment likely to have an increased probability of patient compliance.
  • Still further aspects of the invention provide apparatus, such as general or special-purpose computers, operating in accord with the methods described above.
  • One such aspect provides, for example, an apparatus that includes an element for inputting patient data, an element for inputting health care provider data (e.g., physician data, medical staff data and health care organization data), diagnosis- prognosis data and treatment recommendation data.
  • health care provider data e.g., physician data, medical staff data and health care organization data
  • diagnosis- prognosis data e.g., treatment recommendation data.
  • Each of these inputs has identifier components, e.g., individual patient and physician and group identifiers, as well as quantitative values, e.g., patient age.
  • the inputs may also have temporal values, e.g., time the quantitative values were measured.
  • An observer identifier may also be provided if the corresponding data is not obtained directly from subject.
  • a patient signal merging element identifies missing or corrupted inputs for individual patients. This can be based, for example, on group data values. Likewise, a provider signal merging element identifies missing or corrupted input for individual health care providers, again, based on provider group values.
  • a diagnosis-prognosis merging element and a treatment recommendation merging element identify missing or corrupted data in corresponding fashion.
  • An apparatus can also include a patient attitude estimating element that analyzes the output from the patient signal merging element.
  • a provider style estimating element likewise analyzes the output from the provider signal merging element.
  • the attitude and style estimating elements feed their output into a treatment recommendation matcher which also accepts outputs from diagnosis-prognosis and treatment merging elements.
  • the treatment recommendation matcher generates outputs including, but not limited to, estimations of the probability of patient compliance with the recommended treatment and with the styles of treatment that are likely to have reasonable probabilities of patient compliance.
  • a display conditioner which is provided in further aspects of the invention, accepts signals from the treatment recommendation matcher and prepares them for physicians, medical staff, patients, and computerized patient record systems.
  • an apparatus as described above can include display or printing elements that show display conditioner output, or intermediate signals, in text or graphic form.
  • the apparatus can include output elements, e.g., facsimile interface or serial interface or other computer interfaces, to permit different views or recording of display conditioner output or intermediate signals.
  • output elements e.g., facsimile interface or serial interface or other computer interfaces
  • the apparatus can include input elements, e.g., touch screen or keyboard or page scanner or serial interface or other computer interface, to permit either direct or derived information to be used.
  • input elements e.g., touch screen or keyboard or page scanner or serial interface or other computer interface
  • the apparatus can use inputs of a larger device, e.g., an automated instructional system or game, and the apparatus can output to the larger device so that instructional content may be modified by signals generated, e.g., instructional content can be customized.
  • a larger device e.g., an automated instructional system or game
  • the apparatus can generate signals corresponding to group characteristics as it does for individual patient characteristics.
  • Figure 1 depicts a computer system used in connection with a preferred practice of the invention
  • Figure 2 depicts the overall data flow with a system embodying the invention.
  • Figure 3 depicts an exemplary output by an apparatus operating in accord with a preferred practice of the invention.
  • the illustrated embodiment predicts and improves patient compliance by 1) gauging patient attitudes and beliefs, 2) gauging physician style of interaction and treatment, then using (1) and (2) along with 3) diagnosis characteristics and 4)treatment characteristics to 5) gauge the match or mismatch between patient and treatment. From result (5), systems according to the invention estimate 6) probability of compliance, 7) subset of treatment characteristics most influencing (6), and 8) style of physician patient interaction most likely to increase compliance (6).
  • a preferred embodiment of the invention starts with a survey of the population from which patients are drawn. Demographics, opinion survey questions, and medical information are collected from a representative population sample. Cluster analysis yields a few population subgroups whose attitudes, beliefs, behaviors are likely to be similar to each other, and different from people in other clusters.
  • each datum from the survey is reanalyzed in terms of its correlation with a person's assigned cluster.
  • the cluster to which a patient belongs is then estimated by collecting information similar to that collected during the survey. Data that does not correlate well with cluster assignment can be skipped. Calculations can be made to compensate for missing data.
  • Reanalysis after cluster determination, also permits match / mismatch relationships to be determined. For each cluster, reviewing group responses makes certain characteristics apparent. For example, if most members of one cluster are highly educated and indicate they like reading news articles about medical discoveries, they can be assumed to prefer detailed explanations about treatments. Similarly, if members of another cluster indicate they are impatient and they have trouble keeping appointments, they are unlikely to comply with treatments based on exercise and diet.
  • Diagnoses and treatments are characterized along simple dimensions; e.g., severity or risk, visibility, duration, is taking pills involved, is surgery required, etc.
  • the illustrated embodiment avoids use of a long, exhaustive list of ailments and medications by working with these characterizations. It can handle a new disease and treatment with addition only of a small set of information or specification of an analogous disease and treatment.
  • Figure 1 illustrates a computer system of the type used in connection with practice of the invention.
  • Computer 101 is connected to data processing peripheral units comprising a flat panel display and touch screen 121, disk memory 123, a computer communication network 125, a pointing device 127, a facsimile modem 129, a video monitor 131. a keyboard 133, a printer 135, and a mark sense or page scanner 137.
  • the disk memory 123 serves as a non-volatile storage element for information accessed by the computer 101.
  • the computer communication network 125 serves to allow access to nonvolatile storage elements and databases or other peripheral devices among a collection of computers.
  • the flat panel display and touch screen 121, the pointing device 127, the video monitor 131, and the keyboard 133 provide an interface between the computer 101 and the user.
  • the flat panel display and the monitor present a graphic display of signals generated by the computer 101, while the keyboard 133 and pointing device 133 convert typed messages and positions signals into computer-readable form.
  • a flat panel display and touch screen 121 may suffice without a video monitor 131 and a separate pointing device 127.
  • a flat panel display and touch screen 121 may suffice without any other input or output devices, e.g., eliminating the need for a printer 135 or scanner
  • the illustrated computer 101 includes functional units comprising an I/O controller 104, a central processor 102, and a (random access) memory unit 103.
  • the I/O controller 104 is an interface between the computer 101 and its peripheral units.
  • the central processor 102 serves as the primary source of control, arithmetic, and logic operations within the computer 101.
  • the memory unit 103 provides volatile, rapid-access storage for the computer 101, particularly for the central processing unit 102.
  • the memory unit 103 may also provide non- volatile storage, which, in sufficient quantity, eliminates the need for disk memory 123.
  • Software functions 111 are built up from basic operating system & graphical support 118 in a customary manner so that compliance analysis 112 processes data from a variety of sources.
  • Clinical & financial information system 113 data if not directly available in a specific implementation, can be obtained through database functions 114 using operating system & graphical support 118 making use of computer network communication 125 or modem 129.
  • Such information can obtained from medical staff or directly from patients using accept data 115 and present data 116 user interface functions 117 working through flat panel display & touch screen 121 or through pointing device 127 and video monitor 131 and keyboard 133.
  • the illustrated hardware used for practice of the invention can be selected from any one of many commercially available programmable digital computers or personnel digital assistants, e.g., preferably, a commercially available Palm PilotTM running version 2.0 of the PilotTM operating system, as programmed in accord with the teachings below. Operation
  • the structure and operation of the illustrated embodiment is premised on the notion that effective approaches to improving treatment compliance take into account individual patient attitudes and beliefs. Those patients inclined to believe their physicians' judgments and recommendations and whose temperament allows them to follow complicated instructions, for example, might do best with quick, straightforward prescriptions. Those patients inclined to be skeptical of physicians and medical treatment, on the other hand, might be better served with detailed prognostic information and instructions on watching for developments that they personally believe necessitate treatment. Still others, those patients who prefer a choice of treatment options could receive a selection of possible course of treatment while, those who prefer one "best" recommendation could receive it.
  • the illustrated embodiment also operates on the assumption that effective treatment takes into account individual physician style and how that interacts with various patient attitudes and beliefs. For example, a dogmatic professional style, and delayed examination due to office overbooking may cause a skeptical and easily insulted patient to consciously or unconsciously ignore treatment recommendations as if to get even. On the other hand, an accommodating professional style, attentive to individual patient preferences with extra time to talk, may be inte ⁇ reted as diagnostic uncertainty, or lack of professional stature by a patient who inte ⁇ rets a more authoritarian style as indicative of a technical expert whose time is much in demand.
  • Figure 2 depicts a functional interrelationship between elements of a preferred embodiment of the invention, as well as the processing of data by those elements.
  • Patient data merging 219 accepts input, if any, directly from the patient 201 and merges it with patient related data input from medical / office staff input 203, health care organization / office information systems 207, and estimated / expected values
  • Output from patient data merging 219 represents the system's best available characterization of the patient for use in further processing.
  • physician data merging 221 accepts input from the physician 205, medical / office staff input 203, health care organization / office information systems 207, and estimated / expected values 209.
  • Output from physician data merging 221 represents the system's best available characterization of the physician, or health care provider, for use in further processing.
  • Diagnosis - prognosis data merging 215 and treatment data merging 217 provide similar data processing for diagnosis-prognosis and treatment respectively.
  • Complex data signals are passed in this apparatus. These signals include traditional information, e.g., age, sex, weight, blood pressure and laboratory values. These signals include health care utilization information, e.g., patient identifiers, health care provider identifiers, number of office visits, number of prescriptions. These signals include lifestyle and attitudinal information, e.g., hobbies, questionnaire answers, personality and psychological testing results. These signals also include coded diagnoses and treatments, current and past. In a preferred implementation, this information is kept as lists or sets of attribute-value pairs; most of the values are numeric, but non-numeric data and sub-lists are used at times.
  • treatment information might be as simple as avoid weight bearing for a twisted ankle with a duration - 7 days and medication form - none and surgery - none.
  • treatment input might be a list of options starting with antibiotics for a sexually transmitted disease with a duration - 10 days and medication form -pill and surgery- none, followed by antibiotics with a duration - once and medication form - shot in buttocks and surgery - none.
  • estimated or expected data values 209 need not be implemented as an independent entity.
  • Data merging modules 215, 217, 219, & 221 may include constants providing the same information.
  • Patient attitude estimation 223 analyzes input from patient data merging 219 to characterize the patient's attitude with respect to medical illness and treatment.
  • Physician style estimation 225 analyzes input from physician data merging 221 to characterize the physician or health care provider's style of patient interaction and treatment.
  • Recommendation matching 227 analyzes the combination of inputs characterizing the overall medical encounter, namely, patient attitude 223, physician style 225, diagnosis-prognosis 215 and treatment 217. Its output estimates the likelihood that the patient will comply with each of the treatments and styles of medical intervention.
  • Display conditioner 229 accepts input from recommendation matching 227 and converts it into a format, graphical or textual, suitable for the required output 231.
  • Output might be as simple as a single number proportional to probability that this patient will comply with this physician's recommendation of a single treatment, potentially signaling the need for reconsideration of treatment options.
  • Output may be more complicated to adequately explain to a health care provider what style of treatment might be more likely gain patient compliance.
  • the display conditioner can also accept input from other elements to provide output that monitors the operation of the system. They will also appreciate that conditioner output could be saved on disk memory 123 or stored via database functions 114 when the apparatus is being used to predict compliance for a group of patients or members of a health care organization. Segmentation
  • the segmentation process utilized in the illustrated embodiment was developed using well established and accepted methods of population survey techniques. This identified the most relevant content for the survey and the appropriate match to the population being interviewed. For example, asking bus drivers about chicken farming, although using properly framed questions and statistical analysis, is a clear mismatch of content with audience.
  • the original questionnaire contained over 150 items used in the analysis. Since the administration of this number of items in a survey is not practical to administer in any daily medical situation, further statistical analysis was used to reduce the total set to a smaller number, in the case of this study 20 statements, that would replicate the original segmentation and very highly correlate with the allocation of people to specific segments.
  • a basic threshold was set, that the reduced number of questions to be used in typing people must correctly classify (that is, place in the same groups as the full questionnaire) at least 75% of the people. And, any incorrect classification must be in the next closest or adjacent segment for which the person had strong tendencies.
  • a questionnaire used in the illustrated embodiment obtains the patient's degree of agreement (or disagreement) with the following statements:
  • Figure 3 illustrates an exemplary individual output generated by the system described above.
  • the output reveals a prototypical patent, Mr. John Doe, suffering from hyperlipidemia, who believes he is in good health and who pursues his own health care information. His questionnaire answers suggest that he is capable of sticking with treatments that require daily adherence over long periods of time; however, they suggest he prefers quick, technically oriented solutions. Under these circumstances, the output warns his physician that it is impossible for anyone to know whether or not Mr. Doe will in fact stick with the treatment recommended. Asking Mr.

Abstract

Methods and apparatus for predicting and improving patient compliance with a course of medical treatment call for inputting data about the patient (201) and, optionally, about the health care provider (203), the condition diagnosis/prognosis (215), and the treatment recommendation (217). From this data, the patient's attitude or amenability to treatment can be determined, as can the health care provider's attitude and/or ability to induce compliance with a course of treatment. Moreover, methods and apparatus according to the invention can estimate the likelihood of patient compliance with a specific course of treatment or can generate a suggested program of treatment likely to have an increased probability of patient compliance.

Description

METHOD AND APPARATUS FOR PREDICTING AND IMPROVING PATIENT COMPLIANCE WITH MEDICAL TREATMENT
Reference to Related Applications
This application is a continuation of copending United States Provisional Patent Application No.60/087,847, filed June 3, 1998, the teachings of which application, including the appendices filed therewith, are incorporated by reference herein.
Reference to Appendices
The disclosure of this patent document contains material which is subject to copyright and/or mask work protection. The owner thereof has no objection to facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office patent file or records, but otherwise reserves all copyright and/or mask work rights whatsoever.
Background of the Invention
This invention relates to medical therapies and. more particularly, to apparatus and methods for predicting and improving patient compliance with prescribed medical treatments. This invention, which may be used in individual patient treatment as well as group medical care, has application in all fields of medicine, including but not limited to, internal medicine, psychiatry, surgery, obstetrics, pediatrics, and other medical specialties.
In general, medical treatments require patient adherence to a course of action over a period of time. Treatment of hypertension, for example, usually requires taking one or two pills a day and avoiding salty foods. Illnesses as diverse as heart disease, diabetes, advanced arthritis, manic depressive illness, and schizophrenia involve daily medications. Treatment of low back pain may involve specific exercises over a long period of time. However, even proven cures will fail, if patients do not take them. Cost with no benefit results when patients purchase medications, surgical appliances, or exercise equipment only to leave them in a closet.
Current approaches to improving patient compliance focus on making treatment less onerous for patients and informing and educating patients. Steps to make treatments less onerous include prescribing fewer medications, prescribing medications with fewer side-effects (or side-effects less troubling to a specific patient), prescribing medication according to regimes that reduce the number of times a day the medication must be ingested, and prescribing medication according to regimes that reduce the number of pills that must be ingested each day. Steps to make patients better informed include reviewing medication schedules with patients, reviewing side- effects with patients, reviewing basic medical facts and prognostic information with patients, and providing informational brochures, video tapes or instructional software which allow patients to learn about their illness and their treatments on their own.
Other approaches to improving patient compliance involve automatic reminders for patients. Wrist watches can beep when it is time to take another pill. Somewhat larger timers play back a family member's voice as a reminder. Medication alarm clocks can flash a light to alert patients with hearing loss. Special pill boxes and charts help organize medications. Automated medication dispensers assure the right pills at the right time, and safeguard against overuse of medicine.
More direct, and more expensive approaches to enhance patient compliance involve incentive payments or monitoring. The goal of eradicating tuberculosis has required public health officials, under some circumstances, to employ medical personnel to visit patients daily to directly observe them taking their medication. Pagers with signal-back capability can both deliver a reminder to a patient and accept an acknowledgment from the patient: a form of monitoring without actual visits.
Indirect monitoring has been attempted by reviewing pill bottle openings, prescription refills, and physician or hospital visits. These approaches tend to be expensive, e.g., requiring electronic pill bottle tops which signal a central office whenever the bottle is opened, or slow, e.g., detecting failure to refill a one month prescription only after a week into the second month of treatment. While these techniques do focus attention on patients whose treatment is not going as planned, they are vulnerable to false negative readings: a pill bottle opening does not necessarily mean that the correct number of pills were taken.
In the foregoing regards, reference may be made to:
R Brian Hynes, M.D., K Ann McKibbon, & Ronak Kanani,
"Systematic review of randomized trials of interventions to assist patients to follow prescriptions for medications," Lancet volume 348. pages 383-386, August 10, 1996
Chris Butler, M.B., Ch.B., M.R.C.G.P., Stephen Rollnick, Ph.D., &
Nigel Stott, M.D., Ch.B., F.R.C.G.P, F.R.C.P., "The practitioner, the patient and resistance to change: recent ideas on compliance," Canadian Medical Association Journal volume 154, pages 1357-1362, May 1, 1996
Alan Stoudemire. M.D., & Troy Thompson, M.D., "Medication Noncompliance: Systematic Approaches to Evaluation & Intervention," General Hospital Psychiatry, volume 5, pages 223-239, 1983
Nancy Houston Miller, R.N., Martha Hill, Ph.D., R.N., Thomas Kottke,
M.D., Ira S. Ockene, M.D., "The Multilevel Compliance Challenge: Recommendations for a Call to Action," Circulation, volume 95, pages 1085-1090, February 18, 1997.
Joyce Cramer & Bert Spilker, Ph.D, M.D. eds, Patient Compliance in
Medical Practice and Clinical Trials. Raven Press, New York, 1991 Donald Meichenbaum & Dennis C Turk, Facilitating Treatment Adherence. Plenum Press, New York, 1987
Jack E Fincham, Ph.D., ed, Advancing Prescription Medicine Compliance, Haworth Press, Inc., New York, 1995.
Current approaches to improving medication compliance tend to use one strategy for all patients: individual characteristics are not taken into account. It is up to the treating physician to select among the various approaches. Unfortunately, physicians have proven incapable of accurately predicting which patients will comply with prescribed treatment and which ones will not. Worse, physicians are usually unaware of their inability to predict. Other commonly accepted factors for compliance prediction, such as severity of illness and cost of medication, are now also known to be inaccurate. Nor is compliance accurately predicted by socioeconomic class or cultural background.
The current approaches also assume that patients trust their physicians' recommendations and that patients want to comply with those recommendations (or, at least, believe they would be better off, if they did comply with the recommendations). These approaches further assume that patients react in a reasonably positive manner to their physicians or health care providers. Failure to comply is thus assumed to represent inability, ignorance, or inattention.
An object of this invention, accordingly, is to provide improved methods and apparatus for predicting and improving patient compliance with prescribed medical treatments. More particularly, an object of the invention is to provide such methods and apparatus as take into account characteristics of individual patients in selecting and presenting treatment recommendations in fashions that increase the likelihood those treatments will be followed to completion.
A further object of this invention is to provide such methods and apparatus as take into account the practices and preferences of individual physicians and other health care providers, in concert with patient characteristics, in selecting and presenting such recommendations.
Yet still another object of the invention is to provide such methods and apparatus as are amenable to automation.
Summary of the Invention
The aforementioned and other objects are attained by the invention, which provides methods and apparatus for predicting and improving patient compliance with a course of medical treatment. Thus, in one aspect, there is provided a method of predicting and/or improving compliance by inputting data about the patient and. optionally, about the health care provider, the condition diagnosis/prognosis, and the treatment recommendation. From this data, the method determines the patient's attitude or amenability to treatment. The method can also determine the health care provider's attitude, or ability to induce compliance with a course of treatment. The method generates, from the input data and corresponding determinations, an estimation of likelihood of patient compliance with a recommended treatment. Alternatively, or in addition, the method can generate a suggested style or program of treatment likely to have an increased probability of patient compliance.
Further aspects of the invention provide methods as described above in which the patient's attitude is determined based on his or her degree of agreement with statements selected on the basis of population survey techniques and, more particularly, for example, on the basis of segmentation process techniques. One aspect of the invention accordingly calls for finding the degree of patient agreement with one or more of the statements:
I'm almost always satisfied with the medical treatment I receive
There are a lot of health care people that you can't trust Doctors sometimes seem to make decisions before I finish explaining my problems or asking all my questions
I know people who do not exactly follow the doctor's advice and they seem to do just fine
I never know what questions to ask when I go to the doctor with a problem
I try to keep up with current medical information whether I have a problem or not
I've read or heard about new health care treatments that my doctor did not know about
When I get sick or have a serious problem. I do my own research about the illness and treatments
I feel I personally know enough about some medical problems and treatments that I feel comfortable giving advice about them
The costs I pay for health care are reasonable
There is so much information about what is healthy and what is not that it is impossible to make sense of it
I often seek advice from other people
I'm a patient person
I don't like to make long term plans
The quality of many products has gone down I feel comfortable using the newest technologies
I am very good about planning things in order to keep my appointments
You really do not have much control over what happens to you in life like an illness, it's just a matter of fate or luck
I am pretty good about following healthy eating habits
I wear seatbelts as a driver and as a passenger in a car or truck all the time
Still further aspects of the invention provide apparatus, such as general or special-purpose computers, operating in accord with the methods described above. One such aspect provides, for example, an apparatus that includes an element for inputting patient data, an element for inputting health care provider data (e.g., physician data, medical staff data and health care organization data), diagnosis- prognosis data and treatment recommendation data. Each of these inputs has identifier components, e.g., individual patient and physician and group identifiers, as well as quantitative values, e.g., patient age. The inputs may also have temporal values, e.g., time the quantitative values were measured. An observer identifier may also be provided if the corresponding data is not obtained directly from subject.
A patient signal merging element identifies missing or corrupted inputs for individual patients. This can be based, for example, on group data values. Likewise, a provider signal merging element identifies missing or corrupted input for individual health care providers, again, based on provider group values. A diagnosis-prognosis merging element and a treatment recommendation merging element identify missing or corrupted data in corresponding fashion.
An apparatus according to this aspect of the invention can also include a patient attitude estimating element that analyzes the output from the patient signal merging element. A provider style estimating element likewise analyzes the output from the provider signal merging element. The attitude and style estimating elements feed their output into a treatment recommendation matcher which also accepts outputs from diagnosis-prognosis and treatment merging elements.
The treatment recommendation matcher generates outputs including, but not limited to, estimations of the probability of patient compliance with the recommended treatment and with the styles of treatment that are likely to have reasonable probabilities of patient compliance.
A display conditioner, which is provided in further aspects of the invention, accepts signals from the treatment recommendation matcher and prepares them for physicians, medical staff, patients, and computerized patient record systems.
According to a further aspect of the invention, an apparatus as described above can include display or printing elements that show display conditioner output, or intermediate signals, in text or graphic form.
In still another aspect, the apparatus can include output elements, e.g., facsimile interface or serial interface or other computer interfaces, to permit different views or recording of display conditioner output or intermediate signals.
In still another aspect, the apparatus can include input elements, e.g., touch screen or keyboard or page scanner or serial interface or other computer interface, to permit either direct or derived information to be used.
In still another aspect, the apparatus can use inputs of a larger device, e.g., an automated instructional system or game, and the apparatus can output to the larger device so that instructional content may be modified by signals generated, e.g., instructional content can be customized.
In still another aspect, the apparatus can generate signals corresponding to group characteristics as it does for individual patient characteristics. These and other aspects of the invention are evident in the drawings and in the description which follows.
Brief Description of the Drawings
A further understanding of the invention may be attained by reference to the attached drawings, in which:
Figure 1 depicts a computer system used in connection with a preferred practice of the invention;
Figure 2 depicts the overall data flow with a system embodying the invention; and
Figure 3 depicts an exemplary output by an apparatus operating in accord with a preferred practice of the invention.
Detailed Description of the Illustrated Embodiment
Overview
Patients are more likely to comply with medical treatments that are in harmony with their personal styles. An energetic, active person given to athletic hobbies will have difficulty following a treatment regime of rest and warm compresses for a small bone fracture. Such a person may prefer surgical treatment offering quicker return to routine activity, despite surgical risk and cost. On the other hand, a person of philosophical and aesthetic inclination might be quite comfortable with a treatment requiring no surgery and no pills, despite the time required. Even for similar illnesses, different patients may prefer different treatments.
Patients are more likely to comply with medical treatments they believe. Unfortunately, important medical conditions like high blood pressure and high cholesterol are not painful and do not limit activity. Patients must accept such diagnoses based on their physician's interpretation of instrument readings and laboratory data. Then, they must accept a physician's judgment that their blood pressure or cholesterol is abnormal enough to warrant medication. Finally, they must accept daily medications that have no immediate benefit, though sometimes medications have immediate side-effects. Patients take a lot on faith.
It is difficult convincing patients that they have been correctly diagnosed and that they have been prescribed a personally optimum treatment. It is an uncertain task that is time consuming and costly. Uncertainty can be reduced by determining personal attitudes and styles ahead of time. Then, treatment recommendations can be matched to patient style; and, presentation of medical findings can be matched to patient attitude.
People vary widely in their approach to new information, and from whom they will accept it. Some like news: they seek out news stands and shows and search the World Wide Web. Others are seen with portable tape and compact disk players connected to earphones blocking out even changes in their immediate surroundings. Some people trust information only from established sources with a stake in being factually correct; e.g., Encyclopedia Britannica, major metropolitan newspapers, major network news. Some people prefer the opinions of family, friends and close acquaintances with a stake in their personal well-being. And, even people who share a source may want different details; i.e., all the facts for their own analysis, or, just the bottom line.
Different physicians interact quite differently with their patients. One aspect is their presentation of findings and treatment recommendations. This critical information presentation can be adapted for an individual patient, and more easily than, say, examination technique for a patient's ears, which is proscribed by human anatomy. Trusting patients, who prefer hearing the bottom line, may be more comfortable with just a prescription: detailed explanations may worry them. Skeptical patients might be won over with a detailed explanation and an offer of a separate, follow-up appointment for discussion of treatment options; they might respond to the absence of pressure to commit or comply immediately. Office routine, schedules, pamphlets and staff are secondary components of physician patient interaction. These can be adapted for specific patient populations if not individual patients.
Predicting and Improving Compliance
The illustrated embodiment predicts and improves patient compliance by 1) gauging patient attitudes and beliefs, 2) gauging physician style of interaction and treatment, then using (1) and (2) along with 3) diagnosis characteristics and 4)treatment characteristics to 5) gauge the match or mismatch between patient and treatment. From result (5), systems according to the invention estimate 6) probability of compliance, 7) subset of treatment characteristics most influencing (6), and 8) style of physician patient interaction most likely to increase compliance (6).
There are no well-accepted techniques for gauging patients' and physicians' attitudes, beliefs and styles within the art of medical compliance. However, the use of demographic data and questionnaires to estimate personality and preferences is well known in other fields. This invention makes novel adaptation of these techniques and combines them with medical information to achieve its purpose.
To avoid bias from commonly accepted factors for compliance prediction, a preferred embodiment of the invention starts with a survey of the population from which patients are drawn. Demographics, opinion survey questions, and medical information are collected from a representative population sample. Cluster analysis yields a few population subgroups whose attitudes, beliefs, behaviors are likely to be similar to each other, and different from people in other clusters.
In market surveys, cluster analysis facilitates segmentation of the market. Medical compliance could be considered a problem in selling medical treatment. However, there are critical differences. Companies start with a product and aim to find customers amidst a large population who will want their product. Treating physicians start with a patient (customer) and aim to find a treatment (product) with which the patient will comply. Products are mass produced; hopefully, customers will come back for more. Treatments are individualized; hopefully, patients will not need to come back for more. Most important, guided by this invention, a physician can adapt treatment during a patient visit (the moment of sale).
After dividing the population into a suitable set of clusters, each datum from the survey is reanalyzed in terms of its correlation with a person's assigned cluster. The cluster to which a patient belongs is then estimated by collecting information similar to that collected during the survey. Data that does not correlate well with cluster assignment can be skipped. Calculations can be made to compensate for missing data.
In a similar fashion, physician demographics, opinion surveys, and practice patterns are used to determine a small set of physician clusters. For both patients and physicians, cluster analysis derived calculations may be adjusted and may be logically augmented based on experience over time. More complex, symbolic simulations of personal belief systems have been described in the artificial intelligence and psychology literature. Such simulations could be adapted for this invention.
Reanalysis, after cluster determination, also permits match / mismatch relationships to be determined. For each cluster, reviewing group responses makes certain characteristics apparent. For example, if most members of one cluster are highly educated and indicate they like reading news articles about medical discoveries, they can be assumed to prefer detailed explanations about treatments. Similarly, if members of another cluster indicate they are impatient and they have trouble keeping appointments, they are unlikely to comply with treatments based on exercise and diet.
If members of a physician cluster indicate they believe their years of clinical training give them knowledge completely unavailable to the lay public, they may need to make a major change in their presentation to a patient whose cluster thinks all important information can be explained in simple terms so they can make their own decisions.
Diagnoses and treatments are characterized along simple dimensions; e.g., severity or risk, visibility, duration, is taking pills involved, is surgery required, etc. The illustrated embodiment avoids use of a long, exhaustive list of ailments and medications by working with these characterizations. It can handle a new disease and treatment with addition only of a small set of information or specification of an analogous disease and treatment.
Automated Apparatus for Practice of the Invention
Figure 1 illustrates a computer system of the type used in connection with practice of the invention. Computer 101 is connected to data processing peripheral units comprising a flat panel display and touch screen 121, disk memory 123, a computer communication network 125, a pointing device 127, a facsimile modem 129, a video monitor 131. a keyboard 133, a printer 135, and a mark sense or page scanner 137. The disk memory 123 serves as a non-volatile storage element for information accessed by the computer 101.
The computer communication network 125 serves to allow access to nonvolatile storage elements and databases or other peripheral devices among a collection of computers.
The flat panel display and touch screen 121, the pointing device 127, the video monitor 131, and the keyboard 133 provide an interface between the computer 101 and the user. Specifically, the flat panel display and the monitor present a graphic display of signals generated by the computer 101, while the keyboard 133 and pointing device 133 convert typed messages and positions signals into computer-readable form.
Not all elements are required for practicing the invention, e.g., a flat panel display and touch screen 121 may suffice without a video monitor 131 and a separate pointing device 127. Likewise, if all input is done directly by users and all output is viewed immediately, a flat panel display and touch screen 121 may suffice without any other input or output devices, e.g., eliminating the need for a printer 135 or scanner
137. The illustrated computer 101 includes functional units comprising an I/O controller 104, a central processor 102, and a (random access) memory unit 103. The I/O controller 104 is an interface between the computer 101 and its peripheral units. The central processor 102 serves as the primary source of control, arithmetic, and logic operations within the computer 101. Further, the memory unit 103 provides volatile, rapid-access storage for the computer 101, particularly for the central processing unit 102. The memory unit 103 may also provide non- volatile storage, which, in sufficient quantity, eliminates the need for disk memory 123.
Software functions 111 are built up from basic operating system & graphical support 118 in a customary manner so that compliance analysis 112 processes data from a variety of sources. Clinical & financial information system 113 data, if not directly available in a specific implementation, can be obtained through database functions 114 using operating system & graphical support 118 making use of computer network communication 125 or modem 129. Alternatively, such information can obtained from medical staff or directly from patients using accept data 115 and present data 116 user interface functions 117 working through flat panel display & touch screen 121 or through pointing device 127 and video monitor 131 and keyboard 133.
Those skilled in the art will appreciate that other data input and output routing is possible using the system envisioned in Figure 1. i.e., interactive input and output through the World Wide Web is possible with suitably advanced accept data 115, present data 116, and operating system & graphical support 118 coupled with computer network communication 125 or modem 129. Alternatively, batch input and output is possible in a traditional manner using printer 135 and scanner 137, or, using clinical financial information system 113 and database functions 114.
The illustrated hardware used for practice of the invention can be selected from any one of many commercially available programmable digital computers or personnel digital assistants, e.g., preferably, a commercially available Palm Pilot™ running version 2.0 of the Pilot™ operating system, as programmed in accord with the teachings below. Operation
The structure and operation of the illustrated embodiment is premised on the notion that effective approaches to improving treatment compliance take into account individual patient attitudes and beliefs. Those patients inclined to believe their physicians' judgments and recommendations and whose temperament allows them to follow complicated instructions, for example, might do best with quick, straightforward prescriptions. Those patients inclined to be skeptical of physicians and medical treatment, on the other hand, might be better served with detailed prognostic information and instructions on watching for developments that they personally believe necessitate treatment. Still others, those patients who prefer a choice of treatment options could receive a selection of possible course of treatment while, those who prefer one "best" recommendation could receive it.
The illustrated embodiment also operates on the assumption that effective treatment takes into account individual physician style and how that interacts with various patient attitudes and beliefs. For example, a dogmatic professional style, and delayed examination due to office overbooking may cause a skeptical and easily insulted patient to consciously or unconsciously ignore treatment recommendations as if to get even. On the other hand, an accommodating professional style, attentive to individual patient preferences with extra time to talk, may be inteφreted as diagnostic uncertainty, or lack of professional stature by a patient who inteφrets a more authoritarian style as indicative of a technical expert whose time is much in demand.
Ideally, at an individual level, the medical nature and style of a physician's recommendations would be matched to each patient's individual attitudes and beliefs. In public or group medical care, an organization's efforts would be matched to its population's attitudes and inclinations. Extra efforts could be made for patients with serious illness who habitually avoid medical attention. Less effort could be wasted on those who routinely seek medical attention on their own and follow health-care providers' instructions. Figure 2 depicts a functional interrelationship between elements of a preferred embodiment of the invention, as well as the processing of data by those elements. Patient data merging 219 accepts input, if any, directly from the patient 201 and merges it with patient related data input from medical / office staff input 203, health care organization / office information systems 207, and estimated / expected values
209. Output from patient data merging 219 represents the system's best available characterization of the patient for use in further processing. In a similar fashion physician data merging 221 accepts input from the physician 205, medical / office staff input 203, health care organization / office information systems 207, and estimated / expected values 209. Output from physician data merging 221 represents the system's best available characterization of the physician, or health care provider, for use in further processing. Diagnosis - prognosis data merging 215 and treatment data merging 217 provide similar data processing for diagnosis-prognosis and treatment respectively.
Complex data signals are passed in this apparatus. These signals include traditional information, e.g., age, sex, weight, blood pressure and laboratory values. These signals include health care utilization information, e.g., patient identifiers, health care provider identifiers, number of office visits, number of prescriptions. These signals include lifestyle and attitudinal information, e.g., hobbies, questionnaire answers, personality and psychological testing results. These signals also include coded diagnoses and treatments, current and past. In a preferred implementation, this information is kept as lists or sets of attribute-value pairs; most of the values are numeric, but non-numeric data and sub-lists are used at times. For instance, treatment information might be as simple as avoid weight bearing for a twisted ankle with a duration - 7 days and medication form - none and surgery - none. In another instance, treatment input might be a list of options starting with antibiotics for a sexually transmitted disease with a duration - 10 days and medication form -pill and surgery- none, followed by antibiotics with a duration - once and medication form - shot in buttocks and surgery - none. Those skilled in the art will appreciate that estimated or expected data values 209 need not be implemented as an independent entity. Data merging modules 215, 217, 219, & 221 may include constants providing the same information.
Patient attitude estimation 223 analyzes input from patient data merging 219 to characterize the patient's attitude with respect to medical illness and treatment. Physician style estimation 225 analyzes input from physician data merging 221 to characterize the physician or health care provider's style of patient interaction and treatment.
Recommendation matching 227 analyzes the combination of inputs characterizing the overall medical encounter, namely, patient attitude 223, physician style 225, diagnosis-prognosis 215 and treatment 217. Its output estimates the likelihood that the patient will comply with each of the treatments and styles of medical intervention.
Display conditioner 229 accepts input from recommendation matching 227 and converts it into a format, graphical or textual, suitable for the required output 231. Output might be as simple as a single number proportional to probability that this patient will comply with this physician's recommendation of a single treatment, potentially signaling the need for reconsideration of treatment options. Output may be more complicated to adequately explain to a health care provider what style of treatment might be more likely gain patient compliance.
Those skilled in the art will appreciate that the display conditioner can also accept input from other elements to provide output that monitors the operation of the system. They will also appreciate that conditioner output could be saved on disk memory 123 or stored via database functions 114 when the apparatus is being used to predict compliance for a group of patients or members of a health care organization. Segmentation
The segmentation process utilized in the illustrated embodiment was developed using well established and accepted methods of population survey techniques. This identified the most relevant content for the survey and the appropriate match to the population being interviewed. For example, asking bus drivers about chicken farming, although using properly framed questions and statistical analysis, is a clear mismatch of content with audience.
A fundamental issue in the research is also to recognize that the process and outcome are not intended to affect any direct behavior or attitudes among people, nor create any artificial experiences. The purpose of the research and the process is to, with the greatest possible accuracy, find ways to describe what already exists; characterizations of people based on their attitudes, behavior and other personal characteristics that accomplishes several things:
reflects their typical and consistent state
provides for discrimination between two or more groups of people, for if all people were identical in their styles, there would be no corresponding need for variety or alternatives in any facet of life
results in a practical method of application in real life activities
describes population groups that are individually large enough to warrant intervention, since each group represents a large number of absolute people, but also avoids a system that defines people in such minute detail that interventions customized to that segment would be economically impractical utilizes the language, concepts and other portrayals of the population segments that will be most readily identified and accepted because they are, in effect, in their own "language".
The following process was used to develop the segmentation system, including the functional set of 20 questions and related weighting factors to score each person's responses:
Initial sources for segmentation content:
a review of existing literature for ideas, themes, situations, experiences and literal ways of describing them that would be recognized by people;
conducted a series of focus groups with males and females specifically about their experiences and attitudes with a wide variety of health care situations. The objective of the groups was to obtain first hand statements of actual experiences, collect the language used to describe the events and attitudes, and probe for additional underlying issues. This information was then used to frame subsequent survey questions in ways that would replicate what people had related, in the type of language that describes their nature and not those of the researcher.
Segmentation survey:
a national, representative sample of male and female adults was interviewed using an extensive set of questions that was intended to encompass many facets of health care: medical practitioner visits, prescriptions, personal attitudes about health care in general and a person's own health status, and a variety of questions that have been used to describe different activities of people and that may be related to health care, such as participation in sports, nutritional habits, and other lifestyle activities. The entire data set from the nearly 1700 respondents was analyzed by a series of multi-variate statistical procedures to :
reduce the total number of questions to smaller set of items that statistically derives a set of homogeneous population segments using the reduced set of items and summarizes each construct or theme;
identify items/statements that statistically maximize the difference between the homogeneous population segments;
determine the number of population segments by trying several different solution sizes, such as five groups, six groups, seven groups, etc. The alternatives are tested to accomplish several concurrent objectives:
obtain a final set of segments that is economically practical to work with in terms of the numbers of people involved
provide maximum differentiation between the groups
The original questionnaire contained over 150 items used in the analysis. Since the administration of this number of items in a survey is not practical to administer in any daily medical situation, further statistical analysis was used to reduce the total set to a smaller number, in the case of this study 20 statements, that would replicate the original segmentation and very highly correlate with the allocation of people to specific segments. A basic threshold was set, that the reduced number of questions to be used in typing people must correctly classify (that is, place in the same groups as the full questionnaire) at least 75% of the people. And, any incorrect classification must be in the next closest or adjacent segment for which the person had strong tendencies. Based on the foregoing, a questionnaire used in the illustrated embodiment obtains the patient's degree of agreement (or disagreement) with the following statements:
I'm almost always satisfied with the medical treatment I receive
There are a lot of health care people that you can't trust
Doctors sometimes seem to make decisions before I finish explaining my problems or asking all my questions
I know people who do not exactly follow the doctor's advice and they seem to do just fine
I never know what questions to ask when I go to the doctor with a problem
I try to keep up with current medical information whether I have a problem or not
I've read or heard about new health care treatments that my doctor did not know about
When I get sick or have a serious problem, I do my own research about the illness and treatments
I feel I personally know enough about some medical problems and treatments that I feel comfortable giving advice about them
The costs I pay for health care are reasonable
There is so much information about what is healthy and what is not that it is impossible to make sense of it I often seek advice from other people
I'm a patient person
I don't like to make long term plans
The quality of many products has gone down
I feel comfortable using the newest technologies
I am very good about planning things in order to keep my appointments
You really do not have much control over what happens to you in life like an illness, it's just a matter of fate or luck
I am pretty good about following healthy eating habits
I wear seatbelts as a driver and as a passenger in a car or truck all the time
A preferred questionnaire used in posing these questions is provided in the Attachment I. Those skilled in the art will appreciate that more or fewer questions compiled in accord with the foregoing techniques may be used instead of those shown in the attachment. Those skilled in the art will appreciate that these questions may be administered electronically or verbally or on paper and that the responses can be coded numerically.
Outputting Compliance Prediction and Suggestions
Figure 3 illustrates an exemplary individual output generated by the system described above. Particularly, the output reveals a prototypical patent, Mr. John Doe, suffering from hyperlipidemia, who believes he is in good health and who pursues his own health care information. His questionnaire answers suggest that he is capable of sticking with treatments that require daily adherence over long periods of time; however, they suggest he prefers quick, technically oriented solutions. Under these circumstances, the output warns his physician that it is impossible for anyone to know whether or not Mr. Doe will in fact stick with the treatment recommended. Asking Mr.
Doe what he has concluded, after he has had time to check his own sources, may provide the needed information. This output also suggests that exhortations to the effect that Mr. Doe is killing himself by not following treatment recommendations, are unlikely to be heeded. If some other treatment options are going to be considered, a higher-tech solution, e.g., cholesterol lowering drugs, may be more acceptable to Mr.
Doe despite the expense.
Yet a still further understanding of the invention may be attained by reference to Appendix II, providing a software listing for a preferred embodiment of the invention.
The foregoing describes a preferred apparatus and method for predicting and improving patient compliance achieving the objects set forth above. Those skilled in the art will, of course, appreciate that the illustrated embodiment is exemplary only and that other embodiments incoφorating modifications thereto fall with the scope of the invention, of which we claim:

Claims

1. A method for any of predicting and improving patient compliance with health care treatment, comprising the steps
A. inputting data relating to a patient and, optionally, data relating to a health care provider, diagnosis-prognosis, and treatment recommendation,
B. determining, from the input data, an attitude of the patient and, optionally, an attitude of the health care provider,
C. generating, from the input data and/or attitude determination, any of an (i) estimation of a likelihood of patient compliance with a recommended treatment and (ii) a style of treatment likely to have an increased probability of patient compliance.
2. A method according to claim 1 , comprising the step of determining the patient's degree of agreement with one or more statements selected on the basis of population survey techniques.
3. A method according to claim 2, comprising the step determining the patient's degree of agreement with one or more statements determined on the basis of a segmentation process.
4. A method according to any of claims 1 - 3, comprising the step of determining the patient's degree of agreement or disagreement with one or more of the following statements:
I'm almost always satisfied with the medical treatment I receive;
There are a lot of health care people that you can't trust;
Doctors sometimes seem to make decisions before I finish explaining my problems or asking all my questions; I know people who do not exactly follow the doctor's advice and they seem to do just fine;
I never know what questions to ask when I go to the doctor with a problem;
I try to keep up with current medical information whether I have a problem or not;
I've read or heard about new health care treatments that my doctor did not know about;
When I get sick or have a serious problem, I do my own research about the illness and treatments;
I feel I personally know enough about some medical problems and treatments that I feel comfortable giving advice about them;
The costs I pay for health care are reasonable;
There is so much information about what is healthy and what is not that it is impossible to make sense of it;
I often seek advice from other people;
I'm a patient person;
I don't like to make long term plans;
The quality of many products has gone down;
I feel comfortable using the newest technologies; I am very good about planning things in order to keep my appointments;
You really do not have much control over what happens to you in life like an illness, it's just a matter of fate or luck;
I am pretty good about following healthy eating habits; and
I wear seatbelts as a driver and as a passenger in a car or truck all the time.
5. A method according to any of claims 1- 4, comprising the steps of:
A. collecting patient medical data, medical history data, and behavioral and attitudinal data.
B. collecting health care provider data, including that pertaining to diagnosis and prognosis, recommended treatments, style of interaction with patients, treatment statistics, and behavior / attitude,
C. identifying corrupted or missing values among the collected data,
D. estimating attitudes of any of the patient and health care provider based on the collected data,
E. determining a proposed treatment based on numeric and logical analysis of estimated patient and physician attitudes and diagnosis prognosis, and
F. generating an output signal textually or graphically representative of the treatment recommendation with which a specific patient is most likely to comply.
6. A method according to any of claims 1 - 5, comprising obtaining patient and physician data from electronic forms directly or paper forms by suitable scanners or typing.
7. A method according to any of claims 1 - 6, comprising obtaining patient and health care provider data from surrogate sources, such as medical office personnel, heath care organizations, populations statistics.
8. A method according to any of claims 1 - 7, comprising generating text and graphical output on a computer screen or printer as a function of said output signal.
9. A method according to any of claims 1 - 8, comprising displaying treatment inputs ranked in order of probability of patient compliance.
10. A method according to any of claims 1 - 9, comprising displaying treatment characteristics likely to increase probability of patient compliance.
11 A method according to any of claims 1- 10, comprising displaying patient/health care provider interaction styles likely to increase probability of patient compliance.
12. An apparatus operating in accord with the methods of any of claims 1 - 11.
13. A digital data processing apparatus operating in accord with the methods of any of claims 1 - 11.
14. A computer storage media for storing any of instructions and data for causing a digital data processing apparatus to operate in accord with the methods of any of claims 1 - 11.
APPENDIX I to
METHOD AND APPARATUS FOR PREDICTING AND IMPROVING PATIENT COMPLIANCE WITH MEDICAL TREATMENT
© ParetoScope, Inc. 1997
EnrichMap® Health Care and Personal Opinion Questionnaire © ParetoScope, Inc. 1997 Agree Do Not Agree Completely At All
1 2 4 5
I'm almost always satisfied with the medical treatment
I receive There are a lot of health care people that you can't trust Doctors sometimes seem to make decisions before I finish explaining my problems or asking all my questions I know people who do not exactly follow the doctor's advice and they seem to do just fine I never know what questions to ask when I go to the doctor with a problem I try to keep up with current medical information whether I have a problem or not I've read or heard about new health care treatments that my doctor did not know about
When I get sick or have a serious problem, I do my own research about the illness and treatments I feel I personally know enough about some medical problems and treatments that I feel comfortable giving advice about them
The costs I pay for health care are reasonable
There is so much information about what is healthy and what is not that it is impossible to make sense of it
I often seek advice from other people
I'm a patient person I don't like to make long term plans
The quality of many products has gone down
I feel comfortable using the newest technologies
I am very good about planning things in order to keep my appointments You really do not have much control over what happens to you in life like an illness, it's just a matter of fate or luck
I am pretty good about following healthy eating habits I wear seatbelts as a driver and as a passenger in a car or truck all the time
DS 1.3946304
APPENDIX II to
METHOD AND APPARATUS FOR PREDICTING AND IMPROVING PATIENT COMPLIANCE WITH MEDICAL TREATMENT
© 1997-8 Seth M. Powsner and ParetoScope, Inc. (as indicated)
//Routines are arranged alphabetically.
//Program execution begins when PilotMam is called by the Pilot Operating system.
//AppDBClose.c — Application Database Close; © 1997-8 Seth M Powsner
#╬╣nclude <P╬╣lot.h> #mclude "AppDBGlobals .h" #mclude "AppDBClose.h"
Err AppDBClose (void) t
Err error = 0; if (appDB)
//error |= Dr╬▒ResetRecordStates (appDB) ; // snould be safer but. error |= DmCloseDatabase (appDB) ; return error;
/♦Generic database close aαapteα from MemoPad.c per Code arπor Targettmg Palm OS v.1.2.1 pp.13 Modification nistory
980222 SMP cosmetic
970927 SMP initial coding
*/
/*EOF - - - - - - - - - - - - - - - - - - - - - -
//AppDBClose.h; © 1997-8 Seth M Powsner extern Err AppDBClose (void) ;
/*EOF - - - - - - - - - - - - - - - - - _ _ _ _ _ _ _ _ _ _ */
//AppDBGlobals. c — Application Database Globals; © 1997-8 Seth M Powsner #include <Pιlot.h>
DmOpenRef appDB; ULong appDBAppType;
Char appDBName [dmDBNameLength] ;
ULong appDBType;
/ΓÖªGeneric application ╬▒atabase globals addapted from MemoPad.c per Code amor Targettmg Palm OS v.x.2.1 pp.13 Modification nistory 980222 SMP cosmetic */ /*EOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//AppDBGlobals. h; © 1997-8 Seth M Powsner extern DmOpenRef appDB; extern ULong appDBAppType; extern Char appDBName [dmDBNameLength] ; tdefine appDBNameDefault "AppTestDB" extern ULong appDBType;
ΓÖªdefine appDBTypeDefault 'Data' /*EOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//AppDBInfoImt.c; © 1997-8 Seth M Powsner
#include <P╬╣lot.h> #include "AppGenericDefs . h"
#mclude "AppDBGlobals .h"
#mclude "AppDBInfoImt .h"
#include "AppGlobals .h"
#╬╣nclude "DBOpen.h" #╬╣nclude "GetResource.h" ΓÖªinclude "ResourceCommon.h" static char simplelnfo [] = "App DB info place holder"; Err AppDBInfolmt (DmOpenRef dbP) {
LocallD appInfoID;
VoidPtr appInfoP;
LocallD dbID; UInt cardNo;
VoidHand h;
// Get appInfoID given DmOpenRef via dbID and cardNo. if (DmOpenDatabaseInfo(dbP, SdblD, NULL, NULL, &cardNo, NULL) I i DmDatabaselnfo (cardNo, dbID, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, SappInfoID, NULL, NULL, NULL) ) return dmErrlnvalidParam; if (appInfoID == NULL) //create new applnfo if needed ( n = DmNewHandle (dbP, sizeof simplelnfo); if ( ' h) return dmErrMemError; appInfoID = MemHandleToLocallD (h) ;
DmSetDatabaselnfo (cardNo, dbID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, SappInfoID, NULL, NULL,
NULL) ;
// Lock the appInfoID and copy n defaults from our default structure. appInfoP = MemLocallDToLockedPtr (appInfoID, cardNo); Dm rite (appInfoP, 0, ssimplelnfo, sizeof simplelnfo);
MemPtrUnlock (appInfoP) ; return OKreturnCode;
}
/ΓÖªGeneric database initialization a╬▒apted from MemoPad.c per CodeWarnor Targettmg Palm OS v.1.2.1 pp.13 Modification history 980222 SMP cosmetic
970926 SMP initial coding
*/
/*EOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ //AppDBInfolmt.h; © 1997-8 Seth M Powsner extern Err AppDBInfolmt (DmOpenRef dbP) ; /*EOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//AppDBOpen.c — Application Database & Preference Open; © 1997-8 Seth M Powsner
ΓÖªinclude <P╬╣lot.h>
ΓÖªinclude "AppDBGlobals .h"
ΓÖªinclude "AppDBInfolmt .h"
ΓÖªinclude "AppDBOpen.h" ΓÖªinclude "AppGlobals .h"
ΓÖªinclude "dbOpen.h"
ΓÖªinclude "GetResource.h"
ΓÖªinclude "ResourceCommon.h" Err AppDBOpen (void)
{
SystemPreferencesType sysPrefs;
GetStringRscCopy (appDBName, primaryDBName, appDBNameDefault, sizeof (appDBName) ) ; appDBAppType = GetTypeResource (primaryDBAppType, appType) ; appDBType = GetTypeResource (primaryDBType, appDBTypeDefault) ;
PrefGetPreferences (SsysPrefs) ; if (' (appDB = DBOpen (appDBName, appDBType, appDBAppType, sysPrefs .hideSecretRecords ^ dmModeRead rite : (dmModeRead πte I dmModeShowSecret) ) ) ) return dmErrCantFmd; return AppDBInfolmt (appDB) ; } /♦Generic database open and preference open adapted from MemoPad.c per CodeWarnor Targettmg Palm OS v.1.2.1 pp.13
Modification history
980222 SMP cosmetic
970926 SMP initial coding */
/ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ΓÖª/
//AppDBOpen.h ; © 1997-8 Seth M Powsner Err AppDBOpen (void) ;
/*EOF '_ - _ _ _ - _ - _ _ - - - - - - - _ _ - -. _ _ _ _ _ _ - _ */
//AppGeneπcDefs .h — Application Generic Definitions for convenience © 1997 Seth M Powsner ♦define OKreturnCode 0
ΓÖªdefine arrayLengtn (a) isizeof ╬╣a) /sizeof (a [0] ) )
/♦EOF - - _ _ _ - - _ - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */ //AppGlobals.c; © 1997-8 Seth M Powsner ♦include <Pιlot.h> ♦include "AppGlobals .h"
ULong appType; char appPreferences [appPrefLen] ; int appVersion;
/ΓÖªGeneric application globals, simplified from MemoPad.c per CodeWarnor Targettmg Palm OS v.1.2.1 pp.13 Modification history 980222 SMP cosmetic 970926 SMP initial coding
*/ /ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//AppGlobals. ; © 1997-8 Seth M Powsner extern ULong appType; ♦define appTypeDefault 'AppT'
ΓÖªdefine appPrefLen 64 extern char appPreferences [appPrefLen] ;
♦define appPrefDe ault "reirΛOxOOblank entry" extern int appVersion; ♦define appVersionDefault 100
/ΓÖª Generic Application Globals 971102 SMP version num * 100 970926 SMP initial */
/ΓÖªEOF _ _ _ _ _ _ _ */
//ApplicationHandleEvent . c — generic event application level event handler; © 1997-8 Seth M Powsner ♦include <Pιlot.h>
ΓÖªinclude "ApplicationHandleEven . h" ΓÖªinclude "Handlers. " Boolean ApplicationHandleEvent (EventPtr event) {
FormPtr formP; Int formN; Boolean handled = false; switch (event->eType)
{ case (frmLoadEvent) : formP = FrmIn╬╣tForm( formN = event->data. frmLoad. formID) ;
FrmSetAct╬╣veForm(formP) ;
FrmSetEventHandler (formP, FormHandlerTable (formN) ) ; handled = true; break; //case () :
// break;
return handled;
/ΓÖªModification history 980303 SMP cosmetic 970922 SMP initial */ /ΓÖªEOF - - - - - - - - - - -
/ /ApplicationHandleEvent. h © 1997-8 Setn M Powsner extern Boolean ApplicationHandleEvent (EventPtr event);
/ΓÖªEOF - - - - - - - - _ - - _ _ - _ _ _ _ _ _ _ _ _ _ _ _ _ */
//AppResourceList . c — allows correct loading of resource file; © 1997-
ParetoScope
ΓÖªinclude <Bu╬╣ldRules .h> // Application resources. char ΓÖªAppResourceList [ ] = (
":Rsc:" RESOURCE FILE PREFIX "Q20.rsrc",
/ΓÖªApplication Resource list module addapted from MemoPadRsc.c per CodeWarnor Targettmg Palm OS v.1.2.1 pp.13 Modifications
980303 SMP cosmetic 9 97711111155 S SMMPP reference BuildRules.n and let it set file prefix
971102 SMP Q20 put in
971012 SMP simplified version
*/
/ΓÖªEOF - _ _ _ '/
//AppResourceList . h © 1997- -8 ParetoS<
♦define StπngAlert 9000
ΓÖªdefine ThreeStrmgAlert 9001
ΓÖªdefine categoryConstan s 9950
ΓÖªdefine nameEtcForm 1000
ΓÖªdefine resultFor 1100
ΓÖªdefine thankYouFor 4100
ΓÖªdefine thankYouCode 90
ΓÖªde ine answerMultipliers 9
ΓÖªdefine lastName 10
ΓÖªdefine firstName 20
ΓÖªdefine clientNumber 30
ΓÖªdefine resultField 40
ΓÖªdefine resultText 90
/ΓÖª Specific Application Resource ID's
971122 SMP added result fields & specific forms
971121 SMP added categoryConstants
971102 SMP old Palm Tutorial definitions removed
971012 SMP initial based on Palm Tutorial 20 MemoPadRsc.h ΓÖª/ /ΓÖªEOF
//HandlerHelper . c - convert event fo to resource related mfo for FormElemHandler; © 1997-8 Seth M Powsner
ΓÖªinclude <P╬╣lot.h>
ΓÖªinclude "CommonFormGlobals . "
ΓÖªinclude "CommonFormGlobalFixup.h"
ΓÖªdefine ctlTypeListLen 6
ULong CtlTypeList [CtlTypeListLen] = t'tBTN', 'tPBN', ' tCBX ' , 'tPUT', 'tSLT'
'tREP' }; void CommonFormGlobalFixup (void) { elementRscType = ' ' ; elementID = 0; elementPtr = NULL; for ID = FrmGetActiveFormlDO , formPtr = FrmGetActiveFormt ) ; switch (event . eType) { //from Event. h enum events,
//case (mlEvent) :
//case (penDownEvent ) :
//case (penUpEvent) :
//case (penMoveEvent) :
//case (keyDownEvent) :
//case (winEnterEvent) :
//case (wmExitEvent) :
// break; case (ctlEnterEvent) : case (ctlExitEvent) : case (ctlSelectEvent) case (ctlRepeatEvent) case (popSelectEvent) // out of order from enum events, was after IstExitEvent elementID = event .data. ctlEnter . controlID; elementPtr = event . data . ctlEnter . pControl ; if (0<= ( (ControlPtr) elementPtr) ->style && ( (ControlPtr) elementPtr) ->style
< ctlTypeListLen) elementRscType ctlTypeList [ ( (ControlPtr) elementPtr) ->style] break; case (IstEnterEvent) : case (IstSelectEvent) : case (IstExitEvent) : elementRscType = 'tLST'; elementID = event .data. IstEnter. listID; elementPtr = event .data. IstEnter .pList; break; case (fldEnterEvent) : case (fldHeightChangedEvent) case (fldChangedEvent) : elementRscType = 'tFLD'; elementID = event .data. fldEnter. fieldID; elementPtr = event .data. fldEnter .pField; break; case (tblEnterEvent) : case (tblSelectEvent) case (tblExitEvent) : // out of order from enum events, was after frmCloseEvent elementRscType = 'tTBL'; elementID = event .data. tblEnter .tablelD; elementPtr = event .data. tblEnter .pTable; break;
case (daySelectEvent) break; case (menuEvent) : elementRscType = 'MENU'; elementID = event . data.menu. itemID; break;
//case (appStopEvent) :
//case (frmLoadEvent) :
//case (frmOpenEvent) :
//case (frmGotoEvent) :
//case (frmUpdateEvent) :
//case (frmSaveEvent) :
//case (fr CloseEvent) :
//case (tblExitEvent) : default break; }
}
/ΓÖªModification h.istory
980303 SMP cosmetic
970925 SMP initial
/ΓÖªEOF
//CommonFormGlobalFixup.h © 1997-8 Seth M Powsner extern void CommonFormGlobalFixup (void) ;
/ΓÖªEOF
//CommonFormGlobals . c — Commonly used form / event info; © 1997-8 Seth M Powsner
ΓÖªinclude <Pilot.h>
ΓÖªinclude "CommonFormGlobals.h"
Int elementID;
VoidPtr elementPtr;
ULong elementRscType
EventType event;
Int formID;
FormPtr formPtr;
/ΓÖªAdapted from MemoPad.c per CodeWarrior Targetting Palm OS v.1.2.1 pp.l.
Modification history
980303 SMP cosmetic
970925 SMP initial
*/
/ΓÖªEOF - - - - - - - - - - - - - - - _ _ _ _ _ _ _ _ _ _ */
//CommonFormGlobals.h © 1997-8 Seth M Powsner extern Int elementID; extern VoidPtr elementPtr; extern ULong elementRscType ; extern EventType event; extern Int formID; extern FormPtr formPtr;
/♦EOF - - - - - - - - - - - - - - - - - - //CustomHandlers.c; © 1997-8 ParetoScope
ΓÖªinclude <Pilot.h>
ΓÖªinclude "AppResourceList .h"
ΓÖªinclude "CommonFormGlobals . " ΓÖªinclude "CommonFormGlobalFixup.h" ΓÖªinclude "CustomHandlers .h"
ΓÖªinclude "GetResource.h"
ΓÖªinclude "Handlers. h"
ΓÖªinclude "ResourceCommon.h"
ΓÖªmclude "ScoreCalculation.h"
ΓÖªinclude "StoreFieldlnput .h"
ΓÖªinclude "Storelnput . "
Boolean NameEtcFormHandler (EventPtr eventP) {
Boolean handled = false; event = ΓÖªeventP; // Copy event data into CommonFormGlobals
CommonFormGlobalFixup ( ) switch (event .eType) { case (frmOpenEvent) : // Open, assume it's loaded & activated. // restore fields if needed
FrmDrawForm( formPtr) ; // Draw the form handled = true; break; case (ctlSelectEvent) : if (elementID - formID == nextButtonID) //"start" is a relabeled "next" button
Clearlnput ( ) ; // clear out checKboxes handled = FormElemHandler () ; // Leave rest to GeneπcControlHandler break; case (frmCloseEvent) : SaveFieldlnput () ; //handled = true; break; default: handled = FormElemHandler ( ) ; return handled; }
Boolean ResultFormHandler (EventPtr eventP) {
Boolean handled = false; event = ΓÖªeventP; // Copy event data into CommonFormGlobals
CommonFormGlobalFixup ( ) switch (event .eType) { case (frmOpenEvent) : // Open, assume it's loaded & activated.
ScoreCalculatio ( ) ; RestoreFieldlnput ( ) ; FrmDrawForm( formPtr) ; // Draw the form handled = true; break; case (ctlSelectEvent) : if (elementID - formID == backButtonlD) //"done" is a relabeled "back" button
ClearFieldlnput () ; // clear out name, etc handled = FormElemHandle () ; // Leave rest to
GenericControlHandler break; case (frmCloseEvent) :
// save fields if needed //handled = true; break; default: handled = FormElemHandler () ;
} return handled; Boolean ThankYouFormHandler (EventPtr eventP)
{ Boolean handled = false; char ΓÖª cp; event = ΓÖªeventP; // Copy event data into
CommonFormGlobals CommonFormGlobalFixup () ; switch (event . eType) { case (frmOpenEvent): // Open, assume it's loaded & activated. FrmDrawForm ( formPtr) ; // Draw the form handled = true; break; case ( keyDownEvent ) : cp = GetStrmgResource (formID + thankYouCode, "\26") ; if (event . data. keyDown. chr == ΓÖªcp)
{
FrmGotoForm(resultForm) ; handled = true; } UnlockStπngResource (1) ; break; default : handled = FormElemHandler () ; } return handled;
}
/ΓÖª Modification history 980222 SMP cosmetic 971122 SMP initial coding ΓÖª/ /ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - _ - - _ - */
//CustomHandlers.h S 1997-8 ParetoScope extern Boolean NameEtcFormHandler (EventPtr eventP); extern Boolean ResultFormHandler (EventPtr eventP); extern Boolean ThankYouFormHandler (EventPtr eventP);
/ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//DBDefaultCompare. c — passed to system routines to order database; © 1997- Seth M Powsner
ΓÖªinclude <P╬╣lot.h> ΓÖªinclude "AppDBGlobals .h" ΓÖªinclude "AppDBInfolmt .h" ΓÖªinclude "DBDefaultCompare . h"
ΓÖªdefine plsmaller -1 ΓÖªdefine equal 0 ΓÖªdefine pllarger 1 short DBDefaultCompare (void *pl, void *p2, /ΓÖª only first two parameters are used*/ short other, SortRecordlnfoPtr recpl,
SortRecordlnfoPtr recp2, VoidHand appInfoH)
ULong lenl;
ULong len2 ; short result; lenl = MemPtrS╬╣ze(pl) len2 = MemPtrSize (p2) if (lenl == 0) result = (len2 == 0) ? equal : plsmaller; else if (len2 == 0) result = pllarger; else for (result = equal, lenl = (lenl <= len2) ? lenl : len2; result == equal && lenl; ++( (CharPtr) pi) , ++( (CharPtr) p2) , ΓÇölenl) if (* (CharPtr) pi < * (CharPtr) p2) result = plsmaller; else if (* (CharPtr)pl > ΓÖª (CharPtr) p2) result = pllarger; return result; } /ΓÖªModification history
980222 SMP cosmetic changes
971115 SMP call sequence modified for new SDK
970928 SMP original
*/ /ΓÖªEOF - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//DBDefaultCompare. h;© 1997-8 Seth M Powsner extern DmComparF DBDefaultCompare/* see <DataMgr.h> ♦/;
/ΓÖªEOF
// DBOpen. c; © 1997-8 Seth M Powsner
ΓÖªinclude <P╬╣lot.h> // all the system toolbox headers
ΓÖªinclude "DBOpen. h"
DmOpenRef DBOpen (CharPtr dbName, ULong dbType, ULong appType, Ulnt mode)
Ulnt card;
LocallD dbID;
Ulnt dbAttrs;
DmOpenRef dbTempP ; dbTempP = DmOpenDatabaseByTypeCreator (dbType, appType, mode); if PdbTemoP && (mode > dmModeReadOnly)) // need to create datebase { if ( ' DmCreateDatabase (0 /*cardV, dbName, appType, dbType, false /ΓÖªnot resource*/) ) dbTempP = DmOpenDatabaseByTypeCreator (dbType, appType, mode); if ( ' DmOpenDatabaseInfo (dbTempP, &dbID, NULL, NULL, scard,
NULL)
&& 'DmDatabaseInfo(0, obID, NULL, idbAttrs, NULL, NULL,
NULL,
NULL, NULL, NULL, NULL, NULL, NULL)
{ dbAttrs |= dmHdrAttrBackup; // assume backup if (DmSetDatabaselnfo (0, dbID, NULL, &dbAttrs, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL) dbTempP = NULL; //something's wrong with new db
} } } return (dbTempP) ;
/ΓÖªGeneric routine for manipulating PalmOS database adapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13 Modification history 980222 SMP cosmetic 970920 SMP initial
ΓÖª/
/ΓÖªEOF - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
// dbOpen.h; © 1997-8 Seth M Powsner extern DmOpenRef DBOpen (CharPtr dbName, ULong dbType, ULong appType, Ulnt mode) ;
/ΓÖªEOF ΓÖª/
//DBWnteOrdered. c— © 1997-8 Seth M Powsner
ΓÖªmclude <P╬╣lot.h>
♦mclude "AppDBGlobals .h" ♦include "AppGeneπcDefs .h"
ΓÖªinclude "DBDefaultCompare. h"
♦ include "dbWπteOrdered.h"
Err DBWnteOrdered (VoidPtr bufferP, ULong bufferLen, Int category)
Ulnt attr;
Err error;
Err errorTemp;
VoidHand h = = NULL;
Ulnt index = dmMaxRecordlndex
// copy buffer into new record at end of database and set category error = DmWrite (MemHandleLock (h = DmNewRecord (appDB, Smdex, bufferLen) ) , 0, bufferP, bufferLen) ; if ((errorTemp = MemHandleUnlock (h) ) ' = OKreturnCode && 'error) error = errorTemp; if ((errorTemp = DmReleaseRecord (appDB, xndex, true)) ' = OKreturnCode && 'error) error = errorTemp; if ('error) if ('(error = DmRecordlnfo (appDB, index, &attr, NULL, NULL))) { attr = (attr & ~dmRecAttrCategoryMask) | (category & dmRecAttrCategoryMask) ; if ('(error = DmSetRecordlnfo (appDB, index, &attr, NULL)))
// detach the record and insert it mto correct place // use same compare routine as for db sorting if ('(error = DmDetachRecord (appDB, index, &h) ) ) { index = DmFmdSortPositionVIO (appDB, MemHandleLock (h) ,
DBDefaultCompare, 0) ; if (' (error = MemHandleUnlock (h) ) ) error = DmAttachRecord (appDB, sindex, h, NULL);
return error;
)
/ΓÖªModification history 980303 SMP cosmetic 970928 SMP initial */ /ΓÖªEOF - - - - - - - - - - -
//dbWnteOrdered.h © 1997-8 Seth M Powsner extern Err DBWnteOrdered (VoidPtr bufferP, ULong bufferLen, Int category)
/ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ΓÖª/
//DrawStrmglnBounds . c— Draw String in bounds (box) for lists; © 1997-8 Seth M Powsner
ΓÖªmclude <P╬╣lot.h>
♦include "drawStπnglnBounds . h" void DrawStrmglnBounds (CharPtr stπngP, RectanglePtr bounds)
Int textLen, width;
Boolean fits;
FontID currFont; currFont = FntSetFont (stdFont) ; // save and set font (a Pilot convention) width = bounds->extent .x - 2; // determine length of text that will fit textLen = StrLen (strmgP) ;
FntCharsInWidth (stringP, swidth, StextLen, &f╬╣ts) ;
WmDrawChars (strmgP, textLen, bounds->topLeft .x, bounds->topLeft . y) ; //draw it
FntSetFont (currFont) ; // restore the font
}
/ΓÖªGeneric Application Resource list module addapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13 Modifications
980303 SMP cosmetic
971012 SMP simplified version
*/
/ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//DrawStrmglnBounds. h © 1997-8 Seth M Powsner extern void DrawStrmglnBounαs (CharPtr stringP, RectanglePtr bounds);
/♦EOF - - - - - - - - - - - - - - - - - - - - -. - - - _ - - - - */ //EventLoop. c — get and dispatch events 'till stopped; © 1997-8 Setn M Powsner
ΓÖª mclude <P╬╣lot.h>
ΓÖªinclude "ApplicationHandleEvent . h"
ΓÖªmclude "EventLoop. h" void EventLoop (void) {
Word error;
EventType event; do {
EvtGetEvent (sevent, evtWaitForever) ; if (SysHandleEvent (Sevent) ) continue; if (MenuHandleEvent (0, ievent, Serror) ) continue; if (ApplicationHandleEvent (Sevent) ) continue;
FrmDispatchEvent (Sevent) ; while (event. eType '= appStopEvent) ;
/ΓÖªGeneric application main routine adapted from MemoPad.c per CodeWarnor Targettmg Palm OS v.1.2.1 pp.13 980220 SMP cosmetic changes */
/ΓÖªEOF - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
//EventLoop. h © 1997-8 Seth M Powsner extern void EventLoop (void) ; /♦EOF - - - - - - - - - - - - - - - - - - - - - - - _ - - - - - */
/♦EOF - - - - - - - - - - - - - - _ - _ - _ - - - _ - - - - - - ♦/ //GenericControlHandler.c— Generic Control event Handler; © 1997-8 Seth M Powsner
♦include <Pιlot.h> ♦mclude "CommonFormGlobals . h" ♦include "GenencControlHandler .h" ♦include "GetResource.h" ♦include "ResourceCommon.h" ♦include "TestCode.h" static Boolean GotoFormSafely (int formID); Boolean GeneπcControlHandler (void) { int effectivelD; int formMultiple = GetlntResource (normalFormMultiple, formMultipleDefault) ;
Boolean handled = false; effectivelD = elementID >= formID elementID - formID : elementID % formMultiple; switch (event .eType) ( case (ctlSelectEvent) : switch (effectivelD) { case (nextButtonID) : {
GotoFormSafely (GetlntResource (formID -r nextFormSpec, formID + formMultiple) ) ; handled = true; break; } case (backButtonlD) : {
GotoFormSafely (GetlntResource (formID + pnorFormSpec, formID - formMultiple) ) ; handled = true; break; } case (restartButtonID) : { GotoFormSafely (GetlntResource (firstFormRscID, firstFormDefault) ) ; handled = true; break; } default:
{
GotoFormSafely (GetlntResource (formID -r nextFormSpec, formID + formMultiple) ) ; handled = true; }
} break; // ctlSelectEvent case done case (ctlRepeatEvent) : break; case (keyDownEvent) : switch (event .data. eyDown. chr) { case (pageUpChr) ΓÇó {
TestCode (formID) ; //if ( 'Testcode (form) )
// pageUpKeyProcess g ( ) ; handled = true; break; } case (pageDownChr) :
{
// pageDownKeyProcess g ( ) ; //handled = true; break; } default : {
//handled = true; break;
default: ; } return handled; Boolean GotoFormSafely (int formID) {
VoidHand tempH; if (firstFormDefault <= formID
&& formID <= GetlntResource (lastFormRscID, lastFormDefault) && NULL '= (te pH = DmGetlResource ' ' tFRM' , formID))) {
DmReleaseResource (tempH) ; FrmGotoForm ( formID) ;
} return NULL '= tempH;
}
/ΓÖª control handler to interpret any form's controls based on ResourceCommon.h 980303 SMP cosmetic
971116 SMP breakout debugging code and database code
971102 SMP implement some of generic functions
970925 SMP initial
*/
/ΓÖªEOF - _ - - - - - - - - - - - - - - - - - - - - - - - - - - _ */
//GeneπcControlHandler.h © 1997-8 Seth M Powsner extern Boolean GeneπcControlHandler (void) ;
/ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ^/
//GeneπcFormHandler.c; © 1997-8 Setn M Powsner ♦include <Pιlot.h>
ΓÖªinclude "CommonFormGlobals.h"
ΓÖªinclude "CommonFormGlobalFixup.h"
ΓÖªinclude "GenencFormHandler . h"
ΓÖªinclude "Handlers. h"
ΓÖªmclude "Storelnput . h" //used in frmClose for checkbox storage
ΓÖªinclude "GetObjectPtr .h"
Boolean GenencFormHandler (EventPtr eventP) f
Boolean handled = false; int cID; //use╬▒ for cneckbox save and restore
ControlPtr ctlP; event = ΓÖªeventP; // Copy event data mto
CommonFormGlobals
CommonFormGlobalFixup ( ) ; switch (event . eType) { case (frmOpenEvent): // Open, assume it's loaded & activated.
// Initialize the form if needed if (2000 <= formID && formID <= 3900 // Not really generic
&& NULL '= (cID = Restorelnput (formID) ) && NULL '= (ctlP = GetOb3ectPtr (cID) ) ) CtlSetValue(ctlP, 1) ; FrmDrawForm ( formPtr) ; // Draw the form handled = true; break; case (frmCloseEvent) : // Not really generic, belongs in question form handler if (2000 <= formID && formID <= 3900) { for (cID = formID + 10; cID <= formID + 50; cID += 10) //save checkboxes if (CtlGetValue(ctlP = GetObjectPtr (cID) ) ) break; if (cID <= formID + 50) Savelnput (formID, cID) ; } break; default: handled = FormElemHandler () ;
} return handled; }
/* Modification history 980222 SMP cosmetic
971123 SMP Temporarily added checkbox save / restore code
970925 SMP Initial coding
*/
/ΓÖªEOF - - - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
/ /GenencFormHandler. h © 1997-8 Seth M Powsner extern Boolean GenencFormHandler (EventPtr event);
/ΓÖªEOF - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
// GetObjectPtr . c-- Get ilookup) Object's Pointer based on integer ID; © 1997-8 Seth M Powsner ♦include <P lot.h> ♦include "GetOb3ectPtr .h"
VoidPtr GetObjectPtr (Wor╬▒ objectID)
I
FormPtr frm;
Wor╬▒ ob3 Index; if ((objlndex = FrmGetNu berOfObjects (frm = FrmGetAct╬╣veForm( ) ) ) '= 0) do if (FrmGetOb3ectId(frm, ΓÇöobjlndex) == objectlD) return (FrmGetObjectPtr (frm, objlndex)); while (ob3 Index '= 0) ; return (NULL) ; }
/ΓÖªGeneric routine adapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13 Modification history
980303 SMP cosmetic
970907 SMP modified from tutorial to make it safe for non-existent IDs
*/
/ΓÖªEOF - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//GetObjectPtr.h © 1997-8 Seth M Powsne extern VoidPtr GetObjectPtr (Word obiectID) ;
/♦EOF _ - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ //GetResource. c— Get (string and other) Resource (s) in coverted form; ©
1997-8 Seth M Powsner
ΓÖªinclude <P╬╣lot.h>
ΓÖªmclude "GetResource. h"
ΓÖªinclude "StrAToType.h" ΓÖªinclude "StrCopyN.h"
ΓÖªdefine tempHLen 8 static VoidHand tempH [tempHLen] ; static Int tempLast = tempHLen;
Int GetlntResource (Int RscID, Int notFoundReturn)
Int t; CharPtr p; p = GetStrmgResource (RscID, NULL); t = p ? StrAToI (p) : notFoundReturn; UnlockStπngResource (1) ; return t; CharPtr GetStnngResource (Int RscID, CharPtr notFoundReturn)
{ if (ΓÇötempLast < 0) return notFoundReturn; if ( ' (tempH [tempLast] = DmGetlResource (strRsc, RscID))) return notFoundReturn; return MemHandleLock (tempH [tempLast] ) ; }
CharPtr GetStringRscCopyN (CharPtr dst, Int RscID, CharPtr notFoundReturn, ULong size) {
StrCopyN (dst, GetStnngResource (RscID, notFoundReturn), size);
UnlockStnngResource (1) ; return dst; ) ULong GetTypeResource (Int RscID, ULong notFoundReturn) {
ULong type;
CharPtr p; p = GetStnngResource (RscID, NULL); type = p Γûá> StrAToType (p) : notFoundReturn; UnlockStnngResource (1) ; return type; ) void UnlockStnngResource (Int unlockCnt) ( if (unlockCnt > 0) ( if (tempLast < 0) if (unlockCnt + tempLast <= 0) tempLast += unlockCnt; unlockCnt = 0; } else unlockCnt += tempLast; tempLast = 0;
if (unlockCnt + tempLast > tempHLen) unlockCnt = tempHLen tempLast; for ' ; unlockCnt > 0 ; ++tempLast, --unlockCnt) if (tempH [tempLast] )
I
ErrNonFatalDisplaylf (
MemHandleUnlock (tempH [tempLast] , I I DmReleaseResource (tempH[tempLast] ) , "UnlkStrR failed"); tempH [tempLast] = NULL; }
/ΓÖªModification history
980304 SMP cosmetic
970925 SMP initial
*/
/ΓÖªEOF -
//GetResource. h © 1997-8 Seth M Powsner extern Int GetlntResource (Int RscID, Int notFoundReturn); extern CharPtr GetStnngResource (Int RscID, CharPtr notFoundReturn) extern CharPtr GetStringRscCopyN (CharPtr dst, Int RscID, CharPtr notFoundReturn, ULong size) ; extern ULong GetTypeResource (Int RscID, ULong notFoundReturn); extern void UnlockStnngResource (Int unlockCnt);
/♦EOF _ - _ - _ _ _ - - - - - - - - - - - - - - - _ _ - _ - - - ♦/ //GoToRecord. c — after Find function, may goto record; © 1997-8 Seth M
Powsner
ΓÖªinclude <P╬╣lot.h>
ΓÖªmclude "AppDBGlobals .h" ΓÖªinclude "GetResource. h"
ΓÖªmclude "GoToRecord. h" ΓÖªinclude "ResourceCommon.h" void GoToRecord (GoToParamsPtr goToParams, Boolean launchmgApp) {
Ulnt attr;
EventType event;
Ulnt goToForm;
Word recordNum; ULong umquelD; recordNum = goToParams->recordNum; // identify passed rec num DmRecordlnfo (appDB, recordNum, Sattr, suniquelD, NULL); if ('launchmgApp)
{
FrmCloseAllForms ( ) ; // assume app may be running and needs to clean up
DmFindRecordBylD (appDB, umquelD, &recordNum) ; // mease of re- ordering, use uni╬▒ue ID
)
// Send events to load and goto a form selecting the matching text. goToForm = GetlntResource (goToFormRscID, firstFormDefault) ;
MemSet (&event, sizeof (EventType) , 0) ; event . eType = frmLoadEvent; event .data. frmLoad. formID = goToForm; event. eType = frmGotoEvent; event .data. frmGoto. recordNum = recordNum; event .data. frmGoto.matchPos = goToParams->matchPos; event .data . frmGoto.matchLen = goToParams->searchStrLen; event .data. frmGoto. atchFieldNum = goToParams->matchF╬╣eldNum; event .data. frmGoto. formID = goToForm; EvtAddEventToQueue (Sevent) ; } /ΓÖªGeneric module addapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13
Modification nistory
980221 SMP cosmetic
971012 SMP simplified version */
/ΓÖªEOF - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//GoToRecord. h © 1997-8 Seth M Powsner extern void GoToRecord (GoToParamsPtr goToParams, Boolean launchmgApp);
/ΓÖªEOF
//Handlers. c— modified for Emap; © 1997-8 ParetoScope ♦include <Pιlot.h> ♦include "AppResourceList .h" ♦include "CustomHandlers .h" ♦include "CommonFormGlobals.h" ♦include "GenencControlHandler . h' ♦include "Handlers. "
ΓÖªinclude "GenencFormHandler .h"
FormEventHandlerPtr FormHandlerTable (Int formN) { switch (formN) { // case (someSpecialForm) : return GenencFormHandler; // define in AppResourceList . h case (nameEtcForm) : return NameEtcFormHandler; case (resultForm) : return ResultFormHandler; case (thankYouForm) : return ThankYouFormHandler; default: return GenencFormHandler;
} } Boolean FormElemHandler (void) {
Boolean handled = false; switch (elementRscType) ( case CMBAR'): //Menu Bar (higher in
EventLoop. c) break; case ('MENU'): //Menu (item) switch (elementID) { default: handled = false;
} break; case CtBTN'): // Button switch (elementID) { default: switch (formID) t default: handled = GeneπcControlHandler ( } } break; case ('tCBX'): //Check Box switch (elementID) { default: handled = GenencControlHandler () ; } break; case CtFLD') : //Field switch (elementID) { default: ; } break; case ftPBN'): //Push Button switch (elementID) { default: handled = GeneπcControlHandler ( ) ; } break; case ('tPUT'): //Popup Trigger switch (elementID) ( default: ; } break; case ('tREP'): //Repeating Button switch (elementID) ( default: handled = GenencControlHandler ( ) ; } break; case CtSLT'): //Selector Trigger switch (elementID) { default: ; } break; case CtTBL') : //Table switch (elementID) { default : ; } default: handled = GenencControlHandler () ;
} return handled;
} /ΓÖª Form & Form Element handlers that may be customized Modifications
980304 SMP cosmetic
971102 SMP flxups
970924 SMP initial
/ΓÖªEOF -
//Handlers. h © 1997-8 ParetoScope extern FormEventHandlerPtr FormHandlerTable (Int formN) extern Boolean FormElemHandler (void) ;
/ΓÖªEOF
// Parse. c — parse (floating numbers); © 1997-8 Seth M Powsner ♦include <Pιlot.h> ♦include <ctype.h> ♦mclude "Parse. h" double ParseFloat (char ♦*p) { char *c = *p;
Boolean negative = false; double value = 0.0; double digitValue = 1.0;
SkipSpaces ( _c) , if Cc =='-') negative = true; C++;
) else if (*c == ' + ' )
C++; while CO' <= *c &i *c <= '9') // (lsdigit (ΓÖªc) ) value = value * 10.0 + (float) (*c++ - '0') if (*c == ' . ')
C++; while CO' <= ΓÖªc && ΓÖªc <= '9') // ds╬▒igit (ΓÖªc) )
{ digitValue *= 0.1; value += ( * c++ - '0 ') ΓÖªdigitValue;
return negative 7 -value : value; } // end parseFloat void SkipSpaces (cnar **p) { while (**p == ' ' II **p == '\f || **p == '\n') // (isspace (**p) (*P)++; return; }
/ΓÖª Modification history
980222 SMP cosmetic
971125 SMP Eliminate ischar for Pilot linking
971121 SMP Initial coding, Flp routines would not link correctly so.
/ΓÖªEOF - _ _ _ "I
//Parse. h © 1997-8 Seth M Powsner extern double ParseFloat (char *+p) ; extern void SkipSpaces (char **p) ;
/ΓÖªEOF
//PilotMain.c - called by emulator, returns error code; © 1997 Seth M Powsner ♦include <Pιlot.h> ♦include "AppGeneπcDefs.h"
ΓÖªinclude "AppDBmfoImt.h" ΓÖªinclude "EventLoop. h"
ΓÖªmclude "GoToRecord. h" ΓÖªinclude "ImtAppDBInfo.h" ΓÖªinclude "Search. h" ΓÖªinclude "StartApplication.h" ΓÖªinclude "StartForm.h" ΓÖªinclude "StopApplication.h" ΓÖªinclude "SyncNotification.h"
DWord P╬╣lotMam(Word cmd, Ptr cmdPBP, Word launchFlags) { switch (cmd) { // commands are defined in SystemMgr.h case (sysAppLaunchCmdNormalLaunch) : if (StartApplication ( ) == OKreturnCode) {
StartFormO; // start / restart EventLoop ( ) ;
StopApplication ( ) , } break; case (sysAppLaunchCmdFmd) :
Search ( (FmdParamsPtr) cmdPBP) ; break; case (sysAppLaunchCmdGoTo) : if (launchFlags & sysAppLaunchFlagNewGlobals)
( if ('StartApplication ()) {
GoToRecord ( (GoToParamsPtr) cmdPBP, true); EventLoop ( ) ;
StopApplication ( ) ; } } else GoToRecord ( (GoToParamsPtr) cmdPBP, false); //running, just show record break; case (sysAppLaunchCmdSaveData) : FrmSaveAllForms ( ) ; //save data, possibly sort db before possiole find break; case (sysAppLaunchCmdSyncNotify) : SyncNotification () ; //may need to recheck db break; case (sysAppLaunchCmdlnitDatabase) : //need to fixup app data in db (eg, categories) AppDBInfolmt ( ( (SysAppLaunchCmdlnitDatabaseType^) cmdPBP) ->dbP) ; break; ) return 0; } /ΓÖªGeneric application mam routine adapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13 Modification history 980220 SMP cosmetic changes 970922 SMP initial ΓÖª/
/ΓÖªEOF _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
// ResourceCommon.h © 1997-8 Seth M Powsner // tSTR resource ID's used to navigate forms and control application ♦define firstFormRscID 9999 ♦define flrstFormDefault 1000 ♦define normalFormMultiple 9998 // normal increment between forms
ΓÖªdefine formMultipleDefault 100 ΓÖªdefine lastFormRscID 9997 ΓÖªdefine lastFormDefault 8900 ΓÖªdefine appTypeRsc 9996
♦αefme appVersionRsc 9995 ♦define appHeaderStr 9994 // for system find invocations ♦define goToFormRscID 9993 ♦define categoryOODefaultName 9989 ♦define categoryOlDefaultName (categoryOODefaultName-1) ♦define category02DefaultName (categoryOODefaultName-2) ♦define category03DefaultName (categoryOODefaultName-3) ♦define category04DefaultName (categoryOODefaultName-4 ) ♦define category05DefaultName (categoryOODefaultName-5) ♦define categoryOδDefaultName (categoryOODefaultName-6) ♦define category07DefaultName (categoryOODefaultName-7) ♦define category08DefaultName (categoryOODefaultName-8) ♦define category09DefaultName (categoryOODefaultName-9) ♦define categorylODefaultName (categoryOODefaultName-10) ♦define categoryllDefaultName (categoryOODefaultName-11^ ♦define categoryl2DefaultName (categoryOODefaultName-12) ♦define categoryl3DefaultName (categoryOODefaultName-13) ♦define category 4Defau tName (categoryOODefaultName-14 ) ♦define categoryl5DefaultName (categoryOODefaultName-15) ♦define primaryDBName 9973
♦define pπmaryDBType (prιmaryDBName-1) ♦define primaryDBAppType (pnmaryDBName-2 ) ♦define secondaryDBName (prιmaryDBName-3) ♦define secondaryDBType (prιmaryDBName-4 ) ♦define secondaryDBAppType (pnmaryDBName-5) ♦define tertiaryDBName (primaryDBName-6) ♦define tertiaryDBType (prιmaryDBName-7 ) ♦define tertiaryDBAppType (primaryDBName-8)
// tSTR resources wnose IDs' are relative to each forms ' ID
ΓÖªdefine answerLabelforForm 0 // answer label instead of formID as string
ΓÖªdefine nextFormSpec 1 // when normal increment not desired,
// -1 not allowed
ΓÖªdefine pnorFormSpec 2 // when normal decrement not desired,
// -1 not allowed, -2 for pop
/ΓÖª tSTR resources wnose IDs' are relative to each form element's ID (or group ID) so individual resource, then group, then form's tSTR's are searched group IDs are added to from ID to make an effective resource ID form input element resource ID's should go by 10 's if a element's ID is less than the form ID, then offset if MOD multiple group ID is handled as usual home form for element / group is used as back up at element & group steps */
ΓÖªdefine answerValue 0 // string value to use instead of implicit
ΓÖªdefine answerLabel 1 // answer label instead of form label
ΓÖªdefine answerDefauit 2
ΓÖªdefine answerMaximum 3
ΓÖªdefine answerM imum 4 ΓÖªdefine answerJump 5 // 0 no, -1 yes to form default, FormID
ΓÖªdefine mustAnswer 6
ΓÖªdefine freshAnswer 7
// form elements with default mtpretations if there is no associated tSTR ΓÖªdefine nextButtonID 1 // IDs offset from formID
ΓÖªdefine backButtonlD 2
ΓÖªdefine restartButtonID 3 xx /* Resource ID map
<= 999 System, according to Tutorial 1.2.2
1000 first form based on CW Constructor
1010 first element m first form
1020 second element, etc
1098 second fixed item, etc
1099 first fixed item in first from, working down
1100 second form 1200 third from, etc 9998 tSTR ╬▒ata
9999 tSTR ╬▒ata for general form processing, works down
> 9999 System, oased on SystemMgr.H
'/
/ΓÖªModification history 980304 SMP cosmetic 970923 SMP Initial ΓÖª/ /ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//SaveRestoreFie d. c — save ana restore chars in a field; © 1997-8 Seth M Powsner
ΓÖªinclude <P╬╣lot.h> ΓÖªinclude "GetObjectPtr .h"
ΓÖªinclude "SaveRestoreFieid. h" ΓÖªinclude "StrCopyN.h" void SaveField (mt ObjectID, char *cp, ULong maxFieldChars) {
FieldPtr fldP; if (NULL '= (fldP = GetObjectPtr (ObjectID) ) ) ( FldCompactText (fldP) ;
StrCopyN(cp, FldGetTextPtr (fldP) , fldP->textLen > 0 Γûá> maxFieldChars : 0) ;
} ) void RestoreField ( t ObjectID, cnar ΓÖªcp) (
FieldPtr fldP; VoidHand tempH; if (NULL '= (fldP = GetObjectPtr (ObjectID) )
&& NULL '= (tempH = MemHandleNew (fldP->maxChars) ) )
{
StrCopy (MemHandleLock (tempH) , cp, fldP->maxChars) ;
MemHandleUnlock (tempH) ; FldSetTextHandle(fldP, tempH) ;
//FldDrawField (fIdP) ; // but not need before form draw
/ΓÖªModification history
980222 SMP initial file
ΓÖª/
/♦EOF _ _ _ - _ - - - - - - - - - - - - - - - - - - - - - - - - ♦/ //SaveRestoreFieid. h © 1997-8 Seth M Powsner extern void SaveFιeld(mt Ob ectID, char ♦cp, ULong maxFieldChars); extern void RestoreField ( t ObjectID, char ♦cp) ;
/♦EOF _ _ _ _ _ _ _ _ _ _ _ _ _ _ */ //ScoreCalculation. c — calculate EnrichMap category score; ©1997-8 Paretoscope
ΓÖªmclude <P╬╣lot.h>
ΓÖªmclude "AppResourceList .h" ΓÖªinclude "GetResource. h"
ΓÖªinclude "Parse. h"
ΓÖªinclude "ScoreCalculation. "
ΓÖªinclude "Storelnput .h" mt likelyCategory; double score [categories] ; void ScoreCalculation (void)
{ char *c; t formID; t elementID; t l; for (I = 0; I < categories; ╬╣++) score [I] = 0.0; if (NULL '= (c = GetStnngResource (categoryConstants, NULL))) ( for (╬╣ = 0; l < categories; ╬╣++) score [l] = ParseFloat (&c) ; UnlockStnngResource (1) ; } for (Firstlnput (SformlD, .elementID); formID; Nextlnput ( .formID,
&elementID) ) ( if (NULL '= (c = GetStnngResource (formID + 10 + answerMultipliers,
'))) for (l = 0; l < categories; ╬╣++) scored] += ParseFloat (&c) ΓÖª ((elementID - formID) / 10) UnlockStnngResource (1) ; }
for (I = likelyCategory = categories - 1; ΓÇöl >=0; ) if (score [likelyCategory] < score [I] ) likelyCategory = I; return;
/ΓÖªModification history 980221 SMP cosmetic 971124 SMP initial coding */ /ΓÖªEOF - - _ _ - _ - - - _ _ _
//ScoreCalculation. h ®1997-8 Paretoscope extern void ScoreCalculation (void
ΓÖªdefine categories 6 extern int likelyCategory; extern double score [ categories ] ;
/ΓÖªEOF
//Search. c — find a record, invoked by system Find feature; © 1997-8 Seth M
Powsner
ΓÖªinclude <P╬╣lot.h> ΓÖªinclude "AppDBClose.h"
ΓÖªinclude "AppDBGlobals .h"
ΓÖªinclude "AppDBOpen.h"
ΓÖªinclude "ResourceCommon.h"
ΓÖªinclude "drawStrmglnBounds . h" ΓÖªinclude "GetResource. h" ΓÖªinclude "Search . h" void Search (FindParamsPtr f dParams)
{ VoidPtr appDBRecP;
Ulnt cardNo;
LocallD dbID;
Boolean full;
CharPtr header; Word pos; RectangleType r;
VoidHand recordH;
Ulnt recordNum; if (AppDBOpenO I! DmOpenDatabaselnfo (appDB, sdblD, 0, 0, &cardNo, 0)) fmdParams->more = false; // no point in bemg called further if DB does not open else { header = GetStnngResource (appHeaderStr, "Application"); //set heading full = FmdDrawrieader (fmdParams, header); UnlockStnngResource (1) ; for ( recordNum = f╬╣ndParams->recordNum; //pickup checking records where told
NULL '= (recor╬▒H = DmQueryNextlnCategory (appDB, SrecordNum, dmAllCategories) )
&& 'full; recordNum++)
{ if (FmdStrlnStr (appDBRecP = MemHandleLock (recordH) , fmdParams->strToFmd, &pos) ) { if (true == (full = FmdSaveMatcn (fmdParams, recordNum, pos, 0, 0, cardNo, dbID) ) ) recordNum--; // need to visit this record again else f // Get the bounds of the region where we will draw the results .
FmdGetLmeBounds (fmdParams, &r) ; // Display the record in the search dialog. We move in one pixel // so that when the record is inverted the left e╬▒ge is solid. . topLeft . x++; r . extent .xΓÇö ;
DrawStrmglnBounds (appDBRecP, &r) ; // line is used for the record. fmdParams->l╬╣neNumber++ ;
} MemHandleUnlock (recordH) ; fmdParams->more = (NULL '= recordH);
AppDBClose ( ) ;
/ΓÖªGeneric module addapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13 Modification history
980221 SMP changed stopping logic 971012 SMP simplified version ΓÖª/ /ΓÖªEOF - - - - _ - - - - - - - - - - - - - - - - - - - - _ - - - ΓÖª/
//Search. h © 1997-8 Seth M Powsner extern void Search (FindParamsPtr fmdParams) ; /♦EOF - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//Serial. c — serial interface test code; © 1997-8 Seth M Powsner ♦include <Pιlot.h> //♦include <SerιalLιbMac.h> ♦include <SerιalMgr .h>
♦define serialPortNum 0 ♦define defaultBaudRate 57600 ♦define testMsg "Abe Def\r\n" static Int openStatus = false; static Ulnt senalLibRefNum; extern void SerialTest (void) ; static Err Seπallnit (void)
Err error = false; if ( ' openStatus) if ('(error = SysLibFind ("Serial Library", .senalLibRefNum))) if ('(error = SerOpen (senalLibRefNum, serialPortNum, defaultBaudRate) ) ) openStatus = true; return error; } voi╬▒ SerialTest (void) {
ErrNonFatalDisplaylf (Seriallmt () , "Seπallnit trbl.");
ErrNonFatalDisplaylf (SerClearErr (senalLibRefNum), "SerClearErr trbl."); // no error returned, just clears
ΓÖªif EMULATION_LEVEL == EMULATION_NONE
ErrNonFatalDisplaylf (SerSendVlO (senalLibRefNum, testMsg, sizeof (testMsg) )
, "SerSend trbl. ") ; ErrNonFatalDisplaylf (SerSendWait (senalLibRefNum, serDefaultCTSTimeout ) , "SerSendWait trbl."); //5^sysT╬╣cksPerSecond
ΓÖªendif ErrNonFatalDisplaylf (SerClose (senalLibRefNum)
, "SerClose trbl ") ; // serErrNotOpen may not be error }
/ΓÖªModification history 980221 SMP cosmetic 971115 SMP initial coding */
/ΓÖªEOF - - _ _ _ - - - - - - - - - _ - - - - - - - - - - - - - - */
//StartApplication. c -- initialization, including opening mam database; © 1997-8 Seth M Powsner ♦include <Pιlot.h>
ΓÖªinclude "AppGlobals .h" ΓÖªinclude "AppDBGlobals .h"
ΓÖªmclude "AppDBOpen.h" ΓÖªinclude "GetResource. h" ΓÖªinclude "ResourceCommon.h"
ΓÖªinclude "StartApplication. h"
ΓÖªinclude "StoreFieldlnput .h"
ΓÖªmclude "StrCopyN.h" Boolean StartApplication (void) {
//SystemPreferencesType sysPrefs;
//PrefGetPreferences (SsysPrefs) ; appType = GetTypeResource (appTypeRsc, appTypeDefault) ; appVersion = GetlntResource (appVersionRsc, appVersionDefault) ; if ( i PrefGetAppPreferencesVlO (appType, appVersion, appPreferences, sizeof (appPreferences) ) ) { StrCopyN (appPreferences, appPrefDefault, sizeof (appPreferences). '
PrefSetAppPreferencesVIO (appType, appVersion, appPreferences, sizeof (appPreferences) ) ; }
// Clear out name fields ClearFieldlnput ( ) ; return AppDBOpen ( ) ; }
/ΓÖªGeneric routine adapted from MemoPad.c per CodeWarnor Targettmg Palm OS v.1.2.1 pp.13
980221 SMP cosmetic cnanges */ /ΓÖªEOF - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//StartApplication. h © 1997-8 Seth M Powsner extern Boolean StartApplication (void) ; /*EOF - - - _ - - _ - - - - - - - - - - - - - - - - - _ - - - - */
//StartForm. c -- go to first form based on resource definitions; © 1997-8 Seth M Powsner ♦include <Pιlot.h> ♦include "GetResource . n"
ΓÖªmclude "ResourceCommon.h" ΓÖªinclude "StartForm. h" void StartForm(void) {
FrmGotoForm (GetlntResource (firstFormRscID, firstFormDefault ) ) ; }
/ΓÖªGeneric application mam routine adapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13
980220 SMP cosmetic changes */ /♦EOF _ - - - - - - - - - - - - - - - - - - - _ - - - - - - - - */ //StartForm. h © 1997-8 Seth M Powsner extern void StartForm(voιd) ;
/♦EOF - - - - - - - - - - - - - - - - - - - - _ - - - - - _ - - ♦/ //StopApplication. c — oackout things setup in StartApplication; © 1997-8
Seth M Powsner
ΓÖªinclude <P╬╣lot.h>
♦include "AppGlobals . π"
ΓÖªinclude "AppDBClose . n" ΓÖªinclude "StopApplication. h" void StopApplication (void) { FrmCloseAllForms ( ) , // frmCloseEvent to all forms (outside of
EventLoop control)
// Close database
ErrNonFatalDisplaylf (AppDBClose () , "Trouble closing DB.");
// Save preferences & state initialized in StartApplication PrefSetAppPreferencesVIO (appType, appVersion, appPreferences, sizeof (appPreferences) ) ; }
/ΓÖªGeneric routine adapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13 Modification History 980221 SMP cosmetic changes 971115 SMP V10 call for compatibility under new SDK 970927 SMP original adapted from Tutorial
/ΓÖªEOF */
//StopApplication. © 1997-8 Seth M Powsner extern void StopApplication (void) ;
/ΓÖªEOF _ - - - - - - - - - - - - - - - _ _ _ -
//StoreFieldlnput . c — store and restore) name fields, etc; © 1997-
ParetoScope
ΓÖªinclude <P╬╣lot.h>
♦include "AppGeneπcDefs .h" ♦include "AppResourceList ,h" ♦include "CommonFormGlobals.h"
ΓÖªmclude "GetResource. h"
ΓÖªmclude "SaveRestoreFieid. h" ΓÖªinclude "ScoreCalculation. h" ΓÖªinclude "StoreFieldlnput .h" mt f╬╣eldL╬╣st[] = (lastName, firstName, clientNumber } ; const int maxFieldChars = 32; char fieldStrmg [arrayLength (fieldList) ] [maxFieldChars] ; void ClearFieloInput (void) t l ; for (l = arrayLength (fieldList) ; -i >= 0; ) f╬╣eldStr╬╣ng[╬╣] [0] = '\0'; void SaveFieldlnput (void) t l ; for (I = arrayLength (fieldList) ; ΓÇöI >= 0; )
SaveField ( fieldList [l] + formID, fieldStrmg [1] , maxFieldChars) void RestoreFieldlnput (void) mt l ; for (l = arrayLength (fieldList) ; ΓÇöI >= 0; )
RestoreField (fieldList [I] + resultForm, ieldStrmg [l] ) ; RestoreF╬╣eld(resultF╬╣eld + resultForm, GetStnngResource (likelyCategory + resultText + formID,
"Error. Please report."));
UnlockStnngResource (1) ; } /* Modification history
980222 SMP separated out low level Pilot calls, & cosmetic fixes
971125 SMP Use likelyCategory to set response
971123 SMP Initial coding
*/ /ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//StoreFieldlnput. h © 1997-8 ParetoScope extern void ClearFieldlnput (void) ; extern void SaveFieldlnput (void) ; extern void RestoreFieldlnput (void) ;
/ΓÖªEOF - - - - - _ _ _ - - - - - - - - - _ - - - - - - - - - _ - */
//Storelnput. c — store inputs from form; © 1997-8 Seth M Powsner ♦include <Pιlot.h>
ΓÖªmclude "Storelnput .h" const tableLen = 29; //should be prime typedef struct { mt formID; mt elementID; } formElementPair; const empty = 0; static formElementPair table [tableLen] ; Boolean tablelmtialized = false; formElementPair ΓÖªpossibleEntry (mt formID); void Clearlnput (void) { tablelmtialized = false;
} void Savelnput ( mt formID, mt elementID) { formElementPair ^p; ErrFatalDisplaylf (NULL == (p = possibleEntry ( formID) )
I I (p->formID '= formID && p->formID '= empty), "Input table overflow."); p->formID = formID; p->elementID = elementID; return;
} mt Restorelnput (mt formID) { formElementPair *p = possibleEntry (formID) ; return p && p->formID == formID *> p->elementID : NULL; } formElementPair ΓÖªpossibleEntry (mt formID) { int probe, toCheck; if ('tablelmtialized) tablelmtialized = true; for (probe = tableLen; ΓÇöprobe >=0;) table [probe] . formID = empty; } for (probe = formID % tableLen, toCheck = tableLen;
ΓÇötoCheck >= 0 && table [probe] .formID '= empty && table [probe] . formID '= formID; prooe = (probe + 1) % tableLen) return Stable [probe] ;
int nextPair = -1; void Firstlnput ( t ΓÖªformlDp, mt ΓÖªelementlDp) { nextPair = tableLen - 1;
Nextlnput (formlDp, elementlDp); } void Nextlnputdnt ΓÖªformlDp, mt ΓÖªelementlDp) while (nextPair >= 0 && table [nextPair] . formID == empty) ΓÇönextPair; if (nextPair >= 0)
{
ΓÖªformlDp = table [nextPair] . formID; ΓÖªelementlDp = table [nextPair] . elementID; ΓÇönextPair; } else
ΓÖªformlDp = ΓÖªelementlDp = empty; return; } /ΓÖª Modification history 980222 SMP cosmetic
971121 SMP Initial coding, simple hash design, element ID only ΓÖª/ /ΓÖªEOF _ _ _ */
//Storelnput. h © 1997-8 Seth M Powsner extern void Clearlnput (void) ; extern void Firstlnput (mt ♦formlDp, mt ♦elementlDp); extern void Nextlnputdnt ♦formlDp, mt ♦elementlDp); extern void Savelnput (int formID, int elementID); extern int Restorelnput (mt formID);
/ΓÖªEOF - - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//StrAToType. c — convert ascn to "type" type; © 1997-8 Seth M Powsner ♦mclude <Pιlot.h>
ΓÖªinclude "StrAToType. h" ULong StrAToType (CharPtr str) {
Int n;
CharPtr p;
ULong type = ' ' ; for (n = sizeof (type) , p = (CharPtr) &type; ΓÇön >= 0 & *str; ; ΓÖªp++ = ΓÖªstr++; return type; } /ΓÖªModification history
980222 SMP cosmetic
*/
/♦EOF - - - - - - - - - //StrAToType.h © 1997-8 Seth M Powsner extern ULong StrAToType (CharPtr str); /♦EOF - - _ _ _ _ _ _ _ _ _ _ _ _
//StrCopyN. c -- string copy with limit; © 1997-8 Seth M Powsner ♦include <Pιlot.h>
ΓÖªmclude "StrCopyN. h"
CharPtr StrCopy (CharPtr dst, CharPtr src, ULong n) { if (n '= 0) while (ΓÇön && (*dst++ = *src++) '= 0) ; if (n == 0) *dst++ = NULL; return dst; }
/ΓÖªModification history 980221 SMP cosmetic
970926 SMP initial coding (st╬▒ function, but not on Pilot) */ /ΓÖªEOF - - - - - - - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ */
//StrCopyN. h © 1997-8 Seth M Powsner extern CharPtr StrCopyN (CharPtr dst, CharPtr src, ULong n) ;
/ΓÖªEOF - - - - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
//SyncNoti ication. c — let application know about syncronizations; © 1997-
Seth M Powsner
ΓÖªinclude <P╬╣lot.h>
ΓÖªinclude "SyncNotification.h"
Err SyncNotification (void) //dummy routine { return (0) ; /ΓÖªGeneric routine adapted from MemoPad.c per CodeWarrior Targettmg Palm OS v.1.2.1 pp.13
Modification history
980221 SMP cosmetic
*/
/ΓÖªEOF - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//SyncNotification.h © 1997-8 Setn M Powsner extern Err SyncNotification (void) ;
/ΓÖªEOF
//TestCode.c— generic Test Code routine stub; © 1997-8 Seth M Powsner ♦include <Pιlot.h> ♦include "AppResourceList. h" ♦include "TestCode.h"
Boolean TestCodednt formID)
{ //SoundManager . h
SndPiaySystemSound (sndWarmng) ; //to signal code bemg tested //add code here return true;
) /ΓÖªModification history
980303 SMP cosmetic
971120 SMP initial use
*/
/ΓÖªEOF - - - - - - - - - - - - - _ _ _ _ _ _ _ _ _ _ _ _ */
//TestCode.h © 1997-8 Seth M Powsner
Boolean TestCodednt formID);
/♦EOF - - - - - - - - - - - - - - - - - - - - - - - - _ _ - */ //ToStr.c — various type to string conversions; © 1997-8 Seth M Powsner ♦include <Pιlot.h> ♦include <NewFloatMgr .h> ♦include "ToStr.h" static char ♦ StrUToA2 (char ♦p, ULong u, Boolean leadmgZero) ; static cnar convertBuf [8] [12] ; static Word convertBufNext = 0; ♦define convertBufNextMask 7; cnar ♦ FloatToSt (double di {
FlpCo pDouble ΓÖªp = (void ΓÖª) &d; convertBufNext = (convertBufNext + 1) & convertBufNextMask; FlpFToA(p->fd, convertBuf [convertBufNext ]) ; return convertBuf [convertBufNext] ; } char ΓÖª IntToStr (/*long*/╬╣nt i) { convertBufNext = (convertBufNext + 1) & convertBufNextMask; return StrlToA (convertBuf [convertBufNext] , l) ; char ΓÖª ULongToStr (ULong i) { convertBufNext = (convertBufNext + 1) & convertBufNextMask; return StrUToA2 (convertBuf [convertBufNext] , I, false); char * ULongToStrFixed (ULong I) { convertBufNext = (convertBufNext + 1) & convertBufNextMask; return StrUToA2 (convertBuf [convertBufNext] , I, true); } static ULong powersOfTen[ ] = (1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10,
0) char ΓÖª StrUToA2 (char *p, ULong u, Boolean leadingZero) { char ΓÖªdp = p; int i;
ULong ΓÖªtenp; for (tenp = &powersOfTen[0] ; ΓÖªtenp; tenp++)
{ i = (int) (u/ (*tenp) ) ; leadingZero |= (i != 0) ; if (leadingZero)
*dp++ = ("0123456789") [i] ; u -= i * (ΓÖªtenp) ;
} ΓÖªdp++ = ("0123456789") [u] ; ΓÖªdp++ = 'u' ; ΓÖªdp = NULL; return p;
}
/ΓÖªModification history 980222 SMP cosmetic
971115 SMP added StrUToA & StrUtoAFixed
971113 SMP renamed ToStr.c, ULongToStr added;
970921 SMP separated out
*/ /ΓÖªEOF - - - - _ - - - - - - - - - - _ - - - - - - - -
//ToStr.h © 1997-8 Seth M Powsner extern char ♦ FloatToStr (double d) ; extern char ♦ IntToStr ( longVint i) ; extern char ♦ ULongToStr (ULong i) ; extern char ♦ ULongToStrFixed (ULong i) ;
/ΓÖªEOF
PCT/US1999/012222 1998-06-03 1999-06-02 Method and apparatus for predicting and improving patient compliance with medical treatment WO1999063462A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU43276/99A AU4327699A (en) 1998-06-03 1999-06-02 Method and apparatus for predicting and improving patient compliance with medical treatment

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US8784798P 1998-06-03 1998-06-03
US60/087,847 1998-06-03
US32039499A 1999-05-26 1999-05-26
US09/320,394 1999-05-26

Publications (1)

Publication Number Publication Date
WO1999063462A1 true WO1999063462A1 (en) 1999-12-09

Family

ID=26777457

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/012222 WO1999063462A1 (en) 1998-06-03 1999-06-02 Method and apparatus for predicting and improving patient compliance with medical treatment

Country Status (2)

Country Link
AU (1) AU4327699A (en)
WO (1) WO1999063462A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013187776A1 (en) * 2012-06-12 2013-12-19 Fisher & Paykel Healthcare Limited Method and apparatus for improving breathing therapy compliance
WO2015091223A1 (en) * 2013-12-17 2015-06-25 Koninklijke Philips N.V. System and method for assessing the cognitive style of a person
US20170076053A1 (en) * 2007-02-22 2017-03-16 WellDoc, Inc. Systems and methods for disease control and management
US10846607B2 (en) 2007-02-22 2020-11-24 WellDoc, Inc. Adaptive analytical behavioral and health assistant system and related method of use
US10872686B2 (en) 2007-02-22 2020-12-22 WellDoc, Inc. Systems and methods for disease control and management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572421A (en) * 1987-12-09 1996-11-05 Altman; Louis Portable medical questionnaire presentation device
US5642731A (en) * 1990-01-17 1997-07-01 Informedix, Inc. Method of and apparatus for monitoring the management of disease
US5908383A (en) * 1997-09-17 1999-06-01 Brynjestad; Ulf Knowledge-based expert interactive system for pain

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572421A (en) * 1987-12-09 1996-11-05 Altman; Louis Portable medical questionnaire presentation device
US5642731A (en) * 1990-01-17 1997-07-01 Informedix, Inc. Method of and apparatus for monitoring the management of disease
US5908383A (en) * 1997-09-17 1999-06-01 Brynjestad; Ulf Knowledge-based expert interactive system for pain

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170076053A1 (en) * 2007-02-22 2017-03-16 WellDoc, Inc. Systems and methods for disease control and management
US10818389B2 (en) 2007-02-22 2020-10-27 WellDoc, Inc. Systems and methods for disease control and management
US10846607B2 (en) 2007-02-22 2020-11-24 WellDoc, Inc. Adaptive analytical behavioral and health assistant system and related method of use
US10860943B2 (en) 2007-02-22 2020-12-08 WellDoc, Inc. Systems and methods for disease control and management
US10872686B2 (en) 2007-02-22 2020-12-22 WellDoc, Inc. Systems and methods for disease control and management
US11004558B2 (en) 2007-02-22 2021-05-11 WellDoc, Inc. Systems and methods for disease control and management
US11699511B2 (en) 2007-02-22 2023-07-11 WellDoc, Inc. Systems and methods for disease control and management
WO2013187776A1 (en) * 2012-06-12 2013-12-19 Fisher & Paykel Healthcare Limited Method and apparatus for improving breathing therapy compliance
WO2015091223A1 (en) * 2013-12-17 2015-06-25 Koninklijke Philips N.V. System and method for assessing the cognitive style of a person
US10515631B2 (en) 2013-12-17 2019-12-24 Koninklijke Philips N.V. System and method for assessing the cognitive style of a person

Also Published As

Publication number Publication date
AU4327699A (en) 1999-12-20

Similar Documents

Publication Publication Date Title
US7379885B1 (en) System and method for obtaining, processing and evaluating patient information for diagnosing disease and selecting treatment
US6282531B1 (en) System for managing applied knowledge and workflow in multiple dimensions and contexts
US10290070B2 (en) System and method for integrating data with guidelines to generate displays containing the guidelines and data
EP1062615B1 (en) Systems, methods and computer program products for monitoring, diagnosing and treating medical conditions of remotely located patients
Kravitz et al. Comparing the use of physician time and health care resources among patients speaking English, Spanish, and Russian
CA2350766C (en) Patient healthcare system
US20060112050A1 (en) Systems and methods for adaptive medical decision support
Peeples et al. The conceptual framework of the national diabetes education outcomes system (NDEOS)
Nease et al. A method for estimating the cost-effectiveness of incorporating patient preferences into practice guidelines
US20210098099A1 (en) Systems and methods for selecting a treatment schema based on user willingness
Park Nurses' perception of performance and responsibility of patient education
Montani et al. Diabetic patients management exploiting case-based reasoning techniques
Gorman et al. DEMS—a second generation diabetes electronic management system
WO2021140731A1 (en) Information transmitting device and information transmitting method
O'Connor et al. Integrating population health concepts, clinical guidelines, and ambulatory medical systems to improve diabetes care
US20180068084A1 (en) Systems and methods for care program selection utilizing machine learning techniques
WO1999063462A1 (en) Method and apparatus for predicting and improving patient compliance with medical treatment
Prioleau et al. Understanding reflection needs for personal health data in diabetes
KR20030070871A (en) A health control process based on internet
Sicoly Computer-aided decisions in human services: Expert systems and multivariate models
Maimone Data and knowledge acquisition in case-based reasoning for diabetes management
Goldbach et al. CHARACTERISTICS OF CONSUMER BEHAVIOUR IN SERVICES SECTOR.
Gillis et al. Translating traditional principles of system development into a process for designing clinical information systems
Broome Scientific inquiry: Outcomes research: Practice counts!
Kehoe Race and medicine: The Black experience

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AL AM AT AU AZ BA BB BG BR BY CA CH CN CU CZ DE DK EE ES FI GB GE GH GM HR HU ID IL IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT UA UG UZ VN YU ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase