package net.ihe.gazelle.tf; import net.ihe.gazelle.systems.abstracts.model.AbstractSystemActorProfiles; import net.ihe.gazelle.tf.model.Actor; import net.ihe.gazelle.tf.model.IntegrationProfile ; import net.ihe.gazelle.tf.model.IntegrationProfileOption ; import net.ihe.gazelle.common.util.Pair ; import java.util.LinkedList ; global java.util.List myGlobalList; global javax.persistence.EntityManager entityManager ; global java.util.List l ; ################### ## PCC Rules ########## ################### # QED rules ## Reference: PCC TF1 Table 2.5-1 rule "CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "CLIN_DATA_CONSUMER" || == "CLIN_DATA_SOURCE", integrationProfile.keyword == 'QED') not AbstractSystemActorProfiles (actor.keyword == 'SN' || == 'SA', integrationProfile.keyword == 'ATNA') then #myGlobalList.add( "CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: PCC TF1 Table 2.5-1 rule "CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "CLIN_DATA_CONSUMER" || == "CLIN_DATA_SOURCE", integrationProfile.keyword == 'QED') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CLIN_DATA_CONSUMER|CLIN_DATA_SOURCE/QED requires" , new AbstractSystemActorProfiles("TIME_CLIENT","CT", null , entityManager ) ) ) ; myGlobalList.add( l ); end # IC/FSA/EDES/XPHR/EDR rules ## Reference: PCC TF1 Table 2.5-1, PCC TF1 6.9.1, PCC TF1 7.9.1, PCC TF1 4.9.1, PCC TF1 4.18.1, 4.18.2 rule "CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR'|| == 'IC' || =='FSA') not AbstractSystemActorProfiles (actor.keyword == 'SN' || == 'SA', integrationProfile.keyword == 'ATNA') then #myGlobalList.add( "System implements the CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA, it also needs to implement SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: PCC TF1 Table 2.5-1, TF1 6.9.1, PCC TF1 7.9.1, PCC TF1 4.9.1, PCC TF1 4.18.1 rule "CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR' || == 'IC' || =='FSA') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: PCC TF1 6.9.1, PCC TF1 7.9.1, PCC TF1 4.9.1, PCC TF1 4.18.1, 4.18.2 rule "CONTENT_CONSUMER/APR|EDES|XPHR|EDR requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR') not AbstractSystemActorProfiles (actor.keyword == 'SN' || == 'SA', integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "System implements the CONTENT_CONSUMER/APR|EDES|XPHR|EDR, it also needs to implement SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR|EDR requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR|EDR requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: PCC TF1 6.9.1, PCC TF1 7.9.1, PCC TF1 4.9.1, PCC TF1 4.18.1 rule "CONTENT_CONSUMER/APR|EDES|XPHR|EDR requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the CONTENT_CONSUMER/APR|EDES|XPHR|EDR, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR|EDR requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## PPHP rules rule "CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", integrationProfile.keyword == 'PPHP') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires TIME_CLIENT/CT" when $xds : AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", integrationProfile.keyword == 'PPHP') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/PPHP requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Manager Rules rule "CONTENT_CONSUMER/APR|EDES|XPHR requires DOC_CONSUMER/XDS.a or DOC_CONSUMER/XDS.b or PMI/XDM or DOC_RECIPIENT/XDR" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR') not (AbstractSystemActorProfiles (actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a' ) or AbstractSystemActorProfiles (actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.b' ) or AbstractSystemActorProfiles (actor.keyword == "PMI", integrationProfile.keyword == 'XDM' ) or AbstractSystemActorProfiles (actor.keyword == "DOC_RECIPIENT", integrationProfile.keyword == 'XDR' )) then # myGlobalList.add( "System implements the CONTENT_CONSUMER/APR|EDES|XPHR, it also needs to implement DOC_CONSUMER/XDS.a or DOC_CONSUMER/XDS.b or PMI/XDM or DOC_RECIPIENT/XDR"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "DOC_RECIPIENT","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Manager Rules rule "CONTENT_CREATOR/APR|EDES|XPHR requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR') not (AbstractSystemActorProfiles (actor.keyword == "DOC_SOURCE", integrationProfile.keyword == 'XDS.a'|| == 'XDS.b' || == 'XDR' ) or AbstractSystemActorProfiles (actor.keyword == "PMC", integrationProfile.keyword == 'XDM' )) then #myGlobalList.add( "System implements the CONTENT_CREATOR/APR|XPHR, it also needs to implement DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/APR|EDES|XPHR requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Manager Rules rule "CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires DOC_SOURCE/XDS-* or PMC/XDM" when $xds : AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'XDS-MS' || == 'XDS-SD'|| == 'EDR' || == 'PPHP' || == 'XD-Lab' || == 'EDES' || =='APR' ||=='IC' || =='FSA' || == 'XPHR') not (AbstractSystemActorProfiles (actor.keyword == "DOC_SOURCE", integrationProfile.keyword == 'XDS.a' || == 'XDS.b'|| == 'XDR') or AbstractSystemActorProfiles (actor.keyword == "PMC", integrationProfile.keyword == 'XDM' )) then #myGlobalList.add( "System implements the CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR, it also needs to implement DOC_SOURCE for one of the XDS.a, XDS.b, XDM,XDR or PMC/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires DOC_CONSUMER/XDS-* or DOC_RECIPIENT/XDR or PMI/XDM" when $xds : AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'XDS-MS' || == 'XDS-SD'|| == 'EDR' || == 'PPHP' || == 'XD-Lab' || == 'EDES' || =='APR' ||=='IC' || =='FSA' || == 'XPHR') not (AbstractSystemActorProfiles (actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a' || == 'XDS.b') or AbstractSystemActorProfiles (actor.keyword == "PMI", integrationProfile.keyword == 'XDM' ) or AbstractSystemActorProfiles (actor.keyword == "DOC_RECIPIENT", integrationProfile.keyword == 'XDR' )) then #myGlobalList.add( "System implements the CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR, it also needs to implement DOC_CONSUMER for one of the XDS.a, XDS.b, XDM or DOC_RECIPIENT/XDR or PMI/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "DOC_RECIPIENT","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|XDS-SD|EDR|PPHP|XD-Lab|EDES|APR|IC|FSA|XPHR requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: PCD TF1 2.1-Table 1 rule "*/DEC requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'DEC', actor.keyword == 'DEV_OBS_CONSUMER' || == 'DEV_OBS_FILTER' || == 'DEV_OBS_REPORTER') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT') then #myGlobalList.add( "DEV_OBS_CONSUMER|DEV_OBS_FILTER|DEV_OBS_REPORTER/DEC requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DEV_OBS_CONSUMER|DEV_OBS_FILTER|DEV_OBS_REPORTER/DEC requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ################################################### ################### LAB ########################### ################################################### ################# LBL ##################### #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "LIB/LBL requires OF|OP/LTW" when $xds : AbstractSystemActorProfiles (actor.keyword == 'LIB', integrationProfile.keyword == 'LBL') not AbstractSystemActorProfiles (actor.keyword == 'OF' || == 'OP', integrationProfile.keyword == 'LTW' ) then #myGlobalList.add( "LIB/LBL requires OF|OP/LTW"); l = new LinkedList>() ; l.add( new Pair("LIB/LBL requires" , new AbstractSystemActorProfiles( "OF","LTW" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("LIB/LBL requires" , new AbstractSystemActorProfiles( "OP","LTW" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ################ LCSD ##################### #Currently no rules found #################### LDA ################## #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "AM/LDA requires AM/LTW" when $xds : AbstractSystemActorProfiles (actor.keyword == 'AM', integrationProfile.keyword == 'LDA') not AbstractSystemActorProfiles (actor.keyword == 'AM', integrationProfile.keyword == 'LTW' ) then #myGlobalList.add( "AM/LDA requires AM/LTW"); l = new LinkedList>() ; l.add( new Pair("AM/LDA requires" , new AbstractSystemActorProfiles( "AM","LTW" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ################## LPOCT ################### #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "OF/LPOCT requires OF/LTW" when $xds : AbstractSystemActorProfiles (actor.keyword == 'OF', integrationProfile.keyword == 'LPOCT') not AbstractSystemActorProfiles (actor.keyword == 'OF', integrationProfile.keyword == 'LTW' ) then # myGlobalList.add( "OF/LPOCT requires OF/LTW"); l = new LinkedList>() ; l.add( new Pair("OF/LPOCT requires" , new AbstractSystemActorProfiles( "OF","LTW" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "POCDM/LPOCT requires PDS&PES/PAM OR PDC&PES/PAM OR PDC&PEC/PAM OR PDC/PDQ" when $xds : AbstractSystemActorProfiles (actor.keyword == 'POCDM', integrationProfile.keyword == 'LPOCT') not ( (AbstractSystemActorProfiles (actor.keyword == 'PDS', integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actor.keyword == 'PES', integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actor.keyword == 'PDC', integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actor.keyword == 'PES', integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actor.keyword == 'PDC', integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actor.keyword == 'PEC', integrationProfile.keyword == 'PAM')) or AbstractSystemActorProfiles (actor.keyword == 'PDC', integrationProfile.keyword == 'PDQ') ) then #myGlobalList.add( "POCDM/LPOCT requires PDS&PES/PAM OR PDC&PES/PAM OR PDC&PEC/PAM OR PDC/PDQ"); l = new LinkedList>() ; l.add( new Pair("POCDM/LPOCT requires" , new AbstractSystemActorProfiles( "PDS","PAM" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PES","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("POCDM/LPOCT requires" , new AbstractSystemActorProfiles( "PDC","PAM" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PES","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("POCDM/LPOCT requires" , new AbstractSystemActorProfiles( "PDC","PAM" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PEC","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("POCDM/LPOCT requires" , new AbstractSystemActorProfiles( "PDC","PDQ" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ################### LTW ################### # From KUDU #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "OP|OF|ORT/LTW requires PDS&PES/PAM OR PDC&PES/PAM OR PDC&PEC/PAM OR PDC/PDQ" when AbstractSystemActorProfiles (actor.keyword == 'OP' || == 'OF' || == 'ORT', integrationProfile.keyword == 'LTW') not ( (AbstractSystemActorProfiles (actor.keyword == 'PDS', integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actor.keyword == 'PES', integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actor.keyword == 'PDC', integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actor.keyword == 'PES', integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actor.keyword == 'PDC', integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actor.keyword == 'PEC', integrationProfile.keyword == 'PAM')) or AbstractSystemActorProfiles (actor.keyword == 'PDC', integrationProfile.keyword == 'PDQ') ) then #myGlobalList.add( "OP|OF|ORT/LTW requires PDS&PES/PAM OR PDC&PES/PAM OR PDC&PEC/PAM OR PDC/PDQ"); l = new LinkedList>() ; l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "PDS","PAM" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PES","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "PDC","PAM" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PES","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "PDC","PAM" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PEC","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "PDC","PDQ" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end # EP : I have commented out this rules that is too restrictive. CP in process #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 #rule "OP|OF|ORT/LTW requires SN|SA/ATNA" # when # $xds : AbstractSystemActorProfiles (actor.keyword == 'OP' || == 'OF' || == 'ORT', integrationProfile.keyword == 'LTW') # not AbstractSystemActorProfiles (actor.keyword == 'SN' || == 'SA', integrationProfile.keyword == 'ATNA' ) # then # #myGlobalList.add( "OP|OF|ORT/LTW requires SN|SA/ATNA"); # l = new LinkedList>() ; # l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; # myGlobalList.add( l ) ; # # l = new LinkedList>() ; # l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; # myGlobalList.add( l ) ; #end #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 #rule "OP|OF|ORT/LTW requires TIME_CLIENT/CT" # when # $xds : AbstractSystemActorProfiles (actor.keyword == 'OP' || == 'OF' || == 'ORT', integrationProfile.keyword == 'LTW') # not AbstractSystemActorProfiles (actor.keyword == 'TIME_CLIENT', integrationProfile.keyword == 'CT' ) # then # #myGlobalList.add( "OP|OF|ORT/LTW requires TIME_CLIENT/CT"); # l = new LinkedList>() ; # l.add( new Pair("OP|OF|ORT/LTW requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; # myGlobalList.add( l ) ; #end ####################### XD-Lab ######################### #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "CONTENT_CREATOR/XD-Lab requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM" when AbstractSystemActorProfiles ( actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'XD-Lab') not (AbstractSystemActorProfiles ( actor.keyword == "DOC_SOURCE", integrationProfile.keyword == 'XDS.a' || == 'XDS.b' || == 'XDR') or AbstractSystemActorProfiles ( actor.keyword == "PMC", integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "CONTENT_CREATOR/XD-Lab requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XD-Lab requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XD-Lab requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XD-Lab requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XD-Lab requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "CONTENT_CONSUMER/XD-Lab requires DOC_CONSUMER|XDS.a/XDS.b or DOC_RECIPIENT/XDR or PMI/XDM" when AbstractSystemActorProfiles ( actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'XD-Lab') not (AbstractSystemActorProfiles ( actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a' || == 'XDS.b' ) or AbstractSystemActorProfiles ( actor.keyword == "DOC_RECIPIENT", integrationProfile.keyword == 'XDR') or AbstractSystemActorProfiles ( actor.keyword == "PMI", integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "CONTENT_CONSUMER/XD-Lab requires DOC_CONSUMER/XDS.a|XDS.b or DOC_RECIPIENT/XDR or PMI/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "DOC_RECIPIENT","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actor.keyword == 'CONTENT_CREATOR' || == 'CONTENT_CONSUMER', integrationProfile.keyword == 'XD-Lab') not AbstractSystemActorProfiles (actor.keyword == 'SN' || == 'SA', integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires TIME_CLIENT/CT" when $xds : AbstractSystemActorProfiles (actor.keyword == 'CONTENT_CREATOR' || == 'CONTENT_CONSUMER', integrationProfile.keyword == 'XD-Lab') not AbstractSystemActorProfiles (actor.keyword == 'TIME_CLIENT', integrationProfile.keyword == 'CT' ) then # myGlobalList.add( "CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XD-Lab requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ######################################################### #################### Radiology rules #################### ######################################################### #### ARI #### ## Reference: RAD TF1 Table 2-1 rule "ID/ARI requires ID/SWF|ID/CPI|ID/ED|ID/KIN" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'ARI', actor.keyword == 'ID') not AbstractSystemActorProfiles (actor.keyword == "ID", integrationProfile.keyword == 'SWF' || == 'CPI' || == 'ED' || == 'KIN') then #myGlobalList.add( "ID/ARI requires ID/SWF|ID/CPI|ID/ED|ID/KIN"); l = new LinkedList>() ; l.add( new Pair("ID/ARI requires" , new AbstractSystemActorProfiles( "ID","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("ID/ARI requires" , new AbstractSystemActorProfiles( "ID","CPI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("ID/ARI requires" , new AbstractSystemActorProfiles( "ID","ED" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("ID/ARI requires" , new AbstractSystemActorProfiles( "ID","KIN" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "IM/ARI requires IM/SWF|IM/CPI|IM/ED|IM/KIN" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'ARI', actor.keyword == 'IM') not AbstractSystemActorProfiles (actor.keyword == "IM", integrationProfile.keyword == 'SWF' || == 'CPI' || == 'ED' || == 'KIN') then # myGlobalList.add( "IM/ARI requires IM/SWF|IM/CPI|IM/ED|IM/KIN"); l = new LinkedList>() ; l.add( new Pair("IM/ARI requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IM/ARI requires" , new AbstractSystemActorProfiles( "IM","CPI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IM/ARI requires" , new AbstractSystemActorProfiles( "IM","ED" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IM/ARI requires" , new AbstractSystemActorProfiles( "IM","KIN" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "RRP/ARI requires RRP/SINR" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'ARI', actor.keyword == 'RRP') not AbstractSystemActorProfiles (actor.keyword == "RRP", integrationProfile.keyword == 'SINR') then # myGlobalList.add( "RRP/ARI requires RRP/SINR"); l = new LinkedList>() ; l.add( new Pair("RRP/ARI requires" , new AbstractSystemActorProfiles( "RRP","SINR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "RRD/ARI requires RRD/SINR" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'ARI', actor.keyword == 'RRD') not AbstractSystemActorProfiles (actor.keyword == "RRD", integrationProfile.keyword == 'SINR') then # myGlobalList.add( "RRD/ARI requires RRD/SINR"); l = new LinkedList>() ; l.add( new Pair("RRD/ARI requires" , new AbstractSystemActorProfiles( "RRD","SINR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### CHG #### ## Reference: RAD TF1 Table 2-1 rule "OF/CHG requires OF/SWF | OF/PWF | OF/RWF | OF/IRWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'OF') not AbstractSystemActorProfiles (actor.keyword == "OF", integrationProfile.keyword == 'SWF' || == 'PWF' || == 'RWF' || == 'IRWF') then myGlobalList.add( "OF/CHG requires OF/SWF | OF/PWF | OF/RWF | OF/IRWF"); l = new LinkedList>() ; l.add( new Pair("OF/CHG requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("OF/CHG requires" , new AbstractSystemActorProfiles( "OF","PWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("OF/CHG requires" , new AbstractSystemActorProfiles( "OF","RWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("OF/CHG requires" , new AbstractSystemActorProfiles( "OF","IRWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "ADT/CHG requires ADT/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'ADT') not AbstractSystemActorProfiles (actor.keyword == "ADT", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "ADT/CHG requires ADT/SWF"); l = new LinkedList>() ; l.add( new Pair("ADT/CHG requires" , new AbstractSystemActorProfiles( "ADT","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "PPM/CHG requires PPM/PWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'PPM') not AbstractSystemActorProfiles (actor.keyword == "PPM", integrationProfile.keyword == 'PWF') then #myGlobalList.add( "PPM/CHG requires PPM/PWF"); l = new LinkedList>() ; l.add( new Pair("PPM/CHG requires" , new AbstractSystemActorProfiles( "PPM","PWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "EC/CHG requires EC/SWF | EC/PWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'EC') not AbstractSystemActorProfiles (actor.keyword == "EC", integrationProfile.keyword == 'PWF' || == 'SWF') then # myGlobalList.add( "EC/CHG requires EC/SWF | EC/PWF"); l = new LinkedList>() ; l.add( new Pair("EC/CHG requires" , new AbstractSystemActorProfiles( "EC","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("EC/CHG requires" , new AbstractSystemActorProfiles( "EC","PWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "MOD/CHG requires MOD/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'MOD') not AbstractSystemActorProfiles (actor.keyword == "MOD", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "MOD/CHG requires MOD/SWF"); l = new LinkedList>() ; l.add( new Pair("MOD/CHG requires" , new AbstractSystemActorProfiles( "MOD","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "IMPORTER/CHG requires IMPORTER/IRWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'IMPORTER') not AbstractSystemActorProfiles (actor.keyword == "IMPORTER", integrationProfile.keyword == 'IRWF') then # myGlobalList.add( "IMPORTER/CHG requires IMPORTER/IRWF"); l = new LinkedList>() ; l.add( new Pair("IMPORTER/CHG requires" , new AbstractSystemActorProfiles( "IMPORTER","IRWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-5 rule "OF/CHG requires PPSM/CHG" when $of : AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'OF') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'CHG') then # myGlobalList.add( "OF/CHG requires PPSM/CHG"); l = new LinkedList>() ; l.add( new Pair("OF/CHG requires" , new AbstractSystemActorProfiles( "PPSM","CHG" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "RM/CHG requires RM/RWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'CHG', actor.keyword == 'RM') not AbstractSystemActorProfiles (actor.keyword == "RM", integrationProfile.keyword == 'RWF') then # myGlobalList.add( "RM/CHG requires RM/RWF"); l = new LinkedList>() ; l.add( new Pair("RM/CHG requires" , new AbstractSystemActorProfiles( "RM","RWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### CPI #### #CURRENTLY NO RULES FOUND #### ED #### #CURRENTLY NO RULES FOUND #### FUS #### #CURRENTLY NO RULES FOUND #### IRWF #### ## Reference: RAD TF1 Table 2-1 /*Removed by Lynn's request rule "OF/IRWF requires OF/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'IRWF', actor.keyword == 'OF') not AbstractSystemActorProfiles (actor.keyword == "OF", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "OF/IRWF requires OF/SWF"); l = new LinkedList>() ; l.add( new Pair("OF/IRWF requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end */ /*Removed by Lynn's request ## Reference: RAD TF1 Table 2-1 rule "IM/IRWF requires IM/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'IRWF', actor.keyword == 'IM') not AbstractSystemActorProfiles (actor.keyword == "IM", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "IM/IRWF requires IM/SWF"); l = new LinkedList>() ; l.add( new Pair("IM/IRWF requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end */ ## Reference: RAD TF1 Table 2-1 rule "IM|OF/IRWF requires PPSM/IRWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'IRWF', actor.keyword == 'IM' || == 'OF') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'IRWF') then # myGlobalList.add( "IM|OF/IRWF requires PPSM/IRWF"); l = new LinkedList>() ; l.add( new Pair("IM|OF/IRWF requires" , new AbstractSystemActorProfiles( "PPSM","IRWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### KIN #### #CURRENTLY NO RULES FOUND #### MAMMO #### #CURRENTLY NO RULES FOUND #### MAWF #### #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "OF/MAWF requires OF/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'MAWF', actor.keyword == 'OF') not AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF', actor.keyword == "OF") then # myGlobalList.add( "OF/MAWF requires OF/SWF"); l = new LinkedList>() ; l.add( new Pair("OF/MAWF requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "MOD/MAWF requires MOD/SWF and MOD/MAMMO" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'MAWF', actor.keyword == 'MOD') not (AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF' , actor.keyword == "MOD") and AbstractSystemActorProfiles (integrationProfile.keyword == 'MAMMO' , actor.keyword == "MOD")) then # myGlobalList.add( "MOD/MAWF requires MOD/SWF and MOD/MAMMO"); l = new LinkedList>() ; l.add( new Pair("MOD/MAWF requires" , new AbstractSystemActorProfiles( "MOD","SWF" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "MAMMO","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "IM/MAWF requires IM/SWF and IM/MAMMO" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'MAWF', actor.keyword == 'IM') not (AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF' , actor.keyword == "IM") and AbstractSystemActorProfiles (integrationProfile.keyword == 'MAMMO' , actor.keyword == "IM")) then # myGlobalList.add( "IM/MAWF requires IM/SWF and IM/MAMMO"); l = new LinkedList>() ; l.add( new Pair("IM/MAWF requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "IM","MAMMO" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "ID/MAWF requires ID/SWF and ID/MAMMO" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'MAWF', actor.keyword == 'ID') not (AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF', actor.keyword == "ID") and AbstractSystemActorProfiles (integrationProfile.keyword == 'MAMMO' , actor.keyword == "ID")) then # myGlobalList.add( "ID/MAWF requires ID/SWF and ID/MAMMO"); l = new LinkedList>() ; l.add( new Pair("ID/MAWF requires" , new AbstractSystemActorProfiles( "ID","SWF" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "ID","MAMMO" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "PPSM/MAWF requires PPSM/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'MAWF', actor.keyword == 'PPSM') not AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF', actor.keyword == "PPSM") then # myGlobalList.add( "OF/MAWF requires OF/SWF"); l = new LinkedList>() ; l.add( new Pair("OF/MAWF requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "EC/MAWF requires EC/SWF and EC/MAMMO" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'MAWF', actor.keyword == 'EC') not (AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF' , actor.keyword == "EC") and AbstractSystemActorProfiles (integrationProfile.keyword == 'MAMMO' , actor.keyword == "EC")) then #myGlobalList.add( "EC/MAWF requires EC/SWF and EC/MAMMO"); l = new LinkedList>() ; l.add( new Pair("EC/MAWF requires" , new AbstractSystemActorProfiles( "EC","SWF" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "EC","MAMMO" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### NMI #### #CURRENTLY NO RULES FOUND #### PDI #### ## Reference: RAD TF1 2.5 Product Implementations ## Commented on 10/31/2008 ## Steve to fix Radiology documentation #rule "PC/PDI requires ID/PDI" # when # AbstractSystemActorProfiles ( integrationProfile.keyword == 'PDI', actor.keyword == 'PC') # not AbstractSystemActorProfiles (actor.keyword == 'ID', integrationProfile.keyword == 'PDI') # then # myGlobalList.add( "The Print Composer shall be grouped with an Image Manager, an Acquisition Modality, an Image Display or an Evidence Creator."); #end ## Reference: RAD TF1 2.5 Product Implementations # rule "PMI/PDI requires EC/ED or MOD/SWF|KIN|ED or IM/SWF|CPI|KIN|ED or RC|RM|RRP/SINR or IMPORTER/IRWF" # when # AbstractSystemActorProfiles ( integrationProfile.keyword == 'PDI', actor.keyword == 'PMI') # not AbstractSystemActorProfiles ((integrationProfile.keyword == 'ED' && actor.keyword == 'EC') || # (integrationProfile.keyword == 'SWF' || == 'KIN' || == 'ED' && actor.keyword == 'MOD') || # (integrationProfile.keyword == 'SWF' || == 'CPI' || == 'KIN' || == 'ED' && actor.keyword == 'IM') || # (integrationProfile.keyword == 'SINR' && actor.keyword == 'RC' || == 'RM' || == 'RRP') || # (integrationProfile.keyword == 'IRWF' && actor.keyword == 'IMPORTER')) # then # myGlobalList.add( "PMI/PDI requires EC/ED or MOD/SWF|KIN|ED or IM/SWF|CPI|KIN|ED or RC|RM|RRP/SINR or IMPORTER/IRWF."); #end #### PGP #### ## From KUDU rule "IM|OF/PGP requires PPSM/PGP" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PGP', actor.keyword == 'IM' || == 'OF') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'PGP') then #myGlobalList.add( "IM|OF/PGP requires PPSM/PGP"); l = new LinkedList>() ; l.add( new Pair("IM|OF/PGP requires" , new AbstractSystemActorProfiles( "PPSM","PGP" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## From KUDU ## Removed because it is covered in "OF/PGP requires OF/SWF | ID/CPI | ID/ARI" and "IM/PGP requires IM/SWF | IM/CPI | ID/CPI" /*rule "IM/PGP requires ID/CPI" when $im : AbstractSystemActorProfiles ( integrationProfile.keyword == 'PGP', actor.keyword == 'IM') not AbstractSystemActorProfiles (actor.keyword == "ID", integrationProfile.keyword == 'CPI') then myGlobalList.add( "IM/PGP requires ID/CPI"); end */ ## Reference: RAD TF1 Table 2-1 ## Manager showed me the rule which manager got from comittee. rule "MOD/PGP requires MOD/CPI" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PGP', actor.keyword == 'MOD') not AbstractSystemActorProfiles (actor.keyword == "MOD", integrationProfile.keyword == 'CPI') then # myGlobalList.add( "MOD/PGP requires MOD/CPI"); l = new LinkedList>() ; l.add( new Pair("MOD/PGP requires" , new AbstractSystemActorProfiles( "MOD","CPI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 ## Manager showed me the rule which manager got from comittee. ## Because it already covers part of "IM|OF/PGP requires ID/CPI", so made change in IM|OF/PGP as well rule "OF/PGP requires OF/SWF and ID/CPI and ID/ARI" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PGP', actor.keyword == 'OF') not (AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF', actor.keyword == "OF") and AbstractSystemActorProfiles (integrationProfile.keyword == 'CPI', actor.keyword == "ID") and AbstractSystemActorProfiles (integrationProfile.keyword == 'ARI', actor.keyword == "ID")) then # myGlobalList.add( "OF/PGP requires OF/SWF and ID/CPI and ID/ARI"); l = new LinkedList>() ; l.add( new Pair("OF/PGP requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "ID","CPI" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "ID","ARI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 ## Manager showed me the rule which manager got from comittee. ## Because it already covers part of "IM|OF/PGP requires ID/CPI", so made change in IM|OF/PGP as well rule "IM/PGP requires IM/SWF and IM/CPI and ID/CPI" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PGP', actor.keyword == 'IM') not (AbstractSystemActorProfiles (integrationProfile.keyword == 'SWF', actor.keyword == "IM") and AbstractSystemActorProfiles(integrationProfile.keyword == 'CPI', actor.keyword == 'IM') and AbstractSystemActorProfiles(integrationProfile.keyword == 'CPI', actor.keyword == 'ID')) then # myGlobalList.add( "IM/PGP requires IM/SWF and IM/CPI and ID/CPI"); l = new LinkedList>() ; l.add( new Pair("IM/PGP requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "IM","CPI" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "ID","CPI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### PIR #### ## From KUDU rule "IM|OF/PIR requires PPSM/PIR" when $of : AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'OF' || == 'IM') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'PIR') then # myGlobalList.add( "OF|IM/PIR requires PPSM/PIR"); l = new LinkedList>() ; l.add( new Pair("OF|IM/PIR requires" , new AbstractSystemActorProfiles( "PPSM","PIR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "ADT/PIR requires ADT/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'ADT') not AbstractSystemActorProfiles (actor.keyword == "ADT", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "ADT/PIR requires ADT/SWF"); l = new LinkedList>() ; l.add( new Pair("ADT/PIR requires" , new AbstractSystemActorProfiles( "ADT","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "OP/PIR requires OP/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'OP') not AbstractSystemActorProfiles (actor.keyword == "OP", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "OP/PIR requires OP/SWF"); l = new LinkedList>() ; l.add( new Pair("OP/PIR requires" , new AbstractSystemActorProfiles( "OP","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "OF/PIR requires OF/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'OF') not AbstractSystemActorProfiles (actor.keyword == "OF", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "OF/PIR requires OF/SWF"); l = new LinkedList>() ; l.add( new Pair("OF/PIR requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "RM/PIR requires RM/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'RM') not AbstractSystemActorProfiles (actor.keyword == "RM", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "RM/PIR requires RM/SWF"); l = new LinkedList>() ; l.add( new Pair("RM/PIR requires" , new AbstractSystemActorProfiles( "RM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "IM/PIR requires IM/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'IM') not AbstractSystemActorProfiles (actor.keyword == "IM", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "IM/PIR requires IM/SWF"); l = new LinkedList>() ; l.add( new Pair("IM/PIR requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "MOD/PIR requires MOD/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PIR', actor.keyword == 'MOD') not AbstractSystemActorProfiles (actor.keyword == "MOD", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "MOD/PIR requires MOD/SWF"); l = new LinkedList>() ; l.add( new Pair("MOD/PIR requires" , new AbstractSystemActorProfiles( "MOD","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### PWF #### ## Reference: RAD TF1 Table 2-1 rule "OF/PWF requires OF/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PWF', actor.keyword == 'OF') not AbstractSystemActorProfiles (actor.keyword == "OF", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "OF/PWF requires OF/SWF"); l = new LinkedList>() ; l.add( new Pair("OF/PWF requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "IM/PWF requires IM/SWF | IM/ED | IM/NMI" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PWF', actor.keyword == 'IM') not AbstractSystemActorProfiles (actor.keyword == "IM", integrationProfile.keyword == 'SWF' || == 'ED' || == 'NMI') then #myGlobalList.add( "IM/PWF requires IM/SWF | IM/ED | IM/NMI"); l = new LinkedList>() ; l.add( new Pair("IM/PWF requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IM/PWF requires" , new AbstractSystemActorProfiles( "IM","ED" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IM/PWF requires" , new AbstractSystemActorProfiles( "IM","NMI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "EC/PWF requires EC/SWF | EC/ED | EC/NMI" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PWF', actor.keyword == 'EC') not AbstractSystemActorProfiles (actor.keyword == "EC", integrationProfile.keyword == 'SWF' || == 'ED' || == 'NMI') then # myGlobalList.add( "EC/PWF requires EC/SWF | EC/ED | EC/NMI"); l = new LinkedList>() ; l.add( new Pair("EC/PWF requires" , new AbstractSystemActorProfiles( "EC","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("EC/PWF requires" , new AbstractSystemActorProfiles( "EC","ED" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("EC/PWF requires" , new AbstractSystemActorProfiles( "EC","NMI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "ID/PWF requires ID/SWF | ID/ED | ID/NMI" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PWF', actor.keyword == 'ID') not AbstractSystemActorProfiles (actor.keyword == "ID", integrationProfile.keyword == 'SWF' || == 'ED' || == 'NMI') then #myGlobalList.add( "ID/PWF requires ID/SWF | ID/ED | ID/NMI"); l = new LinkedList>() ; l.add( new Pair("ID/PWF requires" , new AbstractSystemActorProfiles( "ID","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("ID/PWF requires" , new AbstractSystemActorProfiles( "ID","ED" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("ID/PWF requires" , new AbstractSystemActorProfiles( "ID","NMI" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 2.5 Product Implementations rule "PPM/PWF requires IM/PWF || OF/PWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PWF', actor.keyword == 'PPM') not AbstractSystemActorProfiles (actor.keyword == 'IM' || == 'OF', integrationProfile.keyword == 'PWF') then # myGlobalList.add( "The Post-Processing Manager shall be grouped with either an Image Manager or a Department System Scheduler."); l = new LinkedList>() ; l.add( new Pair("PPM/PWF requires" , new AbstractSystemActorProfiles( "IM","PWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("PPM/PWF requires" , new AbstractSystemActorProfiles( "OF","PWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 2.5 Product Implementations rule "EC/PWF requires ID/PWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'PWF', actor.keyword == 'EC') not AbstractSystemActorProfiles (actor.keyword == "EC", integrationProfile.keyword == 'PWF') then # myGlobalList.add( "The Evidence Creator participating in Post-Processing Workflow shall be grouped with an Image Display."); l = new LinkedList>() ; l.add( new Pair("EC/PWF requires" , new AbstractSystemActorProfiles( "ID","PWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### RWF #### ## From TF1 Table 13.1-1 rule "RC/RWF requires RRD/RWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'RWF', actor.keyword == 'RC') not AbstractSystemActorProfiles (actor.keyword == "RRD", integrationProfile.keyword == 'RWF') then #myGlobalList.add( "RC/RWF requires RRD/RWF"); l = new LinkedList>() ; l.add( new Pair("RC/RWF requires" , new AbstractSystemActorProfiles( "RRD","RWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 2.5 Product Implementations rule "IM|OF/RWF requires PPSM/RWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'RWF', actor.keyword == 'IM' || == 'OF') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'RWF') then #myGlobalList.add( "IM|OF/RWF requires PPSM/RWF"); l = new LinkedList>() ; l.add( new Pair("IM|OF/RWF requires" , new AbstractSystemActorProfiles( "PPSM","RWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "OF/RWF requires OF/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'RWF', actor.keyword == 'OF') not AbstractSystemActorProfiles (actor.keyword == "OF", integrationProfile.keyword == 'SWF') then # myGlobalList.add( "OF/RWF requires OF/SWF"); l = new LinkedList>() ; l.add( new Pair("OF/RWF requires" , new AbstractSystemActorProfiles( "OF","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "IM/RWF requires IM/SWF" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'RWF', actor.keyword == 'IM') not AbstractSystemActorProfiles (actor.keyword == "IM", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "IM/RWF requires IM/SWF"); l = new LinkedList>() ; l.add( new Pair("IM/RWF requires" , new AbstractSystemActorProfiles( "IM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "RRD/RWF requires RRD/SINR" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'RWF', actor.keyword == 'RRD') not AbstractSystemActorProfiles (actor.keyword == "RRD", integrationProfile.keyword == 'SINR') then #myGlobalList.add( "RRD/RWF requires RRD/SINR"); l = new LinkedList>() ; l.add( new Pair("RRD/RWF requires" , new AbstractSystemActorProfiles( "RRD","SINR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF1 Table 2-1 rule "RM/RWF requires RM/SINR" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'RWF', actor.keyword == 'RM') not AbstractSystemActorProfiles (actor.keyword == "RM", integrationProfile.keyword == 'SINR') then #myGlobalList.add( "RM/RWF requires RM/SINR"); l = new LinkedList>() ; l.add( new Pair("RM/RWF requires" , new AbstractSystemActorProfiles( "RM","SINR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### SEC #### #THE PROFILE DEPRECATED #### SINR #### #CURRENTLY NO RULES FOUND #### SWF #### rule "OF|IM/SWF requires PPSM/SWF" when $of : AbstractSystemActorProfiles ( integrationProfile.keyword == 'SWF', actor.keyword == 'OF' || == 'IM') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'SWF') then #myGlobalList.add( "OF|IM/SWF requires PPSM/SWF"); l = new LinkedList>() ; l.add( new Pair("OF|IM/SWF requires" , new AbstractSystemActorProfiles( "PPSM","SWF" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### TCE #### #CURRENTLY NO RULES FOUND #### XDS-I #### ##FROM KUDU rule "IMG_DOC_CONSUMER/XDS-I requires DOC_CONSUMER/XDS.a" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'IMG_DOC_CONSUMER') not AbstractSystemActorProfiles (actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a') then #myGlobalList.add( "IMG_DOC_CONSUMER/XDS-I requires DOC_CONSUMER/XDS.a"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_CONSUMER/XDS-I requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "IMG_DOC_SOURCE/XDS-I requires DOC_SOURCE/XDS.a" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'IMG_DOC_SOURCE') not AbstractSystemActorProfiles (actor.keyword == "DOC_SOURCE", integrationProfile.keyword == 'XDS.a') then #myGlobalList.add( "IMG_DOC_SOURCE/XDS-I requires DOC_SOURCE/XDS.a"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_SOURCE/XDS-I requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ##FROM KUDU rule "DOC_CONSUMER/XDS-I requires DOC_CONSUMER/XDS.a" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'DOC_CONSUMER') not AbstractSystemActorProfiles (actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a') then #myGlobalList.add( "DOC_CONSUMER/XDS-I requires DOC_CONSUMER/XDS.a"); l = new LinkedList>() ; l.add( new Pair("DOC_CONSUMER/XDS-I requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ##FROM KUDU rule "DOC_REGISTRY/XDS-I requires DOC_REGISTRY/XDS.a" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'DOC_REGISTRY') not AbstractSystemActorProfiles (actor.keyword == "DOC_REGISTRY", integrationProfile.keyword == 'XDS.a') then # myGlobalList.add( "DOC_REGISTRY/XDS-I requires DOC_REGISTRY/XDS.a"); l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/XDS-I requires" , new AbstractSystemActorProfiles( "DOC_REGISTRY","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ##FROM KUDU rule "DOC_REPOSITORY/XDS-I requires DOC_REPOSITORY/XDS.a" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'DOC_REPOSITORY') not AbstractSystemActorProfiles (actor.keyword == "DOC_REPOSITORY", integrationProfile.keyword == 'XDS.a') then #myGlobalList.add( "DOC_REPOSITORY/XDS-I requires DOC_REPOSITORY/XDS.a"); l = new LinkedList>() ; l.add( new Pair("DOC_REPOSITORY/XDS-I requires" , new AbstractSystemActorProfiles( "DOC_REPOSITORY","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## FROM KUDU /* Moore, 2008.08.01, I removed this rule, you will get it from the XDS.a requirement rule "DOC_CONSUMER|DOC_REGISTRY|DOC_REPOSITORY/XDS-I requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'DOC_CONSUMER' || == 'DOC_REGISTRY' || == 'DOC_REPOSITORY') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT') then myGlobalList.add( "DOC_CONSUMER|DOC_REGISTRY|DOC_REPOSITORY/XDS-I requires TIME_CLIENT/CT"); end */ ## FROM KUDU #Steve Ding add SA/ATNA /* Moore, 2008.08.01, I removed this rule, you will get it from the XDS.a requirement rule "DOC_CONSUMER|DOC_REGISTRY|DOC_REPOSITORY/XDS-I requires SN|SA/ATNA" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS-I', actor.keyword == 'DOC_CONSUMER' || == 'DOC_REGISTRY' || == 'DOC_REPOSITORY') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA') then myGlobalList.add( "DOC_CONSUMER|DOC_REGISTRY|DOC_REPOSITORY/XDS-I requires SN|SA/ATNA"); end */ ########################################################## #################### Cardiology Rules #################### ########################################################## #### CATH #### ## IHE Cardiology Technical Framework, vol. I: Integration Profiles Section 2.5 rule "MOD|OF/CATH requires TIME_CLIENT/CT" when $xds : AbstractSystemActorProfiles (actor.keyword == "MOD" || == "OF", integrationProfile.keyword == 'CATH') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "MOD|OF/CATH requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("MOD|OF/CATH requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## IHE Cardiology Technical Framework, vol. I: Integration Profiles Section 2.5 rule "IM|OF/CATH requires PPSM/CATH" when $xds : AbstractSystemActorProfiles (actor.keyword == "IM" || == "OF", integrationProfile.keyword == 'CATH') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'CATH' ) then #myGlobalList.add( "IM|OF/CATH requires PPSM/CATH"); l = new LinkedList>() ; l.add( new Pair("IM|OF/CATH requires" , new AbstractSystemActorProfiles( "PPSM","CATH" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### DRPT #### ## IHE Technical Framework Supplement �˽ Displayable Reports Revision Table 2-1 rule "RRP/DRPT requires INFO_SRC/RID and PDC/PAM" when $xds : AbstractSystemActorProfiles (actor.keyword == "RRP", integrationProfile.keyword == 'DRPT') not (AbstractSystemActorProfiles(actor.keyword == "INFO_SRC", integrationProfile.keyword == 'RID') and AbstractSystemActorProfiles(actor.keyword == "PDC", integrationProfile.keyword == 'PAM')) then # myGlobalList.add( "RRP/DRPT requires INFO_SRC/RID and PDC/PAM"); l = new LinkedList>() ; l.add( new Pair("RRP/DRPT requires" , new AbstractSystemActorProfiles( "INFO_SRC","RID" , null , entityManager ) ) ) ; l.add( new Pair("and" , new AbstractSystemActorProfiles( "PDC","PAM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### FROM KUDU ## need confirm from Eric when he is back on 18th because it is conditional. so does RRP/DRPT requires RM/DRPT /* Removed by Lynn's request rule "RM/DRPT requires RRP/DRPT" when $xds : AbstractSystemActorProfiles (actor.keyword == "RM", integrationProfile.keyword == 'DRPT') not AbstractSystemActorProfiles (actor.keyword == "RRP", integrationProfile.keyword == 'DRPT' ) then myGlobalList.add( "RM/DRPT requires RRP/DRPT"); end */ #### ECG #### ## IHE Cardiology Technical Framework, vol. I: Integration Profiles Table 2-1 /* removed by Lynn's request rule "DISPLAY/ECG require DISPLAY/RID" when $xds : AbstractSystemActorProfiles (actor.keyword == "DISPLAY", integrationProfile.keyword == 'ECG') not AbstractSystemActorProfiles (actor.keyword == "DISPLAY", integrationProfile.keyword == 'RID' ) then myGlobalList.add( "DISPLAY/ECG require DISPLAY/RID"); end */ /* removed by Lynn's request ## IHE Cardiology Technical Framework, vol. I: Integration Profiles Table 2-1 rule "INFO_SRC/ECG require INFO_SRC/RID" when $xds : AbstractSystemActorProfiles (actor.keyword == "INFO_SRC", integrationProfile.keyword == 'ECG') not AbstractSystemActorProfiles (actor.keyword == "INFO_SRC", integrationProfile.keyword == 'RID' ) then myGlobalList.add( "INFO_SRC/ECG require INFO_SRC/RID"); end */ #### ECHO #### ## IHE Cardiology Technical Framework, vol. I: Integration Profiles Section 2.5 rule "IM|OF/ECHO requires PPSM/ECHO" when $xds : AbstractSystemActorProfiles (actor.keyword == "IM" || == "OF", integrationProfile.keyword == 'ECHO') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'ECHO' ) then #myGlobalList.add( "IM|OF/ECHO requires PPSM/ECHO"); l = new LinkedList>() ; l.add( new Pair("IM|OF/ECHO requires" , new AbstractSystemActorProfiles( "PPSM","ECHO" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### ED #### #CURRENTLY NO RULES FOUND ############################################################ ######################## Eyecare ########################### ############################################################ #################### CHG ######################## # Currently no rules found #################### ECDR ######################## # Currently no rules found #################### ECED ####################### # Currently no rules found ################## EYECARE ###################### # IHE Eye Care Technical Framework, vol. I: Integration Profiles Section 2.5 rule "OF|IM/EYECARE requires PPSM/EYECARE" when $of : AbstractSystemActorProfiles ( actor.keyword == 'OF' || == 'IM', integrationProfile.keyword == 'EYECARE') not AbstractSystemActorProfiles (actor.keyword == "PPSM", integrationProfile.keyword == 'EYECARE') then #myGlobalList.add( "OF|IM/EYECARE requires PPSM/EYECARE"); l = new LinkedList>() ; l.add( new Pair("OF|IM/EYECARE requires" , new AbstractSystemActorProfiles( "PPSM","EYECARE" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ######## ITI Rules ########### rule "CONTENT_CREATOR|CONTENT_CONSUMER/XDS-SD requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", integrationProfile.keyword == 'XDS-SD') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "CONTENT_CREATOR|CONTENT_CONSUMER/XDS-SD requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XDS-SD requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XDS-SD requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## ATNA ## # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "SN|SA|ARR/ATNA requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA" || == "ARR" , integrationProfile.keyword == 'ATNA') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "SN|SA|ARR/ATNA requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("SN|SA|ARR/ATNA requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## BPPC ## # Reference: IHE TF Supplement BPPC Vol 1 Section 19.4 rule "CONTENT_CONSUMER/BPPC requires CONTENT_CONSUMER/XDS-SD" when $xds : AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'BPPC') not AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'XDS-SD' ) then #myGlobalList.add( "CONTENT_CONSUMER/BPPC requires CONTENT_CONSUMER/XDS-SD"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/BPPC requires" , new AbstractSystemActorProfiles( "CONTENT_CONSUMER","XDS-SD" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## CT ## # None ## EUA ## # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "CONTXT_MGR|KER_AUTH_SVR|KER_SVR|USER_CONTXT_PARTICIPANT|CAA/EUA requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "CONTXT_MGR" || == "KER_AUTH_SVR" || == "KER_SVR" || == "USER_CONTXT_PARTICIPANT" || == "CAA", integrationProfile.keyword == 'EUA') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "CONTXT_MGR|KER_AUTH_SVR|KER_SVR|USER_CONTXT_PARTICIPANT|CAA/EUA requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CONTXT_MGR|KER_AUTH_SVR|KER_SVR|USER_CONTXT_PARTICIPANT|CAA/EUA requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## PIX ## # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "PAT_IDENTITY_CONSUMER|PAT_IDENTITY_SRC|PAT_IDENTITY_X_REF_MGR/PIX requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "PAT_IDENTITY_CONSUMER" || == "PAT_IDENTITY_SRC" || == "PAT_IDENTITY_X_REF_MGR", integrationProfile.keyword == 'PIX') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "PAT_IDENTITY_CONSUMER|PAT_IDENTITY_SRC|PAT_IDENTITY_X_REF_MGR/PIX requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("PAT_IDENTITY_CONSUMER|PAT_IDENTITY_SRC|PAT_IDENTITY_X_REF_MGR/PIX requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## PIXV3 ## # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "PAT_IDENTITY_CONSUMER|PAT_IDENTITY_SRC|PAT_IDENTITY_X_REF_MGR/PIXV3 requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "PAT_IDENTITY_CONSUMER" || == "PAT_IDENTITY_SRC" || == "PAT_IDENTITY_X_REF_MGR", integrationProfile.keyword == 'PIXV3') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "PAT_IDENTITY_CONSUMER|PAT_IDENTITY_SRC|PAT_IDENTITY_X_REF_MGR/PIXV3 requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("PAT_IDENTITY_CONSUMER|PAT_IDENTITY_SRC|PAT_IDENTITY_X_REF_MGR/PIXV3 requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## PAM ## # None ## XDR ## # Reference:IHE TF Supplement XDR Table 2.1 rule "DOC_RECIPIENT|DOC_SOURCE/XDR requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "DOC_RECIPIENT" || == "DOC_SOURCE", integrationProfile.keyword == 'XDR') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DOC_RECIPIENT|DOC_SOURCE/XDR requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DOC_RECIPIENT|DOC_SOURCE/XDR requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DOC_RECIPIENT|DOC_SOURCE/XDR requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## XCA ## # Reference: IHE TF Supplement XCA 18.4.2 rule "INIT_GATEWAY|RESP_GATEWAY/XCA requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "INIT_GATEWAY" || == "RESP_GATEWAY", integrationProfile.keyword == 'XCA') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then # myGlobalList.add( "INIT_GATEWAY|RESP_GATEWAY/XCA requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("INIT_GATEWAY|RESP_GATEWAY/XCA requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("INIT_GATEWAY|RESP_GATEWAY/XCA requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end # Reference: IHE TF Supplement XCA 18.4.2 rule "INIT_GATEWAY|RESP_GATEWAY/XCA requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "INIT_GATEWAY" || == "RESP_GATEWAY", integrationProfile.keyword == 'XCA') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then # myGlobalList.add( "INIT_GATEWAY|RESP_GATEWAY/XCA requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("INIT_GATEWAY|RESP_GATEWAY/XCA requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## XDS.a XDS.b ## # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "XDS.b requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS.b') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT') then #myGlobalList.add( "XDS.b requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("XDS.b requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "XDS.a requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS.a') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT') then #myGlobalList.add( "XDS.a requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("XDS.a requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "XDS.a requires SN|SA/ATNA" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS.a') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA') then #myGlobalList.add( "XDS.a requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("XDS.a requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("XDS.a requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "XDS.b requires SN/SA|SA/ATNA" when AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS.b') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA') then #myGlobalList.add( "XDS.b requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("XDS.b requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("XDS.b requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## XDS-SD ## # Reference: IHE ITI TF Supplement XDS-SD 7.1.1 rule "CONTENT_CREATOR/XDS-SD requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM" when AbstractSystemActorProfiles ( actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'XDS-SD') not ( AbstractSystemActorProfiles ( actor.keyword == "DOC_SOURCE", integrationProfile.keyword == 'XDS.a' || == 'XDS.b' || == 'XDR') or AbstractSystemActorProfiles ( actor.keyword == "PMC", integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "CONTENT_CREATOR/XDS-SD requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-SD requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-SD requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-SD requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-SD requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "CONTENT_CONSUMER/XDS-SD requires DOC_CONSUMER|XDS.a/XDS.b or DOC_RECIPIENT/XDR or PMI/XDM" when AbstractSystemActorProfiles ( actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'XDS-SD') not ( AbstractSystemActorProfiles ( actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a' || == 'XDS.b' ) or AbstractSystemActorProfiles ( actor.keyword == "DOC_RECIPIENT", integrationProfile.keyword == 'XDR') or AbstractSystemActorProfiles ( actor.keyword == "PMI", integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "CONTENT_CONSUMER/XDS-SD requires DOC_CONSUMER/XDS.a|XDS.b or DOC_RECIPIENT/XDR or PMI/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-SD requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-SD requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-SD requires" , new AbstractSystemActorProfiles( "DOC_RECIPIENT","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-SD requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## XDM ## # Reference IHE ITI Supplement XDM TF 1.7 rule "PMC|PMI/XDM requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "PMC" || == "PMI", integrationProfile.keyword == 'XDM') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA') then #myGlobalList.add( "XDM requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("XDM requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("XDM requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## DSG ## # No Rules ## PDQ ## # No Rules ## PDQV3 ## # No Rules ## NAV ## # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 #rule "NAV requires XDS.a|XDS.b" # when # AbstractSystemActorProfiles ( integrationProfile.keyword == 'NAV') # not AbstractSystemActorProfiles ( integrationProfile.keyword == 'XDS.a' || == 'XDS.b' ) # then # myGlobalList.add( "NAV requires XDS.a|XDS.b"); #end ## PSA ## # No Rules ## PWP ## # No Rules ## RFD ## # No Rules ## RID ## # No Rules ## XUA ## # No Rules ## CM ## # Reference: IHE PCC Care Management CM Supplement TI - Table 2.11 rule "CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "CARE_MGR" || == "CLIN_DATA_SOURCE" || == "GUIDLINE_MGR", integrationProfile.keyword == 'CM') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then # myGlobalList.add( "CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "CARE_MGR" || == "CLIN_DATA_SOURCE" || == "GUIDLINE_MGR", integrationProfile.keyword == 'CM') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA') then # myGlobalList.add( "CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CARE_MGR|CLIN_DATA_SOURCE|GUIDLINE_MGR|CM requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## IC ## # Reference: IHE PCC TF Supplement - Immunization Content - Table 3.4 rule "CONTENT_CONSUMER|CONTENT_CREATOR/IC requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER" || == "CONTENT_CREATOR", integrationProfile.keyword == 'IC') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "CONTENT_CONSUMER/CONTENT_CREATOR|IC requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/CONTENT_CREATOR|IC requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "CONTENT_CREATOR|CONTENT_CONSUMER/IC requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", integrationProfile.keyword == 'IC') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "CONTENT_CREATOR|CONTENT_CONSUMER/XDS-MS requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XDS-MS requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR|CONTENT_CONSUMER/XDS-MS requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## PIV ## # Reference: IHE Technical Framework - Point-of-Care Infusion Verification rule "DEV_OBS_FILTER|DEV_OBS_REPORTER|IOC|IOP/PIV requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actor.keyword == "DEV_OBS_FILTER" || == "DEV_OBS_REPORTER" || == "IOC" || == "IOP" , integrationProfile.keyword == 'PIV') not AbstractSystemActorProfiles (actor.keyword == "TIME_CLIENT", integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "DEV_OBS_FILTER|DEV_OBS_REPORTER|IOC|IOP/PIV requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DEV_OBS_FILTER|DEV_OBS_REPORTER|IOC|IOP/PIV requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## ACM ## # No Rules ## CRD ## # No Rules #### DRR #### # Reference: DRR TI Supplement Vol 1 Table 2-1 rule "REFERRAL_REQUESTOR/DRR requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM" when AbstractSystemActorProfiles ( actor.keyword == "REFERRAL_REQUESTOR", integrationProfile.keyword == 'DRR') not ( AbstractSystemActorProfiles ( actor.keyword == "DOC_SOURCE", integrationProfile.keyword == 'XDS.a' || == 'XDS.b' || == 'XDR') or AbstractSystemActorProfiles ( actor.keyword == "PMC", integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "REFERRAL_REQUESTOR/DRR requires DOC_SOURCE/XDS.a|XDS.b|XDR or PMC/XDM"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "REFERRAL_REQUESTOR/DRR requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "REFERRAL_REQUESTOR", integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then # myGlobalList.add( "REFERRAL_REQUESTOR/DRR requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "REFERRAL_REQUESTOR/DRR requires CONTENT_CREATOR/XDS-MS" when AbstractSystemActorProfiles (actor.keyword == "REFERRAL_REQUESTOR", integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actor.keyword == "CONTENT_CREATOR", integrationProfile.keyword == 'XDS-MS' ) then #myGlobalList.add( "REFERRAL_REQUESTOR/DRR requires CONTENT_CREATOR/XDS-MS"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_REQUESTOR/DRR requires" , new AbstractSystemActorProfiles( "CONTENT_CREATOR","XDS-MS" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "REFERRAL_DISPATCHER/DRR requires DOC_CONSUMER/XDS.a|XDS.b" when AbstractSystemActorProfiles ( actor.keyword == "REFERRAL_DISPATCHER", integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles ( actor.keyword == "DOC_CONSUMER", integrationProfile.keyword == 'XDS.a' || == 'XDS.b') then # myGlobalList.add( "REFERRAL_DISPATCHER/DRR requires DOC_CONSUMER/XDS.a|XDS.b"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.a" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "REFERRAL_DISPATCHER/DRR requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "REFERRAL_DISPATCHER", integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "REFERRAL_DISPATCHER/DRR requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "REFERRAL_DISPATCHER/DRR requires CONTENT_CONSUMER/XDS-MS" when AbstractSystemActorProfiles (actor.keyword == "REFERRAL_DISPATCHER", integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actor.keyword == "CONTENT_CONSUMER", integrationProfile.keyword == 'XDS-MS' ) then #myGlobalList.add( "REFERRAL_DISPATCHER/DRR requires CONTENT_CONSUMER/XDS-MS"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "CONTENT_CONSUMER","XDS-MS" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "REFERRAL_DISPATCHER/DRR requires DOC_RECIPIENT/XDR or PMI/XDM" when AbstractSystemActorProfiles ( actor.keyword == "REFERRAL_DISPATCHER", integrationProfile.keyword == 'DRR') not ( AbstractSystemActorProfiles ( actor.keyword == "DOC_RECIPIENT", integrationProfile.keyword == 'XDR') or AbstractSystemActorProfiles ( actor.keyword == "PMI", integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "REFERRAL_DISPATCHER/DRR requires DOC_RECIPIENT/XDR or PMI/XDM"); l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "DOC_RECIPIENT","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("REFERRAL_DISPATCHER/DRR requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### SVS #### # Reference: SVS TI Supplement Vol 1 Table 2-1 and Vol 2 3.48.6 rule "VALUE_SET_REPOSITORY/SVS requires SN|SA/ATNA" when AbstractSystemActorProfiles (actor.keyword == "VALUE_SET_REPOSITORY", integrationProfile.keyword == 'SVS') not AbstractSystemActorProfiles (actor.keyword == "SN" || == "SA", integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "VALUE_SET_REPOSITORY/SVS requires SN|SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("VALUE_SET_REPOSITORY/SVS requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("VALUE_SET_REPOSITORY/SVS requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end