Pesquisar

Pergunta
· Out. 29, 2024

How to configure local IPM registry authorization?

I'm working on my first (!) IPM module and I'm a little puzzled with the registry authorization.

I have a working local registry (I hope!) and the module is loaded (with load-command) to the namespace.

Now publish-command fails because of missing authorization. I have set nothing authorization related myself and I'm lost how the authorization should be configured. All the material I have read so far seems to ignore that and only mentions one have to authenticate ...

Here's the command output:

zpm:IPMTEST1>version

%SYS>     zpm          0.7.3
IPMTEST1> zpm-registry 1.3.2
https://pm.community.intersystems.com - 1.0.6
http://localhost:52773/registry/ - 1.3.2

zpm:IPMTEST1>list-installed -tree
osex-ipm-demo 1.0.0
├──osex-ipm-hello 1.0.0
└──osex-ipm-numbers 1.0.0
zpm-registry 1.3.2
└──yaml-utils 0.1.4

zpm:IPMTEST1>publish -verbose osex-ipm-hello

[IPMTEST1|osex-ipm-hello]       Reload START (/home/irisowner/work/objectscript-ex/ipm/hello/)
Skipping preload - directory does not exist.
Load of directory started on 10/29/2024 19:14:29 '*'

Loading file /home/irisowner/work/objectscript-ex/ipm/hello/src/OSEX/ipm/hello/Hello.cls as udl
Load finished successfully.

[IPMTEST1|osex-ipm-hello]       Reload SUCCESS
[osex-ipm-hello]        Module object refreshed.
[IPMTEST1|osex-ipm-hello]       Validate START
[IPMTEST1|osex-ipm-hello]       Validate SUCCESS
[IPMTEST1|osex-ipm-hello]       Compile START
Compilation started on 10/29/2024 19:14:29 with qualifiers 'd-lck'
Compiling class OSEX.ipm.hello.Hello
Compiling routine OSEX.ipm.hello.Hello.1
Compilation finished successfully in 0.007s.

[IPMTEST1|osex-ipm-hello]       Compile SUCCESS
[IPMTEST1|osex-ipm-hello]       Activate START
[IPMTEST1|osex-ipm-hello]       Configure START
[IPMTEST1|osex-ipm-hello]       Configure SUCCESS
Studio project created/updated: osex-ipm-hello.PRJ
[IPMTEST1|osex-ipm-hello]       Activate SUCCESS
[IPMTEST1|osex-ipm-hello]       Package START
Exporting 'OSEX.ipm.hello.Hello.cls' to '/usr/irissys/mgr/Temp/dirfi49Wp/osex-ipm-hello-1.0.0/src/OSEX/ipm/hello/Hello.cls'
Exported to /usr/irissys/mgr/Temp/dirfi49Wp/osex-ipm-hello-1.0.0/module.xml
Module exported to:
        /usr/irissys/mgr/Temp/dirfi49Wp/osex-ipm-hello-1.0.0/

Module package generated:
        /usr/irissys/mgr/Temp/dirfi49Wp/osex-ipm-hello-1.0.0.tgz
[IPMTEST1|osex-ipm-hello]       Package SUCCESS
[IPMTEST1|osex-ipm-hello]       Register START
[IPMTEST1|osex-ipm-hello]       Register SUCCESS
[IPMTEST1|osex-ipm-hello]       Publish START
Publish to: http://localhost:52773/registry/
[osex-ipm-hello]        Publish FAILURE
ERROR! Publishing module, authorization required.
zpm:IPMTEST1>
6 Comments
Discussão (6)2
Entre ou crie uma conta para continuar
Artigo
· Out. 29, 2024 1min de leitura

Número máximo de namespaces y bases de datos

Preguntas frecuentes de InterSystems 

El número máximo de namespaces que se pueden crear en una instancia es de 2047. Sin embargo, para utilizar un gran número de namespaces, necesitaréis configurar la memoria adecuadamente.

