miércoles, 1 de mayo de 2024

Usos. Documentos prescriptivos.

Informe y dictamen. Tablas.

Por aclarar: en estas entradas entiendo por documentos prescriptivos aquellos que elabora la Consejería de Educación para uso obligatorio de los SEO. El documento que impone como tal la Consejería cumple la función de documento-modelo (tanto en forma como en formato) y es de uso obligado. No obstante es posible realizar un doble proceso de conversión (Word->Writer->Word) desde LO-Writer, lo que, entremedias, nos permite automatizar (semi-automatizar cuanto menos) su cumplimentación. Aquí es donde entre OOo Basic.



Tanto el dictamen de escolarización como el informe psicopedagógico son dos de esos documentos prescriptivos,  yo diría que los principales, tanto por su uso (muy frecuente) como por su función (fundamental en la intervención de los SEO). 

Además añaden a la complejidad que conlleva la evaluación psicopedagógica el tener que ajustarse en lo formal al propio documento y al formato que impone. Sería de agradecer que que la Consejería de Educación aportara recursos que facilitaran la cumplimentación de estos documentos, pero no parece que esté en su agenda de prioridades; así que o nos ponemos nosotros manos a la obra o podemos esperar sentados. La IA no tiene mucho que aportar al respecto, al menos de momento (después a lo peor hasta nos arrepentimos de que sí, quien sabe...)

Quejas y suspiros a parte, y salvando que la principal dificultad es la complejidad que supone la evaluación psicopedagógica, sí podemos hacer mucho por simplificar y (semi)automatizar el trabajo, o parte significativa de él. Este es el propósito de esta serie de entradas que inicio con la actual, y de otras que posiblemente publicaré en [Recursos] (1).

Aquí, en [Usos]me ha parecido conveniente empezar por el trabajo con las tablas, ya que son componentes fundamentales de los documentos. El propio hecho de formar parte de estos documentos "impuestos" por la Consejería nos obliga, a su vez, a desarrollar formas específicas que trabajo, lo que tiene su parte positiva: obligatoriamente también agudiza el ingenio.

Partiré de los modelos de informe y dictamen de 2024 (los últimos publicados, en estos momentos) e iré analizando cada elemento (ítem) que se puede identificar en ellos, en función de la forma en que se deben (y pueden) cumplimentar.

Inicio por el modelo de dictamen por ser el de mayor complejidad en cuanto al uso y tipología de tablas y sólo realizaré propuestas concretas para el documento Informe en caso necesario, esto es: cuando lo visto en el dictamen no sea adecuado.

Lo primero que tienes que tener es el dictamen-modelo de la Consejería ([aquí el documento])

Y para que esta entrada no sea de mera presentación, voy a proponer una forma de trabajar con aquellos campos (ítem) que son más frecuentes y a la vez más sencillos: los llamaremos Item0 y están presentes (y predominan) en un número importante de las tablas que componen el dictamen (y el informe) (2).


A modo de ejemplo, en éstas que son las dos primeras tablas del dictamen (Tabla1 y Tabla2, diríamos) Item1 puede ser identificado en 6 de los 7 campos que contienen, aunque es cierto que algunos de ellos se pueden plantear de forma más compleja (3)

Cierto es, además, que si trabajáramos "manualmente" ambas tablas presentan una diferencia importante: mientras que en la primer es posible realizar los desplazamientos de celda mediante el tabulador, en la segunda nos vemos obligados a posicionarnos "manualmente" al final del identificador del contenido del campo (v.g. NIE). Pero como vamos a trabajar con OOo Basic, si elegimos el  procedimiento adecuado esa diferencia deja de existir.

