我们会在每个月的新增成员和现有成员中分别抽取一名当月积分最高的社区成员,奉上“中文社区最佳贡献奖”,奖品为《AI医疗革命》(中文繁体译版)一本。本书中文简体译版为《超越想象的GPT医疗》,原著The AI REVOLUTION IN MEDICINE(GPT-4 AND BEYOND) 出版于2023年,作者Peter Lee,Carey Goldberg,Isaac Kohane分享了以GPT-4 为代表的大语言模型在医学领域的诸多应用可能性,更重要的是向大家展现了一种可能出现的人- 机相结合的“关系”范式。本书(中文简体译版)也在CHIMA 2024期间作为优秀图书得到了推荐,值得一读。
WRITE ##CLASS(FS.Utils).errtest1(1,0) ^ <THROW> *%Exception.PythonException <PYTHON EXCEPTION> 246 <class 'ZeroDivisionError'>: division by zero USER>
《Pythonスクリプト》
deferr1(a,b):
result=a/b
return result
コマンド例は以下の通りです。
set sys=##class(%SYS.Python).Import("sys")
do sys.path.append("c:\WorkSpace\TryIRIS")
set test1=##class(%SYS.Python).Import("test1")
write test1.err1(1,0)
deferr2(a,b):try:
if b==1:
modori="1で割っても答えは同じです"return modori
print(f"割り算の答えは={a/b}")
modori="OK"return modori
except ZeroDivisionError as ex:
modori=str(repr(ex))
print(modori)
return modori
《IRISからのコマンド実行例》
set sys=##class(%SYS.Python).Import("sys")
do sys.path.append("C:\WorkSpace\TryIRIS")
set errtest=##class(%SYS.Python).Import("test1")
set ret=errtest.err2(2,2) write ret
set ret=errtest.err2(2,1)
write ret
set ret=errtest.err2(2,0)
write ret
USER>set ret=errtest.err2(2,2) write ret 割り算の答えは=1.0 OK USER>set ret=errtest.err2(2,1)
USER>write ret 1で割っても答えは同じです USER>set ret=errtest.err2(2,0) ZeroDivisionError('division by zero')
USER>write ret ZeroDivisionError('division by zero') USER>
《ObjectScriptの例》
ClassMethod errtest2(a As%Integer, b As%Integer) As%Integer [ Language = python ]
{
try:
if b==1:
modori="1で割っても答えは同じです"return modori
print(f"割り算の答えは={a/b}")
modori="OK"return modori
except ZeroDivisionError as ex:
modori=str(repr(ex))
print(modori)
return modori
}
コマンド実行例は以下の通りです。
set modori=##class(FS.Utils).errtest2(2,2)
write modori
set modori=##class(FS.Utils).errtest2(2,1)
write modori
set modori=##class(FS.Utils).errtest2(2,0)
write modori
ClassMethod errtest4() As%Status
{
#dim ex As%Exception.AbstractExceptiontry {
set sys=##class(%SYS.Python).Import("sys")
do sys.path.append("C:\WorkSpace\TryIRIS")
set errtest=##class(%SYS.Python).Import("test1")
do errtest.err3(1,0)
}
catch ex {
write"エラーが発生しました:",ex.DisplayString(),!
//例外から%Statusに変換set st=ex.AsStatus()
//例外からSQLCODEとメッセージを取得set SQLCODE=ex.AsSQLCODE()
set SQLMessage=ex.AsSQLMessage()
}
}
コマンド実行例は以下の通りです。
do##class(FS.Utils).errtest4()
ターミナル実行例は以下の通りです。
USER>do ##class(FS.Utils).errtest4() エラーが発生しました:<PYTHON EXCEPTION> 246 <class 'ZeroDivisionError'>: division by zero
I've configured a FHIR Server in FHIR Configuration "/csp/healthshare/learn1/fhir/r4 " and I enabled a JWT Authentication for this web application. I've invoked this url http://localhost:52773/csp/healthshare/learn1/fhir/r4/login with basic auth get the JWT token. Now I use the access token as a "Bearer" for GET the patient resource. But I got 401Unauthorized error. Anyway I can get the patient resource with basic auth. I tired assign with %ALL role for testing as well. Did I miss any additional configuration in "FHIR Server Configuration"
Nous avons récemment mis en ligne sur OpenExchange une petite application que j'ai développée il y a quelque temps (et que @Jose-Tomas Salvador a améliorée et peaufinée) que j'utilise souvent lorsque j'ai besoin de générer de gros volumes de messagerie HL7.
L'application est développée en NodeJS et fonctionne en générant des données de patients et de médecins à partir de fichiers de départ que vous pouvez modifier à votre guise pour personnaliser les patients générés. L'application utilisera les patients générés pour préparer différents types de messages HL7. Pour le moment, l'application peut générer les types de messages suivants. Si le nombre de messages demandés dépasse le nombre de patients, les messages seront générés sur eux, créant ainsi plusieurs messages pour le même patient avec des heures différentes.
ADT^A08
Mettre à jour les données des patients avec les observations associées.
MSH|^~\&|HIS|HULP|EMPI||20240305120319||ADT^A28|377160|P|2.5.1
EVN|A28|20240305120319|20240305120319|1
PID|||1556655212^^^SERMAS^SN~922210^^^HULP^PI||GARCÍA PÉREZ^JUAN^^^||20150403|M|||PASEO PEDRO ÁLVAREZ^1951 CENTRO^LEGANÉS^MADRID^28379^SPAIN||555283055^PRN^^JUAN.GARCIA@YAHOO.COM|||||||||||||||||N|
PV1||N
AL1|1|MA|^Polen de gramineas^|SV^^||20440605172902
SIU^S12
Nouveau rendez-vous patient.
MSH|^~\&|HIS|HULP|EMPI||20240305120758||SIU^S12|298114|P|2.5.1
SCH|607860^607860|92610^92610|||607860|TRA02^Visita de revisión de traumatología|Visita sucesiva trauma|TRA02|15|m|^^15^20240305161758^20240305163258|||||^GARCÍA ROJO^ÁLVARO^||||^GARCÍA GARCÍA^DIANA^|||||Scheduled
PID|||1556655212^^^SERMAS^SN~922210^^^HULP^PI||GARCÍA PÉREZ^JUAN ALBERTO^^^||20150403|M|||CALLE MARÍA JUAREZ 232A^^MÓSTOLES^MADRID^28045^SPAIN||555283055^PRN^^JUAN.GARCIA@YAHOO.COM|||||||||||||||||N|
PV1|1|O|||||^ ^^^MD^^^^|^ ^^^MD^^^^||||||||||||||||||||||||||||||||||||||||||||
RGS|1|A
AIS|1|A|^|20240305161758|||15|m^Minutes||Scheduled
AIL|1|A|TRA02^^^|^||20240305161758|||15|m^Minutes||Scheduled
AIP|1|A|1^ ^^A^MD^^^^|D^, ||20240305161758|||15|m^Minutes||Scheduled
ORU^R01
Transmission non sollicitée de l’observation demandée.
MSH|^~\&|HIS|CHGM|EMPI||20240305121511||ORU^R01|16955|P|2.5.1
PID|||1556655212^^^SEGSOC^SSN~230546^^^CHGM^PI||GARCÍA PÉREZ^JUAN^^^||20150403|M|||PASEO PEDRO ÁLVAREZ 1951 CENTRO^^LEGANÉS^MADRID^28379^SPAIN||555283055^PRN^^JUAN.GARCIA@YAHOO.COM|||||||||||||||||N|
PV1||O|||||079492022O^GARCÍA FERNÁNDEZ^PETRONILA^^MD^^^^|||||||1|||||450908|||||||||||||||||||||||||20240305121511|20240305121511
ORC|1|193683|8680||||^^^20240305121511||20240305121511|||0631438066E^MARGALL GARCÍA^MARCOS^^MD^^^^|CHGM||||||||CHGM||||||||LAB
OBR|1|193683|8680|LAB^LABORATORY^L||||||||||||0631438066E^MARGALL GARCÍA^MARCOS^^MD^^^^|||||||||F
OBX|1|NM|WBC^Conteo de glóbulos blancos^SNM||2.0|10(9)/L|4.0-10.6||||F|||20240305121511
OBX|2|NM|RBC^Conteo de glóbulos rojos^SNM||3.0|10x12/L|4.5-5.9||||F|||20240305121511
OBX|3|NM|HGB^Hemoglobina^SNM||13.0|g/dL|12.0-16.0||||F|||20240305121511
OBX|4|NM|HCT^Hematocrito^SNM||48.0|%|36.0-46.0||||F|||20240305121511
OBX|5|NM|MCV^Volumen celular medio^SNM||75|fL|80-100||||F|||20240305121511
OBX|6|NM|MCH^Hemoglobina celular media^SNM||22.0|pg|26-34||||F|||20240305121511
OBX|7|NM|MCHC^Concentración de hemoglobina celular media^SNM||24.0|g/dL|31-37||||F|||20240305121511
OBX|8|NM|RDW^Ancho de distribución eritrocitaria^SNM||15.0|%|11.5-14.5||||F|||20240305121511
OBX|9|NM|PLT^Conteo de plaquetas - Automatizado^SNM||284|10(9)L|140-440||||F|||20240305121511
OBX|10|NM|MPV^Volumen de plaquetas medio^SNM||10.0|UMx1000|8-11||||F|||20240305121511
OBX|11|NM|NE^# Neutrófilos^SNM||6.00|#|1.8-8.5||||F|||20240305121511
OBX|12|NM|LY^# Linfa^SNM||2.00|#|0.8-3.5||||F|||20240305121511
OBX|13|NM|MO^# Monocitos^SNM||0.00|#|0.2-0.9||||F|||20240305121511
OBX|14|NM|EO^# Eosinófilos^SNM||0.00|#|0.0-0.6||||F|||20240305121511
OBX|15|NM|BA^# Basófilos^SNM||0.00|#|0.0-0.2||||F|||20240305121511
OBX|16|NM|PERCENTNE^% Neutrófilos^SNM||57.0|%|40-80||||F|||20240305121511
OBX|17|NM|PERCENTLY^% Linfa^SNM||19.0|%|15-45||||F|||20240305121511
OBX|18|NM|SEG^Neutrófilos segmentados^SNM||55.0|%|50-75||||F|||20240305121511
OBX|19|NM|LYMPHS^Linfocitos^SNM||37.0|%|20-44||||F|||20240305121511
OBX|20|NM|MONO^Monocitos^SNM||2.0|%|2-9||||F|||20240305121511
OBX|21|NM|ATYP^Linfocitos atípicos^SNM||33|%|0-100||||F|||20240305121511
Comment ça fonctionne
Le README.md associé au projet explique comment déployer l'application. Pour y accéder, il vous suffira de saisir l'URL dans votre navigateur internet : http://localhost:5000, et la fenêtre principale s'ouvrira automatiquement.
Ci-dessous vous pouvez indiquer le nombre de patients souhaités et le nombre de médecins. Avec les deux fichiers générés, vous pouvez générer autant de messages que vous le souhaitez des types décrits ci-dessus.
Vous avez la possibilité de générer des messages pour différentes autorités assignatrices (l'organisme qui attribue le numéro d'historique) ainsi que différents identifiants des patients (numéro de sécurité sociale, NIF, etc...).
Comme vous pouvez le constater, il s'agit d'une application basique, n'hésitez pas à modifier ce que vous souhaitez et à l'adapter à vos besoins et si vous avez des questions à ce sujet, écrivez-les dans les commentaires.
$ZTIMESTAMP returns the date and time in UTC format, so to change it to the local time zone, use the following system method:
$SYSTEM.Util.UTCtoLocalWithZTIMEZONE($ZTIMESTAMP)
The above output will be in the format ddddd,sssss.fff.
ddddd: Same format as $HOROLOG dates sssss: An integer indicating the number of seconds elapsed since midnight on the current date fff: Variable number of digits indicating the fractional part of a second
* Similar to $HOROLOG, except that $HOROLOG does not include fractional seconds.