El número máximo de bases de datos (incluidas las bases de datos remotas) que se pueden crear en una instancia es de 15,998. Dependiendo del tipo de licencia, puede haber restricciones sobre la cantidad que se puede crear. Para más detalles, consultad el siguiente documento.

Configuración de la Base de Datos [IRIS]
Configuración de la Base de Datos

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 28, 2024 8min de leitura

Use the Flexible Python Runtime Feature for IRIS on Windows Server

I am just writing something to share what I encountered last night, which is the IRIS 2024.3 does not comes with Python by default any more!!!

Which means that I need to install it by myself!!😅 The pros is, I can select my python version😁🤭💃 The trouble is.... at the first place.... I don't know what I should do😥. By going through the community (I am much more prefer than the official document, sorry InterSystems document team😓 ), I found the following piece 

https://docs.intersystems.com/iris20242/csp/docbook/DocBook.UI.Page.cls?...

Hi, InterSystems document team good job!!! I love examples!!!😊

Let's go through it together!!!

1. Download Python from https://www.python.org/downloads/

OK, Let's try Python 3.12

2. Launch the Python installer.

3.Click Customize Installation.

4. Click Next until you reach the Advanced Options screen.

5. Select the option to Install Python for All Users.

I must say this step is very important😱, because I didn't check it in my 1st installation and seems causing the embedded python not working🤐

6. Click Install.

OK... seems that's all for the Python installation part😁 Let's check the path to see what is installed😀

 

 

 

Ok, let's move on to the Management Portal of the IRIS side😉

7. In the InterSystems IRIS Management Portal, go to System Administration > Configuration > Additional Settings > Advanced Memory.

8. On the Advanced Memory Settings page, in the PythonRuntimeLibrary row, click Edit.

9. Enter C:\Program Files\Python312\python3.dll.

"Don't double quote the path!!! Don't double quote the path!!! Don't double quote the path!!! ", this is what I found failure when I follow the "Example on Windows" and put a double quote around the path....😭😭😭. The instruction is so misleading😭😭😭 

10. Click Save.

11. On the Advanced Memory Settings page, in the PythonRuntimeLibraryVersion row, click Edit.

12. Enter 3.12.

13. Click Save.

 

Seems, the setting is ready😀 Let's move on to the terminal for the final verification 😊

14. From Terminal, launch Embedded Python and verify that sys.path now includes the Python 3.11 package directories.

do ##class(%SYS.Python).Shell()

import sys
sys.path

quit()

 

15. From Terminal, use the GetPythonInfo() method of the %SYS.PythonOpens in a new tab class to view the Python version information.

do ##class(%SYS.Python).GetPythonInfo(.info)

 

zw info

 

Looks good 😀 Let's test my code

I have written a utility class for generation dummy data in JSON, it seems stupid... 🤦‍♀️ but please forgive me I am still a beginner to python🤐

In my class, I try to have a mix the usage between object scripts and python😁😁

Come on, practice practice and practice😆

