CREATE OR REPLACE PACKAGE BODY TELEMED.tm_videoconference_v2 AS pkg_date DATE; v_readonly NUMBER (1); curr_image_src VARCHAR2 (100); d_doc number; PROCEDURE html (p_date IN VARCHAR2 := '') AS tmp_menu_num NUMBER (2); u_id NUMBER; BEGIN IF qba_system.qba_engine_stopped THEN RETURN; END IF; tm_common_v2.init; v_readonly := 1; pkg_date := TO_DATE (p_date, 'dd.mm.yyyy'); d_doc := 1; IF NVL (pkg_date, qba_system.g_sysdate + 1) > qba_system.g_sysdate THEN pkg_date := TRUNC (qba_system.g_sysdate); END IF; IF tm_common_v2.c#user_profile.role_id IN (2, 3, 4, 5) THEN u_id := tm_common_v2.c#patient_id; ELSE u_id := qba_system.g_user_id; END IF; -- CASE WHEN tm_common_v2.c#user_profile.role_id IN (2, 3) THEN tmp_menu_num := 2; WHEN tm_common_v2.c#user_profile.role_id IN (4, 5) THEN tmp_menu_num := 5; WHEN tm_common_v2.c#user_profile.role_id = 6 THEN tmp_menu_num := 2; ELSE tmp_menu_num := 0; END CASE; tm_common_v2.page_header (p_title => qba_lang.MESSAGE (p_name => 'SYS.VIDEO_CONFERENCES') ,p_sub_title => qba_lang.MESSAGE (p_name => 'SYS.VIDEO_CONFERENCES') /* || qba_utils.ifnotnull ( u_id , '
' || '' || '')*/ ,p_left_menu_num => tmp_menu_num ,prc_callback => 'tm_videoconference_v2.header_callback' ); HTP.p (' '); IF tm_common_v2.c#user_profile.role_id = 6 then HTP.p (' '); tm_common_v2.page_footer; END html; PROCEDURE print_patient_videoconf AS BEGIN HTP.p (''); HTP.p (' '); print_user_conferences; END print_patient_videoconf; PROCEDURE print_user_conferences AS BEGIN IF tm_common_v2.c#user_profile.role_id IN (1) AND tm_common_v2.c#patient_id IS NULL THEN RETURN; END IF; HTP.p ('
'); HTP.p (' '); HTP.p ('
'); HTP.p ('
'); -- tm_prescription_v2.print_user_live_confs; print_current_conference; HTP.p ('
'); HTP.p ('
'); prn_doc_list (tm_common_v2.c#user_profile.user_id); HTP.p ('
'); HTP.p ('
'); END print_user_conferences; PROCEDURE print_current_conference AS BEGIN IF qba_system.qba_engine_stopped THEN RETURN; END IF; HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); -- HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); FOR rec in( select TO_CHAR (trunc_ts_tz (tdf.date_from, 'MI', 'CURRENT'), 'dd.mm.yyyy', 'NLS_DATE_LANGUAGE = AMERICAN') as tyear, TO_CHAR (trunc_ts_tz (tdf.date_from, 'MI', 'CURRENT'), 'hh24:mi', 'NLS_DATE_LANGUAGE = AMERICAN') as tstart, TO_CHAR (trunc_ts_tz (tdf.date_to, 'MI', 'CURRENT'), 'hh24:mi', 'NLS_DATE_LANGUAGE = AMERICAN') as tend, TDF.ACCEPTED as status, QA.FIRST_NAME as namer, QA.LAST_NAME as surname, TDF.DATE_FROM as valid, TDF.DATE_TO as valid2 from tm_doc_free_time tdf, qba_users qa where TDF.PATIENT = QBA_SYSTEM.G_USER_ID and QA.USER_ID = TDF.DOC_ID order by TDF.DATE_FROM DESC ) loop HTP.p (' '); HTP.p (' '); -- HTP.p (' '); HTP.p (' '); if rec.valid >= sysdate then IF rec.status = 1 then HTP.p (' '); end if; IF rec.status = 2 then HTP.p (' '); end if; else HTP.p (' '); end if; if rec.valid <= sysdate and rec.valid2 >= sysdate then HTP.p (' '); else HTP.p (' '); end if; HTP.p (' '); END LOOP; HTP.p (' '); HTP.p ('
' || qba_lang.MESSAGE (p_name => 'SYS.TIME') || '' || qba_lang.MESSAGE (p_name => 'SYS.END_TIME') || '' || qba_lang.MESSAGE (p_name => 'SYS.SPECIALIST') || '' || qba_lang.MESSAGE (p_name => 'SYS.STATUS') || ' ' || qba_lang.MESSAGE (p_name => 'SYS.CONNECT') || '
' || rec.tyear ||' ' || qba_lang.MESSAGE (p_name => 'SYS.FROM') ||' '||rec.tstart||' ' || qba_lang.MESSAGE (p_name => 'SYS.TO') || ' ' ||rec.tend|| '' || rec.end_time|| '' ||rec.surname ||' '|| rec.namer|| ''|| qba_lang.MESSAGE (p_name => 'SYS.Pending')||''|| qba_lang.MESSAGE (p_name => 'SYS.ACCEPTED') ||''|| qba_lang.MESSAGE (p_name => 'SYS.FINISHED') ||'ok
'); END print_current_conference; PROCEDURE print_doctor_conferences AS BEGIN IF tm_common_v2.c#user_profile.role_id IN (1) AND tm_common_v2.c#patient_id IS NULL THEN RETURN; END IF; -- HTP.p ('
'); /* HTP.p (' '); HTP.p ( ' ' || '' || '' ); */ /* HTP.p('
    '); HTP.p('
  • '); HTP.p('

    Calendar

    '); HTP.p('

    Here you can find your events

    '); HTP.p('
  • '); HTP.p('
  • '); HTP.p('

    Connect to conference

    '); HTP.p('

    Be online with your doctor

    '); HTP.p('
  • '); HTP.p('
