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.
.png)
Espero que esta información les sea de utilidad.