Class Demo.utli.datagen Extends %RegisteredObject
{

ClassMethod obsGen() As %String [ Language = python ]
{
	#w ##class(Demo.utli.datagen).obsGen()
	import json
	#C:\InterSystems\IRISHealth\bin> .\irispip.exe install --target C:\InterSystems\IRISHealth\mgr\python\ iris
	#python -m pip install --target C:\InterSystems\IRISHealth\mgr\python\ iris
	import iris
	
	#Blood pressure: between 90/60 mmHg and 120/80 mmHg
	#Breathing: 12 to 18 breaths per minute
	#Pulse: 60 to 100 beats per minute
	#Temperature: 97.8°F to 99.1°F (36.5°C to 37.3°C); average 98.6°F (37°C)
	##gen bpsys 
	ranvalue=iris.cls("Demo.utli.datagen").resultValueGen("80-120")
	#print(ranvalue)
	ranvaluelist=ranvalue.split(',')
	bpsys=ranvaluelist[0]
	
	##gen bpdia 
	ranvalue=iris.cls("Demo.utli.datagen").resultValueGen("60-90")
	#print(ranvalue)
	ranvaluelist=ranvalue.split(',')
	bpdia=ranvaluelist[0]
	
	
	obs={'bpsys':bpsys,'bpdia':bpdia}
	#print(obs)
	
	return json.dumps(obs)
}

ClassMethod forTest() As %String [ Language = objectscript ]
{
	//w ##class(Demo.utli.datagen).forTest()
	set a={}.%FromJSON(..obsGen()) //from json tn dynamic object
	w a,!
	w "bpsys is "_a.bpsys_", bpdia is "_a.bpdia,!  // write the individual data
	set b=a.%ToJSON()	//from dynamic object to json
	w b,!
	
	// loop through the array using an iterator
	set iter = a.%GetIterator()
	while iter.%GetNext(.key , .value ) 
	{
		write !, ?5, "Key: ", key, ", Value: ", value, " type: ", a.%GetTypeOf(key)_" with value "_a.%Get(key)
	}
	w !
	return 1
}

ClassMethod labresultGen1() As %String [ Language = python ]
{
	#w ##class(Demo.utli.datagen).labresultGen1()
	import json
	import datetime
	#python -m pip install --target C:\InterSystems\IRISHealth\mgr\python\ iris
	import iris
	
	# init result
	initstr='{"labresults": [{"LabOrderNumber": "Lab24100001", "ItemNumber": "1", "ItemCode": "6690-2", "ItemCodeSystem": "LN", "ItemDesc": "Wbc", "ItemStatus": "F", "Value": "7.0", "Unit": "/nl", "RefRange": "3.8-11.0", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.552090", "UpdatedAt": "2024-10-21 16:49:01.552090"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "2", "ItemCode": "770-8", "ItemCodeSystem": "LN", "ItemDesc": "Neutros", "ItemStatus": "F", "Value": "68", "Unit": "%", "RefRange": "40-82", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.552090", "UpdatedAt": "2024-10-21 16:49:01.552090"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "3", "ItemCode": "736-9", "ItemCodeSystem": "LN", "ItemDesc": "Lymphs", "ItemStatus": "F", "Value": "20", "Unit": "%", "RefRange": "11-47", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.552090", "UpdatedAt": "2024-10-21 16:49:01.552090"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "4", "ItemCode": "5905-5", "ItemCodeSystem": "LN", "ItemDesc": "Monos", "ItemStatus": "F", "Value": "16", "Unit": "%", "RefRange": "4-15", "Abnormal": "H", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.552090", "UpdatedAt": "2024-10-21 16:49:01.552090"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "5", "ItemCode": "713-8", "ItemCodeSystem": "LN", "ItemDesc": "Eos", "ItemStatus": "F", "Value": "3", "Unit": "%", "RefRange": "0-8", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553096", "UpdatedAt": "2024-10-21 16:49:01.553096"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "6", "ItemCode": "706-2", "ItemCodeSystem": "LN", "ItemDesc": "Baso", "ItemStatus": "F", "Value": "0", "Unit": "%", "RefRange": "0-1", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553160", "UpdatedAt": "2024-10-21 16:49:01.553160"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "7", "ItemCode": "38518-7", "ItemCodeSystem": "LN", "ItemDesc": "Imm Gran", "ItemStatus": "F", "Value": "0", "Unit": "%", "RefRange": "0-2", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553160", "UpdatedAt": "2024-10-21 16:49:01.553160"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "8", "ItemCode": "789-8", "ItemCodeSystem": "LN", "ItemDesc": "Rbc", "ItemStatus": "F", "Value": "4.02", "Unit": "/pl", "RefRange": "4.07-4.92", "Abnormal": "L", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "9", "ItemCode": "718-7", "ItemCodeSystem": "LN", "ItemDesc": "Hgb", "ItemStatus": "F", "Value": "13.7", "Unit": "g/dl", "RefRange": "12.0-14.1", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "10", "ItemCode": "4544-3", "ItemCodeSystem": "LN", "ItemDesc": "Hct", "ItemStatus": "F", "Value": "40", "Unit": "%", "RefRange": "34-43", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "11", "ItemCode": "787-2", "ItemCodeSystem": "LN", "ItemDesc": "Mcv", "ItemStatus": "F", "Value": "80", "Unit": "fl", "RefRange": "77-98", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "12", "ItemCode": "mch", "ItemDesc": "Mch", "ItemStatus": "F", "Value": "30", "Unit": "pg", "RefRange": "27-35", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "13", "ItemCode": "mchc", "ItemDesc": "Mchc", "ItemStatus": "F", "Value": "32", "Unit": "g/dl", "RefRange": "32-35", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}, {"LabOrderNumber": "Lab24100001", "ItemNumber": "14", "ItemCode": "plt", "ItemDesc": "Platelets", "ItemStatus": "F", "Value": "221", "Unit": "/nl", "RefRange": "140-400", "InputBy": "12", "InputOrg": "lab", "InputDateTime": "2024-10-21 16:49:01.553296", "UpdatedAt": "2024-10-21 16:49:01.553296"}]}'
	#print(initstr)
	
	# convert to dict
	initstrdic=json.loads(initstr)
	#print(initstrdic)
	
	# loop through the reslut
	labresults=initstrdic["labresults"]
	for result in labresults:
		# update the result
		x=datetime.datetime.now()
		result.update({"InputDateTime":x.strftime("%Y-%m-%d %H:%M:%S.%f")})
		result.update({"UpdatedAt":x.strftime("%Y-%m-%d %H:%M:%S.%f")})
		#print(result["RefRange"])
		ranvalue=iris.cls("Demo.utli.datagen").resultValueGen(result["RefRange"])
		#print(ranvalue)
		ranvaluelist=ranvalue.split(',')
		result.update({"Value":ranvaluelist[0]})
		result.update({"Abnormal":ranvaluelist[1]})
		#print(result)
	
	#print(labresults)
	# put the lab result list into dict
	labresultsdict={"labresults":labresults}
	return json.dumps(labresultsdict)
}

ClassMethod resultValueGen(range = "0-1") As %String [ Language = python ]
{
	import random
	#w ##class(Demo.utli.datagen).resultValueGen()
	# expecting the range is numeric which look like "3-17" with a dash seperator
	list1=range.split('-')
	lowerbound=int(float(list1[0]))
	uppderbound=int(float(list1[1]))
	#print(lowerbound)
	#print(uppderbound)
	if uppderbound==1:
		ranvalue=random.randrange(0, 2)
	else:
		a=lowerbound-2
		if a<0:
			a=0
		b=uppderbound+2
		ranvalue=random.randrange(a, b)
	rtstr=str(ranvalue)+','
	if ranvalue<lowerbound:
		rtstr=str(ranvalue)+',L'
	if ranvalue>uppderbound:
		rtstr=str(ranvalue)+',H'	
	return rtstr
}

}

 

