01-20-2011 12:24 PM
Hello;
First to excuse my English is not very good.
I want to know if there is some bapi or some function to be able to create APPOINTMENTS.
Thanks
01-25-2011 5:32 PM
Si se puede por medio de una función esta es la ISH_APP_EDITOR_CALL
Mira bien el programa
Programa SAPLNAMB
RUTINA LNAMBU30
FUNCION ISH_APP_EDITOR_CALL (Función graba)
I_APP_ID TYPE ISH_TMNID Identificación de una cita
IR_PAP TYPE CL_ISH_PATIENT_ Paciente preliminares Instancia
I_PAP_ID TYPE ISH_PAPID Identificación de un paciente con la información preliminar
I_CALLER TYPE SY-REPID Programa que llama el Agendamiento
I_VCODE TYPE ISH_VCODE 'INS' El modo de procesamiento
I_SAVE TYPE ISH_ON_OFF 'X' Plazo para asegurar los datos editor de eventos (ON, OFF)
I_COMMIT TYPE ISH_ON_OFF 'X' Comprometerse editor de eventos para ejecutar (ON, OFF)
I_DIALOG TYPE ISH_ON_OFF 'X' Editor de eventos llamado con (ON) o no (OFF) Diálogo
IR_LOCK TYPE CL_ISHMED_LOCK Bloquear ejemplo hasta la fecha
IR_CONFIG TYPE CL_ISH_CONFIG Instancia, con la configuración de los Diálogos
I_TSLOT_BEGTI TYPE T Hora de inicio
I_TSLOT_ENDTI TYPE T Hora final
IS_PLAN_DATA TYPE RN1PLANNING_DAT La transferencia de datos al editor
Estructura de entrada (Datos seleccionados Agendamiento) IS_PLAN_DATA
Tipo Estructura RN1PLANNING_DATA
Descripción breve IS-H: Estructura p.transferencia datos a función planif.
Se debe llenar esta estructura con los datos que se obtuvieron del Agendamiento los siguientes datos son los siguientes
PARÁMETROS DE ENTRADA DE LA FUNCIÓN PARA EL AGENDAMIENTO
Estos son los datos necesarios que se necesita la función que agenda y graba la citación del paciente
I_INSTITUTION IS-H: Centro sanitario
I_CALLER SAPLNAMB (PROGRAMA QUE LO LLAMA)
I_VCODE INS
I_SAVE X
I_COMMIT X
I_DIALOG u2018 u2018 (Esta es la variable que permite visualizar el popap de
Confirmación) que debe ir vacio
I_TSLOT_BEGTI hora inicial
I_TSLOT_ENDTI hora final
IS_PLAN_DATA Datos que se necesitan para el Agendamiento
Estructura ATTR
MANDT Mandante
EINRI IS-H: Centro sanitario
PATNR IS-H: Numero del paciente
TMNOE IS-H: Un.org.planificada
TMNDT IS-H: Datos de fecha de una citación
TMNZT IS-H: Hora de una citación
TMNDR IS-H: Duración de una citación
BEWTY IS-H: Tipo de movimiento
DSPTY IS-H: tipo de planificación p.la programación de consultas
PERNR IS-H: número de persona
ZIMMR IS-H: Ind.edif.de una habitación
ORGFA IS-H: Un.organizativa asignada a un episodio como médica
STATU IS-H: Status interno de una consulta externa
ARNR IS-H: Nº personal médico que transfiere
cualquier duda yo realice el desarrollo para agendamiento web y realice la especifiacion te puedo enviar el doc te va ayudar mucho
01-25-2011 5:32 PM
Si se puede por medio de una función esta es la ISH_APP_EDITOR_CALL
Mira bien el programa
Programa SAPLNAMB
RUTINA LNAMBU30
FUNCION ISH_APP_EDITOR_CALL (Función graba)
I_APP_ID TYPE ISH_TMNID Identificación de una cita
IR_PAP TYPE CL_ISH_PATIENT_ Paciente preliminares Instancia
I_PAP_ID TYPE ISH_PAPID Identificación de un paciente con la información preliminar
I_CALLER TYPE SY-REPID Programa que llama el Agendamiento
I_VCODE TYPE ISH_VCODE 'INS' El modo de procesamiento
I_SAVE TYPE ISH_ON_OFF 'X' Plazo para asegurar los datos editor de eventos (ON, OFF)
I_COMMIT TYPE ISH_ON_OFF 'X' Comprometerse editor de eventos para ejecutar (ON, OFF)
I_DIALOG TYPE ISH_ON_OFF 'X' Editor de eventos llamado con (ON) o no (OFF) Diálogo
IR_LOCK TYPE CL_ISHMED_LOCK Bloquear ejemplo hasta la fecha
IR_CONFIG TYPE CL_ISH_CONFIG Instancia, con la configuración de los Diálogos
I_TSLOT_BEGTI TYPE T Hora de inicio
I_TSLOT_ENDTI TYPE T Hora final
IS_PLAN_DATA TYPE RN1PLANNING_DAT La transferencia de datos al editor
Estructura de entrada (Datos seleccionados Agendamiento) IS_PLAN_DATA
Tipo Estructura RN1PLANNING_DATA
Descripción breve IS-H: Estructura p.transferencia datos a función planif.
Se debe llenar esta estructura con los datos que se obtuvieron del Agendamiento los siguientes datos son los siguientes
PARÁMETROS DE ENTRADA DE LA FUNCIÓN PARA EL AGENDAMIENTO
Estos son los datos necesarios que se necesita la función que agenda y graba la citación del paciente
I_INSTITUTION IS-H: Centro sanitario
I_CALLER SAPLNAMB (PROGRAMA QUE LO LLAMA)
I_VCODE INS
I_SAVE X
I_COMMIT X
I_DIALOG u2018 u2018 (Esta es la variable que permite visualizar el popap de
Confirmación) que debe ir vacio
I_TSLOT_BEGTI hora inicial
I_TSLOT_ENDTI hora final
IS_PLAN_DATA Datos que se necesitan para el Agendamiento
Estructura ATTR
MANDT Mandante
EINRI IS-H: Centro sanitario
PATNR IS-H: Numero del paciente
TMNOE IS-H: Un.org.planificada
TMNDT IS-H: Datos de fecha de una citación
TMNZT IS-H: Hora de una citación
TMNDR IS-H: Duración de una citación
BEWTY IS-H: Tipo de movimiento
DSPTY IS-H: tipo de planificación p.la programación de consultas
PERNR IS-H: número de persona
ZIMMR IS-H: Ind.edif.de una habitación
ORGFA IS-H: Un.organizativa asignada a un episodio como médica
STATU IS-H: Status interno de una consulta externa
ARNR IS-H: Nº personal médico que transfiere
cualquier duda yo realice el desarrollo para agendamiento web y realice la especifiacion te puedo enviar el doc te va ayudar mucho
01-25-2011 6:34 PM
Muchas gracias, tengo que mirar como crear un paciente provisional, pero eso parece mas facil.
Me ayudaria mucha la documentacion, si me la puedes mandar, ya que mas o menos estoy haciendo algo parecido.
Gracias
02-01-2013 2:29 PM
Hola Jose Antonio o Juan Pablo,
Quería pedirles el favor si pueden pasarme el código de implementacion de la función ISH_APP_EDITOR_CALL estamos tratando de implementar creación de citas desde la web pero no hemos podido hacerla funcionar correctamente no damos con que parámetro o valor estamos errando. Estamos creando paciente provisional. Una pregunta, para anulación de citas, esta misma función serviría?
Gracias. LAFA
09-23-2013 6:34 PM
Me estoy peleando con esta función y con ISH_BOOK_APPOINTMENT, yo sí te pediría que me enviases ese documento ... creo que me serviría de gran ayuda.
Gracias
09-23-2013 7:00 PM
Avelino,
En el proyecto que estoy no pudimos hacer uso de esa función, en cambio, luego de luchar mucho pudimos implementar la otra opción mencionada la ISH_APP_EDITOR_CALL, para generar la reserva de citas o crear las citas con una interfaz desde un portal web. En síntesis creamos un paciente provisional al que se le crea una cita, luego este estatus provisional de paciente se vuelve real en el momento de la admisión pasando a ser paciente definitivo, obviamente manteniendo el numero de cita. No se si esto te ayude en algo optar por otro camino. Si te sirve de algo te puedo pasar el código de como fue implementado.
Saludos, LAFA.
09-23-2013 8:02 PM
Pues así me centro en ish_app_editor_call, porque con ish_book_appointment.
Me serviría de mucho que me pasases un ejemplo de código de utilización para dar de alta una cita.
Muchas gracias de antemano.
Saludos
Avelino
09-24-2013 12:12 PM
Conseguido casi.
Me sale un mensaje que dice que faltan datos... supongo que será del paciente.
Ahora voy a ver cómo se hace para mirar y dar de alta si hace falta, el paciente de forma temporal.
Gracias
Avelino
09-25-2013 4:53 PM
Avelino, esta el la secuencia de codigo que utilizamos para poder crear la cita con el uso de la funcion ISH_APP_EDITOR_CALL, espero te sirva de algo o guia para lo que te falta... al final ademas de crear la cita el objetivo es rescatar el numero en la variable ls_ntmn.
Referencia para busqueda en el codigo....
* Funcion que genera la reserva de la cita.
DATA: lcl_appdata TYPE REF TO cl_ish_appointment,
ls_ntmn TYPE ntmn.
CALL FUNCTION 'ISH_APP_EDITOR_CALL'
EXPORTING
Todo esto esta en una RFC que tiene como parámetros lo siguiente :
Import
I_RUT_SOL | TYPE | EXT_PATNR | IS-H: Número externo de paciente | |
I_NOMBRE_PAC | TYPE | VNAME_PAT | IS-H: Nombre de pila del paciente | |
I_APEPAT_PAC | TYPE | NNAME_PAT | IS-H: Apellido 1 paciente | |
I_TELEFONO | TYPE | ISH_TELNR | IS-H: teléfono | |
I_MAIL | TYPE | ISH_SMTPADR | IS-H: Dirección (SMTP) de correo de Internet | |
I_RUT_PAC | TYPE | EXT_PATNR | IS-H: Número externo de paciente | |
I_FECHA_RSVA | TYPE | DATS | Campo de tipo DATS | |
I_HORA_RSVA | TYPE | UZEIT | ||
I_COD_ORIGEN | TYPE | CHAR01 | Campo de texto, longitud 1 | |
I_MEDICO | TYPE | P_PERNR | ||
I_UTRATAMIENTO | TYPE | NZUWPF | IS-H: Unidad organizativa que se asigna a un episodio | |
I_ESPECIALIDAD | TYPE | FACHRTY5 | Especialidad |
Export
E_COD_RESERVA | TYPE | CHAR10 | Campo de texto, longitud 10 |
E_FECHA | TYPE | CHAR08 | Fecha |
E_HORA | TYPE | CHAR6 | Hora del día |
==============================================================
TABLES: zish_0003,
napp.
DATA: v_begty TYPE t,
is_plan_data TYPE rn1planning_data,
e_rc TYPE sy-subrc,
e_exit_code TYPE sy-ucomm,
v_patnr TYPE patnr,
p_fecres(8) TYPE c,
p_horres(6) TYPE c,
lv_dauer LIKE tn40b-dauer,
wa_telefono TYPE rnadr_telephone,
ltb_telefono TYPE rnadr_telephone_tab.
DATA: lo_sys_exception TYPE REF TO cx_ai_system_fault,
lo_app_exception TYPE REF TO cx_ai_application_fault,
lv_enviroment TYPE REF TO cl_ish_environment,
lv_data TYPE rnpap_attrib,
pl_pap TYPE REF TO cl_ish_patient_provisional,
lr_errorhandler TYPE REF TO cl_ishmed_errorhandling,
l_provisional TYPE rnpap_key,
l_rc TYPE ish_method_rc,
er_instance TYPE REF TO cl_ish_patient_provisional,
lt_tn10h TYPE ish_t_tn10h,
le_tn10h TYPE tn10h,
l_pobnr LIKE npob-pobnr,
* l_tpgid TYPE ish_tpgid,
l_dispo LIKE ntpgp-dispo,
l_tmnid LIKE napp-tmnid,
l_medico TYPE c LENGTH 10,
ls_reg_citas TYPE /neoris/ish_0003.
CONSTANTS: c_hcua TYPE einri VALUE 'HCUA'.
p_fecres = i_fecha_rsva.
p_horres = i_hora_rsva.
* Valida si la hora ya fue agendada.
CLEAR l_medico.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = i_medico
IMPORTING
output = l_medico.
SELECT SINGLE tmnid
INTO l_tmnid
FROM napp
WHERE bwidt = i_fecha_rsva
AND bwizt = i_hora_rsva
AND pernr = l_medico
* AND fachr = i_especialidad
AND storn = space.
IF sy-subrc = 0.
e_cod_reserva = '0'.
EXIT.
ENDIF.
* Selecciona la Unidad medica a partir de la Unidad de Tratamiento
CALL FUNCTION 'ISH_OM_ORG_HRCHY_LEVEL_UP'
EXPORTING
i_lower_orgid = i_utratamiento
IMPORTING
et_tn10h = lt_tn10h
EXCEPTIONS
nothing_found = 1
not_valid = 2
internal_error = 3
OTHERS = 4.
READ TABLE lt_tn10h INTO le_tn10h INDEX 1.
*
is_plan_data-attr-mandt = sy-mandt. " Mandante.
is_plan_data-attr-einri = c_hcua. " Centro Sanitario.
is_plan_data-attr-tmnoe = le_tn10h-untor. " Identificador de una unidad organizativa.
*.- Unidad organizativa medica
is_plan_data-attr-orgfa = le_tn10h-uebor.
is_plan_data-attr-tmndt = p_fecres.
is_plan_data-attr-tmnzt = p_horres.
is_plan_data-attr-bewty = '4'.
is_plan_data-attr-bnkz = gc_x.
*.- Número de persona. (Medico)
is_plan_data-attr-pernr = i_medico.
*.- Rut del solicitante.
* is_plan_data-attr-kztxt = i_rut_sol.
is_plan_data-attr-medtx = i_rut_sol.
*.- Dispositivo de agendamiento
CASE i_cod_origen.
WHEN '1'.
is_plan_data-attr-causechng = 'pc'.
WHEN '2'.
is_plan_data-attr-causechng = 'tablet'.
WHEN '3'.
is_plan_data-attr-causechng = 'celular'.
ENDCASE.
*-- Busca el tipo de planificacion
SELECT SINGLE pobnr
INTO l_pobnr
FROM npob
WHERE orgid = i_utratamiento
AND pernr = l_medico.
IF sy-subrc = 0.
SELECT SINGLE dispo
INTO l_dispo
FROM ntpgp
WHERE pobnr = l_pobnr
AND begti <= i_hora_rsva
AND endti >= i_hora_rsva
AND orgid = i_utratamiento
AND extbook = gc_x.
ENDIF.
is_plan_data-attr-dspty = l_dispo. " 'CONSULTA'. " tipo de planificación p.la programación de consultas.
is_plan_data-attr-pobnr = l_pobnr. " Número actual interno de un objeto de planificación.
is_plan_data-attr-statu = '20'.
is_plan_data-attr-fachr = i_especialidad.
is_plan_data-attr-bnart = '1'.
is_plan_data-attr-gplty = '1'.
is_plan_data-attr-tmnoe_x = gc_x.
is_plan_data-attr-orgfa_x = gc_x.
is_plan_data-attr-tmndt_x = gc_x .
is_plan_data-attr-tmnzt_x = gc_x.
is_plan_data-attr-tmndr_x = gc_x .
is_plan_data-attr-bewty_x = gc_x.
is_plan_data-attr-bnkz_x = gc_x.
is_plan_data-attr-zimmr_x = gc_x.
is_plan_data-attr-patnr_x = gc_x.
is_plan_data-attr-dspty_x = gc_x.
is_plan_data-attr-pobnr_x = gc_x.
is_plan_data-attr-statu_x = gc_x.
is_plan_data-attr-fachr_x = gc_x.
is_plan_data-attr-bnart_x = gc_x.
is_plan_data-attr-gplty_x = gc_x.
is_plan_data-attr-causechng_x = gc_x.
* Datos para la creacion del paciente
lv_data-vname = i_nombre_pac.
lv_data-nname = i_apepat_pac.
CONCATENATE 'RU' i_rut_pac INTO lv_data-extnr.
* Datos telefonicos.
wa_telefono-telnr = i_telefono.
APPEND wa_telefono TO ltb_telefono.
lv_data-telno[] = ltb_telefono[].
lv_data-email = i_mail.
* lv_data-gbnam = 'Garcia'.
TRY .
CALL METHOD cl_ish_fac_environment=>create
EXPORTING
i_program_name = sy-repid
IMPORTING
e_instance = lv_enviroment
e_rc = l_rc.
IF l_rc NE 0.
* p_okcode = 'TEST'.
EXIT.
ENDIF.
*.. ---
CATCH cx_ai_system_fault INTO lo_sys_exception.
CATCH cx_ai_application_fault INTO lo_app_exception.
ENDTRY.
TRY.
* Crea el paciente Previsional.
CALL METHOD cl_ish_patient_provisional=>create
EXPORTING
is_data = lv_data
i_environment = lv_enviroment
IMPORTING
e_instance = er_instance
EXCEPTIONS
missing_environment = 1
no_authority = 2
OTHERS = 3.
*----
CATCH cx_ai_system_fault INTO lo_sys_exception.
CATCH cx_ai_application_fault INTO lo_app_exception.
ENDTRY.
TRY.
CALL METHOD er_instance->save
CHANGING
c_errorhandler = lr_errorhandler.
CATCH cx_ai_system_fault INTO lo_sys_exception.
CATCH cx_ai_application_fault INTO lo_app_exception.
COMMIT WORK AND WAIT.
ENDTRY.
TRY.
CALL METHOD er_instance->get_data
IMPORTING
es_key = l_provisional.
CATCH cx_ai_system_fault INTO lo_sys_exception.
CATCH cx_ai_application_fault INTO lo_app_exception.
ENDTRY.
* Funcion que genera la reserva de la cita.
DATA: lcl_appdata TYPE REF TO cl_ish_appointment,
ls_ntmn TYPE ntmn.
CALL FUNCTION 'ISH_APP_EDITOR_CALL'
EXPORTING
i_institution = gc_einri_hcua
* i_app_id = ls_calendar-tmnid "au
ir_pap = er_instance
* I_PAP_ID = vl_pap
i_caller = sy-repid
i_vcode = gc_vcode_ins
i_save = gc_x
i_commit = gc_x
i_dialog = space
i_tslot_begti = v_begty
is_plan_data = is_plan_data
IMPORTING
e_rc = e_rc
e_exit_code = e_exit_code
CHANGING
cr_app = lcl_appdata.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = gc_x.
CALL METHOD lcl_appdata->get_data
EXPORTING
i_fill_appointment = on
IMPORTING
es_ntmn = ls_ntmn.
Saludos, LAFA.
10-09-2013 9:42 AM
11-27-2013 11:03 PM
Luis Enrique cordial saludo,
La función ISH_APP_EDITOR_CALL ademas de que sirve para crear la cita, tambien la puedo usar para que al mismo tiempo cree la Orden clinica y haga el enlace entre la orden y la cita?
NOTA:
En un proyecto de agendamiento web, utilice la funcion ISHMED_CONN_CORDER y la ISHMED_CONN_PLANNING para crear el enlace entre la orden y la cita.
Mil gracias por la respuesta que puedan darme.
11-28-2013 6:16 PM
Hugo,
Consulte con el funcional tu inquietud, y me mostró que funcionalmente el proceso es viable, es decir creo una cita a un paciente provisional y luego le agrego una orden, esto hace entender que es posible a nivel de usuario en un mismo evento, lo que desconocemos es si esta misma función que usamos para agendamiento web (que crea paciente provisorio y cita) permita agregar datos y crear la orden, que entiendo seria lo que buscas.
No tenemos ese escenario, pero igual si lo llegamos a dilucidar, seguro te contaremos como. Muy seguro encontraras tu primero la respuesta.
Acá lo que toca ver, es que mas potencia tienen la función, por que si se puede hacer la orden ahí mismo, de seguro crea los vínculos necesarios entre cita / orden / paciente.
Creería que si ya implementaste una solución que conoces, la adaptes, mientras se descubre si se puede todo en uno.
01-15-2014 5:16 PM
Hola Luis Enrique,
Estoy trabajando en un desarrollo en el que utilizo el MF ISH_APP_EDITOR_CALL. Me funciona correctamente en la creación de las citas, pero me surje un problema:
Este MF sólo tiene un parámetro E_RC de salida pero no devuelve más información sobre los mensajes de error que se puedan generar dentro.
Como gestionasteis vosotros este tema para devolver errores a la web?
Muchas gracias de antemano.
Saludos.