Escrito por

Sales Engineer
Artículo Rubén Larenas · nov 22, 2021 2m read

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 = []  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 = []  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.