OK let's test it on the terminal

 

1st Change to my namespace

 

2nd run the code

 

looks good😉, let's try another piece

 

😁 seems not bad, let's try the final piece

 

seems working 😊

 

Thank you for reading😚

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 28, 2024 2min de leitura

第四章 I O 输入输出简介 - Read 命令

第四章 I O 输入输出简介 - Read 命令

Read 命令

该命令从当前设备读取数据。对于某些设备,以星号开头的参数返回 ASCII 数字信息;对于其他人来说,它们表示控制功能。

语法

READ variable:timeout

WRITE 命令

该命令将数据写入当前设备。对于某些设备,以星号开头的参数允许使用其 ASCII 数值写入 ASCII 字符;对于其他人来说,它们表示控制功能。对于某些设备,以 # 字符开头的参数指示写入该字符的次数。

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Out. 28, 2024

How to print selected rows in a detail listing in a pivot table

Hi, I'm new to the Analytics world in Intersystems and was attempting to print and/or export selected rows from a detail listing in a pivot on a dashboard.  I am able to print and/or export all the rows; but if I select a specific set of rows, it prints out the entire detail listing; not the selected rows. Please advise on the best approach to accomplish this task.  Thanks.

2 Comments
Discussão (2)2
Entre ou crie uma conta para continuar