Datos personalizados con %Populate
Estimados
Todos ya conocerán las propiedad y facilidades que entrega %Populate para las clases registradas, es una herramienta muy útil a la hora de realizar alguna demostración o presentación. Sin embargo, también habrán notado que por defecto tiene un set de datos localizado y creado para Estados Unidos lo que en algunas situaciones puede ser una dificultad.
Es por esta razón que les dejo este pequeño ejemplo de cómo usar POPSPEC para poder localizar y crear nuestro propio conjunto de datos de prueba.
En primer lugar creemos nuestra clase persistente:
Class Demo.Paciente Extends (%Persistent, %Populate) { Property Nombre As %String(POPSPEC = "##class(Demo.Data).Nombres()"); Property ApellidoPaterno As %String(POPSPEC = "##class(Demo.Data).Apellidos()"); Property ApellidoMaterno As %String(POPSPEC = "##class(Demo.Data).Apellidos()"); Property Genero As %String(VALUELIST = "-M-F-D-O"); }
Notemos el uso de la opción POPSPEC, la cual determina cual será la fuente de datos al utilizar %Populate()
POPSPEC = "##class(Demo.Data).Nombres()"
A continuación definamos este origen de datos con un pequeño ejemplo que entregará Nombres y Apellidos al azar
Class Demo.Data Extends %RegisteredObject { ClassMethod Nombres() As %String { set a = [] do a.%Push("José") do a.%Push("Juan") do a.%Push("Pedro") do a.%Push("Raúl") do a.%Push("Marcelo") do a.%Push("Rodrigo") do a.%Push("Joel") do a.%Push("Bernardo") do a.%Push("Miguel") Return a.%Get($Random(a.%Size())) } ClassMethod Apellidos() As %String { set a = [] do a.%Push("Martínez") do a.%Push("González") do a.%Push("Perez") do a.%Push("Espinoza") do a.%Push("Arias") do a.%Push("Prieto") do a.%Push("Oyanedel") do a.%Push("Castro") do a.%Push("San Martín") Return a.%Get($Random(a.%Size())) } }
Luego compilamos y probemos el resultado desde el terminal
NAMESPACE>do ##class(Demo.Paciente).Populate(100)
Y finalmente veamos el resultado en la tabla asociada a nuestra clase.
Espero que esta información les sea de utilidad.