SAP for Healthcare Discussions
Foster discussions about patient care, cost reduction, and operational excellence in healthcare organizations using SAP. Join the conversation.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI CREATE APPOINTMENTS

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

View solution in original post

12 REPLIES 12

Former Member
0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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.

0 Kudos

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

0 Kudos

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

0 Kudos

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_SOLTYPEEXT_PATNR                    IS-H: Número externo de paciente
I_NOMBRE_PACTYPEVNAME_PAT                    IS-H: Nombre de pila del paciente
I_APEPAT_PACTYPENNAME_PAT                    IS-H: Apellido 1 paciente
I_TELEFONOTYPEISH_TELNR                    IS-H: teléfono
I_MAILTYPEISH_SMTPADR                    IS-H: Dirección (SMTP) de correo de Internet
I_RUT_PACTYPEEXT_PATNR                    IS-H: Número externo de paciente
I_FECHA_RSVATYPEDATS                    Campo de tipo DATS
I_HORA_RSVATYPEUZEIT                                                                                                  
I_COD_ORIGENTYPECHAR01                    Campo de texto, longitud 1
I_MEDICOTYPEP_PERNR                                                                                                  
I_UTRATAMIENTOTYPENZUWPF                    IS-H: Unidad organizativa que se asigna a un episodio
I_ESPECIALIDADTYPEFACHRTY5                    Especialidad

Export

E_COD_RESERVATYPECHAR10Campo de texto, longitud 10
E_FECHATYPECHAR08Fecha
E_HORATYPECHAR6Hora 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(8TYPE c,

         p_horres(6TYPE 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.

0 Kudos

Muchas muchas gracias Luis Enrique, me ha sido de gran ayuda.

0 Kudos

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.

0 Kudos

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.

0 Kudos

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.