Artículo
Rubén Larenas · Nov 22 Lectura de 2 min

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.

 

10
2 0 0 30
Log in or sign up to continue