Appendix B - IDL Description of Patient Record Object
//
// hc_types.idl
//
// IDL declarations for the patient record structures
// First, define the basic data types used in terms of CORBA types
typedef string name_type;
typedef string login_type;
typedef string<9> id_type;
typedef string<2> state_type;
typedef string<10> zipcode_type;
typedef string complaint_type; // string of keywords
typedef string symptom_type; // string of keywords
typedef string<255> URL_type; // string to hold Universal Resource Locator
typedef string treatment_type; // unstructured text for storing treatment information
typedef char sex_type; // Male, Female
typedef string role_type; // type for storing the role identifier
typedef string<10> password_type; // type for storing passwords
typedef string<10> date_type; // date in mm/dd/yyyy format
typedef string<16> date_time_type; // date and time in "mm/dd/yyyy hh:mm" format
typedef string name_address_type; // used for storing name and
address of companies, etc.
typedef string<3> time_zone_type; // type for time zone
indicator
//
// Next, define the compund data types in terms of the basic data
// types. These definitions form the basic patient record information
// structure.
//
struct address_type {
string street;
string city;
state_type state;
zipcode_type zipcode;
};
enum date_data_format {SINGLE, RANGE};
struct date_data_type {
date_data_format format; // set to SINGLE or RANGE to indicate
// whether a single date or a date range
time_zone_type time_zone; // stores the time zone indicator
date_type begin_date;
date_type end_date;
};
struct date_time_data_type {
date_data_format format; // set to SINGLE or RANGE to indicate
// whether a single date or a date range
time_zone_type time_zone; // stores the time zone indicator
date_time_type begin_date_time;
date_time_type end_date_time;
};
struct patient_record_id_type {
id_type patient_id;
name_type last_name;
name_type middle_name;
name_type first_name;
address_type address;
};
struct patient_record_administrative_type {
id_type patient_id;
sex_type sex;
date_data_type date_of_birth;
date_data_type date_of_death;
};
struct patient_record_encounter_type {
id_type patient_id;
date_time_data_type encounter_date;
complaint_type complaint;
symptom_type symptoms;
id_type doctor_id;
treatment_type treatment;
};
struct patient_record_encounter_notes_type {
id_type patient_id;
date_time_data_type encounter_date;
date_time_data_type notes_date;
id_type doctor_id;
URL_type notes_URL; // doctor notes are stored in a file and the
// URL to the file is given to the client
};
struct patient_record_diagnostic_type {
id_type patient_id;
date_time_data_type encounter_date;
date_time_data_type diagnostic_date;
name_address_type diagnostic_center;
URL_type diagnostic_URL; // diagnostic data is stored in a file and the
// URL to the file is given to the client
};
struct patient_record_annotation_type {
id_type patient_id;
date_time_data_type encounter_date;
date_time_data_type diagnostic_date;
date_time_data_type annotation_date;
id_type doctor_id;
URL_type annotation_URL; // annotation data is stored in a file and the
// URL to the file is given to the client
};
//
// Next, define a record type to hold the information required
// for access control on the server. A record of this type
// is passed to each server method. The methods verify the
// role access before providing data.
//
struct access_control_information_type {
id_type requestor_id;
login_type requestor_login;
role_type requestor_role;
password_type requestor_password;
string access_result; // contains string which indicates result of access
// verification when there is an error
// this is null when no error.
};
//
// Next, define some sequences which are used to store the lists
// of objects being returned by the server
//
typedef sequence<id_type> patient_id_list_type;
// a list of patient identifiers;
typedef sequence<patient_record_id_type> patient_record_id_list_type;
// a list of patient id records
typedef sequence<patient_record_administrative_type>
patient_record_administrative_list_type;
// a list of administrative records
typedef sequence<patient_record_encounter_type> patient_encounter_list_type;
// a list of patient encounters
typedef sequence<patient_record_encounter_notes_type>
patient_encounter_notes_list_type;
// a list of patient encounter notes
typedef sequence<patient_record_diagnostic_type> patient_diagnostic_list_type;
// a list of diagnostic data records
typedef sequence<patient_record_annotation_type> patient_record_annotation_list_type;
// a list of annotation data records
//
//
// Define the structure to hold the complete patient record
//
struct patient_record_type {
patient_record_id_type id_record;
patient_record_administrative_type admin_record;
patient_encounter_list_type encounter_list;
// a list of patient encounters
patient_encounter_notes_list_type encounter_notes_list;
// a list of patient encounter notes
patient_diagnostic_list_type diagnostic_list;
// a list of diagnostic data records
patient_record_annotation_list_type annotation_list;
// a list of annotation data records
};
//
// hc.idl
//
#include "hc_types.idl"
// IDL declarations for interface to patient record server objects
//
interface patient_record_server_type {
// returns an entire patient record
patient_record_type GetPatientRecord(inout
access_control_information_type role_access_info, in id_type
patient_id);
// returns a list of patient id records that have matches to the
// criteria specified in the input parameter
patient_record_id_list_type GetIdRecordList(in patient_record_id_type
id_criteria, inout access_control_information_type
role_access_info);
// return a list of administrative records based on matching fields
// in the criteria record
patient_record_administrative_list_type GetAdministrativeList (in
patient_record_administrative_type admin_criteria, inout
access_control_information_type role_access_info);
// returns a list of encounters based on matching fields
// in the criteria record
patient_encounter_list_type GetEncounterList (in
patient_record_encounter_type encounter_criteria, inout
access_control_information_type role_access_info);
// returns a list of encounter notes based on matching fields
// in the criteria record
patient_encounter_notes_list_type GetEncounterNotesList (in
patient_record_encounter_notes_type encounter_notes_criteria,
inout access_control_information_type role_access_info);
// returns a list of diagnostic records based on matching fields
// in the criteria record
patient_diagnostic_list_type GetDiagnosticList(in
patient_record_diagnostic_type diagnostic_criteria, inout
access_control_information_type role_access_info);
// returns a list of annotation records based on matching fields
// in the criteria record
patient_record_annotation_list_type GetAnnotationList(in
patient_record_annotation_type annotation_criteria, inout
access_control_information_type role_access_info);
};
Up Previous
Next