Se trata de campos que se pueden cumplimentar partiendo del uso de marcadores en el documento (de ello ya hablé en [esta entrada]), estrategia de trabajo de la que hablaré a continuación. Además, los marcadores permiten una forma de trabajo lineal que facilita la combinación de matrices y bucles para el desarrollo del docap (sobre ello hablaré en una próxima entrada en [Procedimientospero de momento no está disponible). Describo a continuación el proceso a seguir:
  • En el documento-modelo (dictamen convertido a formato Writer) me posiciono en el punto en el que deseo introducir el dato, por ejemplo, Tabla2, tras Nombre y apellidos (4)
  • Sitúo el marcador (Insertar | Marcador) que denomino, por ejemplo, mcr4.
  • Dando por creado Module1 desde el IDE con lo que esto supone, creo el script (5)
    • Declaro las dos variables necesarias para el funcio.namiento del script y los procedimientos de asignación de datos. En el caso de la variable sAlumno utilizando la función InputBox()
El script resultante es el siguiente. Observa que no hacemos referencia en ningún momento a la tabla con la que vamos a trabajar. Usando otros procedimientos (basados en macros, por ejemplo) sí sería necesario, pero el uso de marcadores simplifica mucho la ubicación de texto en cualquier posición del documento susceptible de ser marcado (o lo que es lo mismo, identificado con un marcador):

Sub DictamenMod1

Dim oMarcador As Object
Dim sAlumno As String

sAlumno = InputBox("Nombre y apellidos del alumno/a","DICTAMEN")

oMarcador = ThisComponent.getBookmarks().getByName("mcr4")
oMarcador.getAnchor.setString(sAlumno)

End Sub

  • Mientras que la primera variable (oMarcador) es de tipo objeto, la segunda (sAlumno) es de tipo string. Podría ser de cualquier otro tipo (Integer, por ejemplo), pero el trabajo sobre un texto hace que sea tratada como cadena de texto en lo que al proceso de escritura se refiere.
  • La instrucción sAlumno = InputBox("Nombre y apellidos del alumno/a","DICTAMEN") es de sobra conocida, por lo que no necesita más explicación: como sabemos, permite dotar de contenido a la variable de forma interactiva.
  • Mediante la instrucción de asignación...
oMarcador = ThisComponent.getBookmarks().getByName("mcr4")

 ... estamos accediendo mediante OOo Basic al objeto documento activo (ThisComponent), a la colección de objetos marcador (.getBookmarks()) y al marcador identificado por su nombre (.getByName("mcr4")). Para ello, como ya vimos, es necesario que tal objeto haya sido creado previamente en el documento.

  • Finalmente, la instrucción  oMarcador.getAnchor.setString(sAlumno) asigna el texto referenciado en la variable sAlumno (el que previamente haya introducido el usuario mediante InputBox()) en el objeto referenciado por la variable oMarcador, haciendo uso del método .getAnchor y del sub-método o función .setString() asociado al anterior (6)

La repetición de este mismo procedimiento, y su racionalización y simplificación mediante el uso de matrices y bucles, es la base del procedimiento de creación de docap de automatización del dictamen. 

Tendremos ocasión de describir este procedimiento, como ya prometí antes, pero por ahora me limito a proponerte que amplíes este procedimiento simple a aquellos campos de las tablas del dictamen que consideres susceptibles de ser tratadas de este modo. Unos cuantos campos serán suficientes, ya que la mayoría se podrían resolver de este modo (no todos, como también veremos), pero en algunos de ellos existen alternativas más complejas pero también más funcionales. 

NOTAS

(1) Posiblemente también en Procedimientos y, de ser posible, en Recursos, aunque dependerá de cómo de desarrolle el proceso que ahora inicio.

(2) A Item1 se ajustan la mayoría (en algunas la totalidad) de los campos de 7 de las 19 tablas de que consta el documento. En concreto (y por orden de presentación) las siguientes: tabla 1, tabla 2, tabla 3, tabla 4 y tabla 5, tabla 12 y tabla 18. En este cómputo he incluido las cinco tablas del anexo 1 que corresponde cumplimentar al Equipo Regional (ER).

(3) Más compleja (veremos en qué consiste en otra entrada) y también más simple en algunos casos: Servicios de Orientación y Orientador/a de la Tabla1 bien pueden considerarse como constantes a nivel individual (de cada orientador/a) y figurar como datos del modelo personal de dictamen (y de informe).

(4) Tal vez no sea el campo-tipo ideal, ya que podemos trabajar con otro procedimiento (como veremos en un próxima entrada), pero lo cierto es que también con éste, que es el más simple. Tanto que, incluso incluyendo el uso de marcadores, se acerca mucho en funcionalidad a la que tiene elaborar el documento directamente desde Writer. En realidad esto no es del todo cierto, ya que incluso empleando este procedimiento, crear un docap para automatizar la elaboración del dictamen supone un ahorro de tiempo considerable, mayor cuantos más dictámenes tengamos que hacer.

(5) Estos pasos que aquí se muestran simplificados requieren de sus propios procedimientos. No explicaré cómo trabajar con el IDE para crear las condiciones que requiere la creación de un script por ser un procedimiento sobradamente conocido, ni el requerido para implementar marcadores en un texto puesto que ya traté ese tema en [esta entrada] cuya lectura recomiendo para mayor detalle. El desarrollo del script sí requiere explicación.

(6) Estamos utilizando terminología propia del paradigma de Programación Orientada a Objetos, que es la que se utiliza en Libre Office. Aunque el lenguaje OOo Basic no nos permite crear clases ni objetos, sí trabaja con ellos y con sus métodos y atributos. De ahí que cuente con ese tipo especial de variable de tipo objeto, uno de cuyos ejemplos es nuestra variable oMarcador. De hecho, el trabajo con objetos es fundamental para el desarrollo de script en OOo Basic. Sin ello no podríamos acceder a los documentos ni a los "objetos" que contienen. Tampoco podríamos crear macros.