Buenas @Victor Quisbert 

HL7 es un estándar de intercambio de información clínica y por lo tanto cubre una gran variedad de tipo de datos. Cada mensaje corresponde a un tipo de evento (admisión hospitalaria, solicitudes de laboratorio...), en esta URL puedes comprobar todos los tipos de mensajes que existen:

https://hl7-definition.caristix.com/v2/HL7v2.5.1/Tables/0076

Cada mensaje se compone a su vez de una serie de segmentos que portan una determinada información, tales como los datos del paciente, información sobre ubicaciones hospitalarias, tipo de pruebas...puedes consultarlos en la siguiente URL:

https://hl7-definition.caristix.com/v2/HL7v2.5.1/Segments

Y en el caso de que eches de menos algún tipo de dato, siempre puedes crear tus propios segmentos y crear versiones derivadas del estándar.

Nada mejor que la Wikipedia para entender qué es HL7:

https://es.wikipedia.org/wiki/HL7

Puedes ver en la documentación oficial que no tenemos ningún atajo para saltar a una determinada línea: https://intersystems-community.github.io/vscode-objectscript/studio/#boo...

Se recomienda la instalación de una extensión de terceros para replicar dicha funcionalidad: https://marketplace.visualstudio.com/search?term=bookmark&target=VSCode&...

Buenas @Daniel Aguilar! Pues la principal ventaja de usar producciones es que puedes hacer un seguimiento de las peticiones que has recibido así como el ciclo de vida de esa petición dentro de tu sistema, desde la recepción, transformaciones en BP y almacenamientos u otras operaciones en el BO.

Una vez que esos mensajes se persisten puedes realizar búsquedas por la fuente del mensaje, fechas, cabeceras del mensaje, etc...y estos quedarán almacenados hasta que se programe una tarea de purgado. 

¡Hola Albert! Te agradecería que, para beneficio de todos los usuarios de la comunidad de desarrolladores en español, planteases la pregunta traducida al español si es posible.

Con respecto a tu pregunta, prueba con la siguiente query:

SELECT 
a1.ID, AVG(a1.Price)
FROM Comp.AlbLin a1
WHERE a1."Date" in (SELECT TOP 3 a2."Date" FROM Comp.AlbLin a2 WHERE a1.ID = a2.ID ORDER BY a2."Date" DESC )
GROUP BY a1.ID order by a1.ID asc

Entiendo que el campo AlbLin.ID no es único por lo que indicas, por lo que podemos utilizar como criterio la fecha del dato. Te explico un poco la query:

  1. Puedes ver como tenemos dentro del WHERE una subquery que nos extraerá las últimas 3 fechas para cada AlbLin.ID, serán las 3 últimas ya que hemos indicado TOP 3 de una query ordenada por fecha de forma descendiente, así que siempre serán las 3 últimas fechas.
  2. En la SELECT principal hemos sacado el AlbLin.ID que nos servirá como criterio agrupador y hemos usado la función agrupadora AVG para AlbLin.Price.
  3. En la instrucción GROUP BY hemos definido el campo agrupador AlbLin.ID y hemos añadido un ORDER BY, este último no es necesario.

Pues bien, la subquery nos devolverá las 3 últimas fechas que usaremos en la query principal para sólo utilizar aquellos registros relativos al AlbLin.ID que coincidan con esas fechas (la subquery usa dentro de su WHERE el identificador de la query principal).

Prueba la query y coméntanos el resultado.