'); */ -- HTP.p ('
'); END print_doctor_conferences; PROCEDURE header_callback (event_type IN VARCHAR2 := '',doctor in number:=41) AS docer number; BEGIN CASE header_callback.event_type WHEN 'add_to_head' THEN -- IF (tm_common_v2.c#user_profile.role_id IN (2, 3, 4, 5, 6) AND tm_common_v2.c#patient_id IS NOT NULL) OR tm_common_v2.c#user_profile.role_id = 6 THEN HTP.p (''); ELSE NULL; END CASE; END header_callback; PROCEDURE header_callback2 (event_type IN VARCHAR2 := '',doc_id number) as begin CASE header_callback2.event_type WHEN 'add_to_head' THEN -- IF (tm_common_v2.c#user_profile.role_id IN (2, 3, 4, 5, 6) AND tm_common_v2.c#patient_id IS NOT NULL) OR tm_common_v2.c#user_profile.role_id = 6 THEN HTP.p (''); HTP.p (''); HTP.p (''); HTP.p ('Closed'); HTP.p (''); HTP.p (''); END close_connect; PROCEDURE print_doc_free_time (doc_id IN NUMBER) AS BEGIN IF qba_system.qba_engine_stopped THEN RETURN; END IF; END print_doc_free_time; PROCEDURE doc_add_time(date_f in varchar2 , date_t in varchar2, ymd in varchar2 ) as full_date_start varchar2(25); full_date_end varchar2 (25); BEGIN IF qba_system.qba_engine_stopped THEN RETURN; END IF; tm_common_v2.init; --full_date_start := '2012.09.19' || date_f; -- full_date_end := '2012.09.19' || date_t; full_date_start := ymd || date_f; full_date_end := ymd || date_t; -- insert into tm_doc_free_time(doc_id,date_from,date_to) values(2, TO_DATE('2012.08.1115:30','YYYY.MM.DDHH24:MI'), TO_DATE('2012.08.1116:00', 'YYYY.MM.DDHH24:MI')); insert into tm_doc_free_time(doc_id,date_from,date_to) values(QBA_SYSTEM.G_USER_ID , TO_DATE(full_date_start, 'YYYY.MM.DDHH24:MI'), TO_DATE(full_date_end, 'YYYY.MM.DDHH24:MI')); commit; END doc_add_time; PROCEDURE upd_calendar (name_array IN OWA.vc_arr, value_array IN OWA.vc_arr) as ref_proc VARCHAR2 (200); rec_p tm_doc_free_time%ROWTYPE; gmt_rec_p tm_doc_free_time%ROWTYPE; nn NUMBER; dater varchar2 (20); time_from varchar2(20); time_to varchar2(20); date_from varchar2(20); date_to varchar2(20); conf_id number; timezone varchar2(10byte); GMT varchar2(10byte); GMT1 varchar2(10byte); GMT4 varchar2(10byte); begin IF qba_system.qba_engine_stopped THEN RETURN; END IF; tm_common_v2.init; ref_proc := qba_utils.get_val_from_arr (name_array, value_array, 'ref_proc'); -- rec_p.id := qba_utils.get_val_from_arr (name_array, value_array, 'prid'); GMT := '+00:00'; GMT1 := '+01:00'; GMT4 := '+04:00'; select NVL (uu.user_time_zone, qba_utils.get_preference ('SYSTEM_TIME_ZONE')) into timezone from qba_users uu where UU.USER_ID =QBA_SYSTEM.G_USER_ID; FOR nn IN name_array.FIRST .. name_array.LAST LOOP CASE name_array (nn) when 'u_label' then dater := value_array (nn); when 'u_subscriber_left' then time_from := value_array(nn); when 'u_subscriber_right' then time_to := value_array(nn); else null; end case; end loop; -- if timezone = GMT then date_from := dater || time_from; date_to := dater || time_to; rec_p.date_from := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi'); rec_p.date_to := TO_TIMESTAMP( date_to, 'yyyy.mm.ddhh24:mi'); gmt_rec_p.date_from := FROM_TZ(SYS_EXTRACT_UTC (rec_p.date_from) , 'GMT'); gmt_rec_p.date_to := FROM_TZ(SYS_EXTRACT_UTC (rec_p.date_to) , 'GMT'); -- end if; /* if timezone = GMT1 then rec_p.date_from := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi ') + INTERVAL '0 01:00:00' DAY TO SECOND; rec_p.date_to := TO_TIMESTAMP( date_to, 'yyyy.mm.ddhh24:mi ') + INTERVAL '0 01:00:00' DAY TO SECOND; end if; if timezone = GMT4 then rec_p.date_from := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi tzh:tzm') + INTERVAL '0 04:00:00' DAY TO SECOND; rec_p.date_to := TO_TIMESTAMP( date_to, 'yyyy.mm.ddhh24:mi tzh:tzm') + INTERVAL '0 04:00:00' DAY TO SECOND; end if; */ -- select TDF.ID into conf_id from tm_doc_free_time tdf where TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi') = TO_TIMESTAMP(TO_CHAR(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi'),'yyyy.mm.ddhh24:mi'); -- select nvl(TDF.ID,0) into conf_id from tm_doc_free_time tdf where rec_p.date_from = TDF.DATE_FROM; select count(TDF.ID) into conf_id from tm_doc_free_time tdf where rec_p.date_from = TDF.DATE_FROM; IF conf_id = 0 then IF rec_p.date_from < rec_p.date_to then IF rec_p.id IS NULL THEN INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted ) VALUES ( NULL, qba_system.g_user_id, gmt_rec_p.date_from, gmt_rec_p.date_to, 0 ); else null; end if; commit; qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.ALL_CHANGES_SAVED')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; else qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.INVALID_TIME')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; end if; else qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.INVALID_TIME')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; end if; end upd_calendar; PROCEDURE concat_times as nn NUMBER; cursor c1 return tm_doc_free_time%ROWTYPE IS select * from tm_doc_free_time tdf where TDF.ACCEPTED = 0 order by TDF.DATE_FROM; begin IF qba_system.qba_engine_stopped THEN RETURN; END IF; FOR rec IN ( SELECT * FROM tm_doc_free_time tdf where TDF.ACCEPTED = 0 ORDER BY TDF.DATE_FROM DESC) LOOP SELECT MIN(TDF.ID) INTO nn FROM tm_doc_free_time tdf WHERE TO_CHAR(tdf.date_from,'yyyy.mm.dd hh24:mi') = TO_CHAR(rec.date_to,'yyyy.mm.dd hh24:mi') and TDF.ACCEPTED = 0 ; IF nn IS NOT NULL THEN UPDATE tm_doc_free_time tdf set TDF.DATE_FROM = rec.date_from where TDF.ID = nn; delete from tm_doc_free_time tdf where TDF.ID = rec.id; END IF; END LOOP; commit; end concat_times; PROCEDURE choose_interval(name_array IN OWA.vc_arr, value_array IN OWA.vc_arr,doc_id number := 2) as --it was doc_id = 2 ref_proc VARCHAR2 (200); rec_p tm_doc_free_time%ROWTYPE; gmt_rec_p tm_doc_free_time%ROWTYPE; nn NUMBER; dater varchar2 (20); --+ time_from varchar2(20); --+ option_time number; --+ interval_start varchar2(20); --+ interval_end varchar2(20); --+ date_for_ref varchar2(20); dater1 varchar2(20); dater2 varchar2(20); interval_timezone_start varchar2(20); interval_timezone_end varchar2(20); freetime_start varchar2(20); freetime_end varchar2(20); rec_id number; freetime_gmt_start varchar2(20); freetime_gmt_end varchar2(20); time_to varchar2(20); date_from varchar2(20); date_to timestamp with time zone; patient number; doctor number; local_data date; redirect_date varchar2(20); redirecting varchar2(20); ref_conf_id number; begin IF qba_system.qba_engine_stopped THEN RETURN; END IF; select TVS.LAS_VISIT into doctor from tm_video_session tvs where TVS.SESSION_ID = 1; tm_common_v2.init; FOR nn IN name_array.FIRST .. name_array.LAST LOOP CASE name_array (nn) when 'u_label' then dater := value_array (nn); when 'u_subscriber_left' then time_from := value_array(nn); when 'u_type' then option_time := to_number(value_array(nn)); when 'g_start' then interval_start := value_array(nn); when 'g_end' then interval_end := value_array(nn); when 'n_start' then interval_timezone_start := value_array(nn); when 'n_end' then interval_timezone_end := value_array(nn); when 'UserID' then patient := value_array(nn); else null; end case; end loop; if TO_DATE(interval_start,'hh24:mi') > TO_DATE(interval_timezone_start,'hh24:mi') and TO_DATE(interval_end,'hh24:mi') > TO_DATE(interval_timezone_end,'hh24:mi') then local_data := TO_DATE(dater,'yyyy.mm.dd'); local_data := local_data - 1; dater := TO_CHAR(local_data,'yyyy.mm.dd'); dater1 := dater; dater2 := dater; end if; if TO_DATE(interval_start,'hh24:mi') <= TO_DATE(interval_timezone_start,'hh24:mi') and TO_DATE(interval_end,'hh24:mi') <= TO_DATE(interval_timezone_end,'hh24:mi') then dater1 := dater; dater2 := dater; end if; if TO_DATE(interval_start,'hh24:mi') < TO_DATE(interval_timezone_start,'hh24:mi') and TO_DATE(interval_end,'hh24:mi') > TO_DATE(interval_timezone_end,'hh24:mi') then dater1 := dater; dater2 := dater; end if; redirect_date := dater; date_from := dater1 || time_from; freetime_start := dater1 || interval_start; freetime_end := dater2 || interval_end; freetime_gmt_start := dater1 || interval_timezone_start; freetime_gmt_end := dater2 || interval_timezone_end; rec_p.date_from := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi'); if option_time = 0 then rec_p.date_to := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi') + INTERVAL '0 00:30:00' DAY TO SECOND; elsif option_time = 1 then rec_p.date_to := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi') + INTERVAL '0 01:00:00' DAY TO SECOND; elsif option_time = 2 then rec_p.date_to := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi') + INTERVAL '0 01:30:00' DAY TO SECOND; end if; gmt_rec_p.date_from := FROM_TZ(SYS_EXTRACT_UTC (rec_p.date_from) , 'GMT'); gmt_rec_p.date_to := FROM_TZ(SYS_EXTRACT_UTC (rec_p.date_to) , 'GMT'); -- IF gmt_rec_p.date_to <= FROM_TZ(SYS_EXTRACT_UTC(TO_TIMESTAMP(freetime_end,'yyyy.mm.ddhh24:mi')),'GMT') then IF gmt_rec_p.date_to <= FROM_TZ(TO_TIMESTAMP(freetime_end,'yyyy.mm.ddhh24:mi'),'GMT') then select TDF.ID into rec_id from tm_doc_free_time tdf where to_char(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi' ) = freetime_start and TDF.DOC_ID = doctor; IF interval_timezone_start = time_from and interval_end <> TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES ( NULL, doctor, gmt_rec_p.date_from, gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); -- doc_id ---> doctor select TD.ID into ref_conf_id from tm_doc_free_time td where TD.DOC_ID = doctor and TD.DATE_FROM = gmt_rec_p.date_from; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) -- VALUES ( NULL, doctor,gmt_rec_p.date_to,TO_TIMESTAMP(freetime_end,'yyyy.mm.ddhh24:mi'),0); VALUES ( NULL, doctor,gmt_rec_p.date_to, FROM_TZ(SYS_EXTRACT_UTC (TO_TIMESTAMP(freetime_gmt_end,'yyyy.mm.ddhh24:mi') ) , 'GMT') ,0); END IF ; IF interval_timezone_start <> time_from and interval_end <>TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) -- VALUES ( NULL, doctor, TO_TIMESTAMP(freetime_start,'yyyy.mm.ddhh24:mi'), rec_p.date_from,0 ); VALUES ( NULL, doctor,FROM_TZ(SYS_EXTRACT_UTC (TO_TIMESTAMP(freetime_gmt_start,'yyyy.mm.ddhh24:mi') ) , 'GMT') , gmt_rec_p.date_from,0 ); INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES ( NULL, doctor, gmt_rec_p.date_from,gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); select TD.ID into ref_conf_id from tm_doc_free_time td where TD.DOC_ID = doctor and TD.DATE_FROM = gmt_rec_p.date_from; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) -- VALUES ( NULL, doctor, gmt_rec_p.date_to,TO_TIMESTAMP(freetime_end,'yyyy.mm.ddhh24:mi'),0); VALUES ( NULL, doctor, gmt_rec_p.date_to, FROM_TZ(SYS_EXTRACT_UTC (TO_TIMESTAMP(freetime_gmt_end,'yyyy.mm.ddhh24:mi') ) , 'GMT'),0); END IF; IF interval_timezone_start <> time_from and interval_end =TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) VALUES ( NULL, doctor, FROM_TZ(SYS_EXTRACT_UTC (TO_TIMESTAMP(freetime_gmt_start,'yyyy.mm.ddhh24:mi') ) , 'GMT'), gmt_rec_p.date_from,0 ); INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES ( NULL, doctor, gmt_rec_p.date_from,gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); select TD.ID into ref_conf_id from tm_doc_free_time td where TD.DOC_ID = doctor and TD.DATE_FROM = gmt_rec_p.date_from; END IF; IF interval_timezone_start = time_from and interval_end = TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES ( NULL, doctor, gmt_rec_p.date_from, gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); -- doc_id ---> doctor select TD.ID into ref_conf_id from tm_doc_free_time td where TD.DOC_ID = doctor and TD.DATE_FROM = gmt_rec_p.date_from; END IF ; TM_MESSAGES_V2.SEND_MESSAGE(QBA_SYSTEM.G_USER_ID,doctor,qba_lang.MESSAGE (p_name => 'SYS.APPVIDEO'),ref_conf_id); concat_times; commit; qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.ALL_CHANGES_SAVED')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; else -- qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); redirecting := TO_CHAR(TO_DATE(redirect_date,'yyyy.mm.dd'),'/yyyy/mm/dd'); qba_utils.redirect_url (redirecting || tm_common_v2.c#base_path|| c#package || '.new_date?event_time='||interval_start||'' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.INVALID_TIME')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; end if; /* commit; qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.ALL_CHANGES_SAVED')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; */ end choose_interval; /* PROCEDURE choose_interval(name_array IN OWA.vc_arr, value_array IN OWA.vc_arr,doc_id number := 2) as --it was doc_id = 2 date_timezone varchar2(20); --date printed in page(with timezone) date_gmt varchar2(20); --date in gmt time_from_timezone varchar2(20); --time from hh:mm option_time number; -- choosing interval 30 - 0, 60 - 1, 90 -2 interval_gmt_start varchar2(20); -- begin of the free time in gmt interval_gmt_end varchar2(20); -- end of the free time in gmt interval_timezone_start varchar2(20); --begin of the free time in timezone interval_timezone_end varchar2(20); --end of the free time in timezone patient number; --user id local_data date; --swap date_begin_timezone varchar2(20); -- yyyy.mm.dd of interval start with timezone date_end_timezone varchar2(20); -- yyyy.mm.dd of interval end whith timezone choose_start_timezone varchar2(20); -- choose time start in timezone free_time_timezone_start varchar2(20); free_time_timezone_end varchar2(20); freetime_gmt_start varchar2(20); freetime_gmt_end varchar2(20); timezone_rec_p tm_doc_free_time%ROWTYPE; gmt_rec_p tm_doc_free_time%ROWTYPE; ref_proc VARCHAR2 (200); rec_p tm_doc_free_time%ROWTYPE; -- gmt_rec_p tm_doc_free_time%ROWTYPE; nn NUMBER; dater_swap varchar2(20); dater varchar2 (20); --+ time_from varchar2(20); --+ interval_start varchar2(20); --+ interval_end varchar2(20); --+ date_for_ref varchar2(20); dater1 varchar2(20); dater2 varchar2(20); freetime_start varchar2(20); freetime_end varchar2(20); rec_id number; time_to varchar2(20); date_from varchar2(20); date_to timestamp with time zone; doctor number; dater_gmt varchar2(20); dater_timezone varchar2(20); BEGIN IF qba_system.qba_engine_stopped THEN RETURN; END IF; select TVS.LAS_VISIT into doctor from tm_video_session tvs where TVS.SESSION_ID = 1; --obtain doctor id tm_common_v2.init; FOR nn IN name_array.FIRST .. name_array.LAST LOOP --obtain data from json CASE name_array (nn) when 'u_label' then date_timezone := value_array (nn); when 'u_subscriber_left' then time_from_timezone := value_array(nn); when 'u_type' then option_time := to_number(value_array(nn)); when 'g_start' then interval_gmt_start := value_array(nn); when 'g_end' then interval_gmt_end := value_array(nn); when 'n_start' then interval_timezone_start := value_array(nn); when 'n_end' then interval_timezone_end := value_array(nn); when 'UserID' then patient := value_array(nn); else null; end case; end loop; if TO_DATE(interval_gmt_start,'hh24:mi') > TO_DATE(interval_timezone_start,'hh24:mi') and --begin and end in gmt + 1 TO_DATE(interval_gmt_end,'hh24:mi') > TO_DATE(interval_timezone_end,'hh24:mi') then local_data := TO_DATE(date_timezone,'yyyy.mm.dd'); local_data := local_data - 1; date_gmt := TO_CHAR(local_data,'yyyy.mm.dd'); date_begin_timezone := date_timezone; date_end_timezone := date_timezone; end if; if TO_DATE(interval_start,'hh24:mi') <= TO_DATE(interval_timezone_start,'hh24:mi')and -- begin and end in gmt TO_DATE(interval_end,'hh24:mi') <= TO_DATE(interval_timezone_end,'hh24:mi') then date_gmt := date_timezone; date_begin_timezone := date_timezone; date_end_timezone := date_timezone; end if; if TO_DATE(interval_start,'hh24:mi') < TO_DATE(interval_timezone_start,'hh24:mi') and -- begin in gmt, end in gmt + 1 TO_DATE(interval_end,'hh24:mi') > TO_DATE(interval_timezone_end,'hh24:mi') then local_data := TO_DATE(date_timezone,'yyyy.mm.dd'); local_data := local_data + 1; date_end_timezone := TO_CHAR(local_data,'yyyy.mm.dd'); date_gmt := date_timezone; date_begin_timezone := date_gmt; end if; choose_start_timezone := date_begin_timezone || time_from; free_time_timezone_start := date_begin_timezone || interval_timezone_start; free_time_timezone_end := date_end_timezone || interval_timezone_end; freetime_gmt_start := date_gmt || interval_gmt_start; freetime_gmt_end := date_gmt || interval_gmt_end; timezone_rec_p.date_from := TO_TIMESTAMP(choose_start_timezone,'yyyy.mm.ddhh24:mi'); --count the end of choosing time if option_time = 0 then timezone_rec_p.date_to := TO_TIMESTAMP(choose_start_timezone,'yyyy.mm.ddhh24:mi') + INTERVAL '0 00:30:00' DAY TO SECOND; elsif option_time = 1 then timezone_rec_p.date_to := TO_TIMESTAMP(choose_start_timezone,'yyyy.mm.ddhh24:mi') + INTERVAL '0 01:00:00' DAY TO SECOND; elsif option_time = 2 then timezone_rec_p.date_to := TO_TIMESTAMP(choose_start_timezone,'yyyy.mm.ddhh24:mi') + INTERVAL '0 01:30:00' DAY TO SECOND; end if; gmt_rec_p.date_from := SYS_EXTRACT_UTC(timezone_rec_p.date_from); gmt_rec_p.date_to := SYS_EXTRACT_UTC(timezone_rec_p.date_to); IF gmt_rec_p.date_to <= FROM_TZ(TO_TIMESTAMP(freetime_gmt_end,'yyyy.mm.ddhh24:mi'),'GMT') then select TDF.ID into rec_id from tm_doc_free_time tdf where to_char(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi') = freetime_gmt_start and TDF.DOC_ID = doctor; IF interval_timezone_start = time_from_timezone and interval_gmt_end <> TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES ( NULL, doctor, gmt_rec_p.date_from, gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) VALUES (NULL,doctor,gmt_rec_p.date_to,FROM_TZ(SYS_EXTRACT_UTC(TO_TIMESTAMP(freetime_gmt_end,'yyyy.mm.ddhh24:mi')),'GMT'),0); END IF ; IF interval_timezone_start <> time_from_timezone and interval_gmt_end <> TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) VALUES (NULL,doctor,FROM_TZ(SYS_EXTRACT_UTC(TO_TIMESTAMP(freetime_gmt_start,'yyyy.mm.ddhh24:mi')),'GMT'),gmt_rec_p.date_from,0); INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES (NULL, doctor, gmt_rec_p.date_from, gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) VALUES ( NULL, doctor, gmt_rec_p.date_to,FROM_TZ(SYS_EXTRACT_UTC(TO_TIMESTAMP(freetime_gmt_end,'yyyy.mm.ddhh24:mi')),'GMT'),0); END IF; IF interval_timezone_start <> time_from_timezone and interval_gmt_end =TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted) VALUES ( NULL, doctor, FROM_TZ(SYS_EXTRACT_UTC (TO_TIMESTAMP(freetime_gmt_start,'yyyy.mm.ddhh24:mi')),'GMT'),gmt_rec_p.date_from,0 ); INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES ( NULL, doctor, gmt_rec_p.date_from,gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); END IF; IF interval_timezone_start = time_from_timezone and interval_gmt_end = TO_CHAR(gmt_rec_p.date_to,'hh24:mi') THEN delete from tm_doc_free_time tdf where TDF.ID = rec_id; INSERT INTO tm_doc_free_time (id, doc_id, date_from, date_to, accepted,patient) VALUES(NULL, doctor, gmt_rec_p.date_from, gmt_rec_p.date_to,1,QBA_SYSTEM.G_USER_ID); END IF ; TM_MESSAGES_V2.SEND_MESSAGE(QBA_SYSTEM.G_USER_ID,doctor,qba_lang.MESSAGE (p_name => 'SYS.APPVIDEO')); commit; qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.ALL_CHANGES_SAVED')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; else qba_utils.redirect_url ( tm_common_v2.c#base_path|| c#package || '.print_choose_calendar?doc_num='||doctor||'' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.INVALID_TIME')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; end if; end choose_interval; */ PROCEDURE remove_event (name_array IN OWA.vc_arr, value_array IN OWA.vc_arr) as ref_proc VARCHAR2 (200); rec_p tm_doc_free_time%ROWTYPE; gmt_rec_p tm_doc_free_time%ROWTYPE; nn NUMBER; dater varchar2 (20); time_from varchar2(20); time_to varchar2(20); date_from varchar2(20); date_to varchar2(20); ident number; mpatient number; begin IF qba_system.qba_engine_stopped THEN RETURN; END IF; tm_common_v2.init; ref_proc := qba_utils.get_val_from_arr (name_array, value_array, 'ref_proc'); -- rec_p.id := qba_utils.get_val_from_arr (name_array, value_array, 'prid'); FOR nn IN name_array.FIRST .. name_array.LAST LOOP CASE name_array (nn) when 'deleteYear' then dater := value_array (nn); when 'gval1' then time_from := value_array(nn); when 'gval2' then time_to := value_array(nn); else null; end case; end loop; date_from := dater || time_from; date_to := dater || time_to; rec_p.date_from := TO_TIMESTAMP(date_from,'yyyy.mm.ddhh24:mi'); rec_p.date_to := TO_TIMESTAMP( date_to, 'yyyy.mm.ddhh24:mi'); gmt_rec_p.date_from := FROM_TZ(SYS_EXTRACT_UTC (rec_p.date_from) , 'GMT'); gmt_rec_p.date_to := FROM_TZ(SYS_EXTRACT_UTC (rec_p.date_to) , 'GMT'); -- select TDF.ACCEPTED into ident from tm_doc_free_time tdf where TDF.DATE_FROM = gmt_rec_p.date_from and TDF.DOC_ID = QBA_SYSTEM.G_USER_ID; select TDF.ACCEPTED into ident from tm_doc_free_time tdf where TO_CHAR(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi') = TO_CHAR(rec_p.date_from,'yyyy.mm.ddhh24:mi') and TDF.DOC_ID = QBA_SYSTEM.G_USER_ID; if ident = 0 then delete from tm_doc_free_time tdf where TO_CHAR(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi') = TO_CHAR(rec_p.date_from,'yyyy.mm.ddhh24:mi') and TDF.DOC_ID = QBA_SYSTEM.G_USER_ID; commit; end if; if ident = 1 or ident = 2 then select TDF.PATIENT into mpatient from tm_doc_free_time tdf where TO_CHAR(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi') = TO_CHAR(rec_p.date_from,'yyyy.mm.ddhh24:mi') and TDF.DOC_ID = QBA_SYSTEM.G_USER_ID; TM_MESSAGES_V2.SEND_MESSAGE(QBA_SYSTEM.G_USER_ID,mpatient,qba_lang.MESSAGE (p_name => 'SYS.PREJECT'),0); update tm_doc_free_time tdf set TDF.ACCEPTED = 0, TDF.PATIENT = null where TO_CHAR(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi') = TO_CHAR(rec_p.date_from,'yyyy.mm.ddhh24:mi') and TDF.DOC_ID = QBA_SYSTEM.G_USER_ID; commit; end if; concat_times; /* delete from tm_doc_free_time tdf where TO_CHAR(TDF.DATE_FROM,'yyyy.mm.ddhh24:mi') = TO_CHAR(rec_p.date_from,'yyyy.mm.ddhh24:mi') and TDF.DOC_ID = QBA_SYSTEM.G_USER_ID; commit; */ -- qba_utils.redirect_url ( tm_common_v2.c#base_path||c#package || '.html'. , FALSE); qba_utils.redirect_url ( tm_common_v2.c#base_path || c#package || '.html' , FALSE); qba_utils.owa_cookie_send (name => 'light_message' ,VALUE => qba_utils.escape_url (qba_lang.MESSAGE (p_name => 'SYS.ALL_CHANGES_SAVED')) ,domain => qba_system.g_user_server_name ,PATH => tm_common_v2.c#base_path ); sys.OWA_UTIL.http_header_close; end remove_event; PROCEDURE print_choose_calendar(doc_num in number) as rec QBA_USERS%ROWTYPE; rec2 tm_user_profile%ROWTYPE; begin IF qba_system.qba_engine_stopped THEN RETURN; END IF; d_doc := doc_num; update tm_video_session tvs set TVS.LAS_VISIT = doc_num where TVS.SESSION_ID = 1; TM_COMMON_V2.INIT; tm_common_v2.page_header (p_title => qba_lang.MESSAGE (p_name => 'SYS.VIDEO_CONFERENCES') ,p_sub_title => qba_lang.MESSAGE (p_name => 'SYS.VIDEO_CONFERENCES') ,p_left_menu_num => 2 ,prc_callback => 'tm_videoconference_v2.header_callback' ); HTP.p (' '); -- HTP.p (' '); tm_common_v2.page_footer; END archive_details; */ -------------------------------- /* PROCEDURE live_details (prid IN NUMBER) AS rec_p tm_videoconferences%ROWTYPE; user_p QBA_USERS%ROWTYPE; speciality varchar2(30); rec_users qba_users%ROWTYPE; ref_video varchar2(256byte); BEGIN IF qba_system.qba_engine_stopped THEN RETURN; END IF; tm_common_v2.init; tm_common_v2.page_header (p_title => qba_lang.MESSAGE (p_name => 'SYS.VIDEOC'), p_left_menu_num => 0, prc_callback => 'tm_prescription_v2.header_callback'); HTP.p ('
'); HTP.p ('
'); HTP.p ('
'); IF live_details.prid IS NOT NULL THEN SELECT tt.* INTO rec_p FROM tm_videoconferences tt WHERE tt.id = live_details.prid; end if; SELECT pp.* INTO user_p FROM QBA_USERS pp WHERE PP.USER_ID = rec_p.vc_initiator; IF tm_common_v2.c#user_profile.role_id IN (2, 3, 4, 5) then speciality := qba_lang.MESSAGE(p_name => 'CLS.SPECIALIST'); end if; IF tm_common_v2.c#user_profile.role_id = 6 then speciality := qba_lang.MESSAGE(p_name => 'CLS.PATIENT'); end if; HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p(''); HTP.p('
'); --Change select qba_utils.htp_form_select_option(cname_ => 'u_subscriber_id' ,cvalue_ => rec_users.user_id ,sql_text => 'select QU.LAST_NAME as name from QBA_USERS qu, tm_in_conference tic where TIC.IN_VIDEOCONF = '||rec_p.id||' and TIC.IN_USER = QU.USER_ID and QU.USER_ID <> '||TM_COMMON_V2.C#USER_PROFILE.USER_ID||'' ,cnull_ => TRUE ,cattributes_ => 'style="width: 292px'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p(''||rec_p.vc_comment||''); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p ('
'); HTP.p (' '); HTP.p ('
'); HTP.p ( ' '); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p(''); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'||qba_lang.MESSAGE(p_name => 'SYS.ADD_PARTICIPANTS')||'
'); HTP.p ('
'); HTP.p ('
'); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); for rec in (select QU.FIRST_NAME as firstname, QU.LAST_NAME as lastname, TR.ROLE_NAME as rol, UP.MIDDLE_NAME as middle from qba_users qu, tm_in_conference ic, tm_roles tr, tm_user_profile up where IC.IN_VIDEOCONF = rec_p.id and IC.IN_USER = QU.USER_ID and IC.IN_USER = UP.USER_ID and UP.ROLE_ID = TR.ROLE_ID) loop HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); END LOOP; HTP.p (' '); HTP.p ('
' || qba_lang.MESSAGE (p_name => 'SYS.LAST_NAME') || '' || qba_lang.MESSAGE (p_name => 'SYS.FIRST_NAME') || '' || qba_lang.MESSAGE (p_name => 'SYS.MIDDLE_NAME') || '' || qba_lang.MESSAGE (p_name => 'SYS.ROLE') || '
' || rec.lastname || '' || rec.firstname || '' || rec.middle || '' || rec.rol || '
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'||qba_lang.MESSAGE(p_name => 'SYS.FILES')||'
'); HTP.p ('
'); HTP.p ('
'); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); for rec2 in (select T.DOC_NAME as name from tm_docs_in_conf t where T.CONF = rec_p.id ) loop HTP.p (' '); HTP.p (' '); HTP.p (' '); HTP.p (' '); end loop; HTP.p (' '); HTP.p ('
' || qba_lang.MESSAGE (p_name => 'SYS.DOC_NAME') || '
' || rec2.name || '
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p('
'); HTP.p ('
'); HTP.p(' '); HTP.p('
'); HTP.p ('
'); HTP.p ( '
'); HTP.p (' '); HTP.p ('
'); -- HTP.p(''); -- HTP.p(''); -- tm_common_v2.page_footer; delete target in form END live_details; --------------------------------- */ END tm_videoconference_v2; /