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 (actorIntegrationProfile.actor.keyword == "CLIN_DATA_CONSUMER" || == "CLIN_DATA_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'QED') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'SN' || == 'SA', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CLIN_DATA_CONSUMER" || == "CLIN_DATA_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'QED') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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.2anager rule "CONTENT_CREATOR/APR|EDES|XPHR|EDR|IC|FSA requires SN|SA/ATNA" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR", actorIntegrationProfile.integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR'|| == 'IC' || =='FSA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'SN' || == 'SA', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR", actorIntegrationProfile.integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR' || == 'IC' || =='FSA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'SN' || == 'SA', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'APR' || == 'EDES' || == 'XPHR' || == 'EDR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'PPHP') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'PPHP') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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: Content Profile requires XD* Transport #### rule "CONTENT_CREATOR/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires DOC_SOURCE/XDS.b|XDR or PMC/XDM" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR", actorIntegrationProfile.integrationProfile.keyword == 'XDS-MS' || == 'EDR' || == 'XPHR' || == 'APS' || == 'APHP' || == 'APE' || == 'APL' || == 'TN' || == 'NN' || == 'CTNN' || == 'EDPN' || == 'LDHP' || == 'LDS' || == 'MDS' || == 'IC' || == 'ETC' || == 'PPOC' || == 'XDS-SD' || == 'BPPC') not (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' || == 'XDR' ) or AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMC", actorIntegrationProfile.integrationProfile.keyword == 'XDM' )) then #myGlobalList.add( "A CONTENT_CREATOR for any IHE Content Profile: XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC, also needs to implement DOC_SOURCE/XDS.b|XDR or PMI/XDM"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CREATOR/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### Manager Rules - Content Profile requires XD* Transport #### rule "CONTENT_CONSUMER/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires DOC_CONSUMER/XDS.b or PMI/XDM or DOC_RECIPIENT/XDR" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS-MS' || == 'EDR' || == 'XPHR' || == 'APS' || == 'APHP' || == 'APE' || == 'APL' || == 'TN' || == 'NN' || == 'CTNN' || == 'EDPN' || == 'LDHP' || == 'LDS' || == 'MDS' || == 'IC' || == 'ETC' || == 'PPOC' || == 'XDS-SD' || == 'BPPC') not (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' ) or AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMI", actorIntegrationProfile.integrationProfile.keyword == 'XDM' ) or AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_RECIPIENT", actorIntegrationProfile.integrationProfile.keyword == 'XDR' )) then # myGlobalList.add( "A CONTENT_CONSUMER for any IHE Content Profile: XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC, also needs to implement DOC_CONSUMER/XDS.b or PMI/XDM or DOC_RECIPIENT/XDR"); l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("CONTENT_CONSUMER/XDS-MS|EDR|XPHR|APS|APHP|APE|APL|TN|NN|CTNN|EDPN|LDHP|LDS|MDS|IC|ETC|PPOC|XDS-SD|BPPC requires" , new AbstractSystemActorProfiles( "DOC_RECIPIENT","XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### 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 (actorIntegrationProfile.actor.keyword == "CARE_MGR" || == "CLIN_DATA_SOURCE" || == "GUIDLINE_MGR", actorIntegrationProfile.integrationProfile.keyword == 'CM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CARE_MGR" || == "CLIN_DATA_SOURCE" || == "GUIDLINE_MGR", actorIntegrationProfile.integrationProfile.keyword == 'CM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER" || == "CONTENT_CREATOR", actorIntegrationProfile.integrationProfile.keyword == 'IC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'IC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 ############################## ########## PCD ############### ############################## #### DEC #### ## Reference: PCD TF1 2.1-Table 1 rule "*/DEC requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'DEC', actorIntegrationProfile.actor.keyword == 'DEV_OBS_CONSUMER' || == 'DEV_OBS_FILTER' || == 'DEV_OBS_REPORTER') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 #### 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 (actorIntegrationProfile.actor.keyword == "DEV_OBS_FILTER" || == "DEV_OBS_REPORTER" || == "IOC" || == "IOP" , actorIntegrationProfile.integrationProfile.keyword == 'PIV') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 ################################################### ################### LAB ########################### ################################################### #### LBL #### #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "LIB/LBL requires OF|OP/LTW" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'LIB', actorIntegrationProfile.integrationProfile.keyword == 'LBL') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'OF' || == 'OP', actorIntegrationProfile.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 #### #No Rules #### LDA #### #IHE Laboratory Technical Framework, Vol. 1: Profiles Table 3-1 rule "AM/LDA requires AM/LTW" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'AM', actorIntegrationProfile.integrationProfile.keyword == 'LDA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'AM', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == 'OF', actorIntegrationProfile.integrationProfile.keyword == 'LPOCT') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'OF', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == 'POCDM', actorIntegrationProfile.integrationProfile.keyword == 'LPOCT') not ( (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDS', actorIntegrationProfile.integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PES', actorIntegrationProfile.integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PES', actorIntegrationProfile.integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PEC', actorIntegrationProfile.integrationProfile.keyword == 'PAM')) or AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == 'OP' || == 'OF' || == 'ORT', actorIntegrationProfile.integrationProfile.keyword == 'LTW') not ( (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDS', actorIntegrationProfile.integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PES', actorIntegrationProfile.integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PES', actorIntegrationProfile.integrationProfile.keyword == 'PAM')) or (AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.integrationProfile.keyword == 'PAM') and AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PEC', actorIntegrationProfile.integrationProfile.keyword == 'PAM')) or AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == 'OP' || == 'OF' || == 'ORT', actorIntegrationProfile.integrationProfile.keyword == 'LTW') # not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'SN' || == 'SA', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == 'OP' || == 'OF' || == 'ORT', actorIntegrationProfile.integrationProfile.keyword == 'LTW') # not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'TIME_CLIENT', actorIntegrationProfile.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.b|XDR or PMC/XDM" when AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR", actorIntegrationProfile.integrationProfile.keyword == 'XD-Lab') not (AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' || == 'XDR') or AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "PMC", actorIntegrationProfile.integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "CONTENT_CREATOR/XD-Lab requires DOC_SOURCE/XDS.b|XDR or PMC/XDM"); 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.b or DOC_RECIPIENT/XDR or PMI/XDM" when AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XD-Lab') not (AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' ) or AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "DOC_RECIPIENT", actorIntegrationProfile.integrationProfile.keyword == 'XDR') or AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "PMI", actorIntegrationProfile.integrationProfile.keyword == 'XDM')) then #myGlobalList.add( "CONTENT_CONSUMER/XD-Lab requires DOC_CONSUMER/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.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 (actorIntegrationProfile.actor.keyword == 'CONTENT_CREATOR' || == 'CONTENT_CONSUMER', actorIntegrationProfile.integrationProfile.keyword == 'XD-Lab') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'SN' || == 'SA', actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == 'CONTENT_CREATOR' || == 'CONTENT_CONSUMER', actorIntegrationProfile.integrationProfile.keyword == 'XD-Lab') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'TIME_CLIENT', actorIntegrationProfile.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 #################### ######################################################### #### XDS-I.b rules #### ## Reference: RAD TF-1:2.5 and RAD TF-1:Table 2-1 rule "IMG_DOC_CONSUMER/XDS-I.b requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IMG_DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "IMG_DOC_CONSUMER/XDS-I.b requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_CONSUMER/XDS-I.b requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IMG_DOC_CONSUMER/XDS-I.b requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:2.5 and RAD TF-1:Table 2-1 rule "IMG_DOC_CONSUMER/XDS-I.b requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IMG_DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the IMG_DOC_CONSUMER/XDS-I.b, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_CONSUMER/XDS-I.b requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:2.5 and RAD TF-1:Table 2-1 rule "IMG_DOC_CONSUMER/XDS-I.b requires DOC_CONSUMER/XDS.b" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IMG_DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' ) then #myGlobalList.add( "System implements the IMG_DOC_CONSUMER/XDS-I.b, it also needs to implement DOC_CONSUMER/XDS.b"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_CONSUMER/XDS-I.b requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:Table 2-1 rule "IMG_DOC_SOURCE/XDS-I.b requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IMG_DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "IMG_DOC_SOURCE/XDS-I.b requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_SOURCE/XDS-I.b requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("IMG_DOC_SOURCE/XDS-I.b requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:2.5 and RAD TF-1:Table 2-1 rule "IMG_DOC_SOURCE/XDS-I.b requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IMG_DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the IMG_DOC_SOURCE/XDS-I.b, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("IMG_DOC_SOURCE/XDS-I.b requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:Table 2-1 rule "DOC_REPOSITORY/XDS-I.b requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REPOSITORY", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DOC_REPOSITORY/XDS-I.b requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DOC_REPOSITORY/XDS-I.b requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DOC_REPOSITORY/XDS-I.b requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:2.5 and RAD TF-1:Table 2-1 rule "DOC_REPOSITORY/XDS-I.b requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REPOSITORY", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DOC_REPOSITORY/XDS-I.b, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DOC_REPOSITORY/XDS-I.b requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Manager Rule ## rule "DOC_REPOSITORY/XDS-I.b requires DOC_REPOSITORY/XDS.b" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REPOSITORY", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REPOSITORY", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' ) then #myGlobalList.add( "System implements the DOC_REPOSITORY/XDS-I.b, it also needs to implement DOC_REPOSITORY/XDS.b"); l = new LinkedList>() ; l.add( new Pair("DOC_REPOSITORY/XDS-I.b requires" , new AbstractSystemActorProfiles( "DOC_REPOSITORY","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:Table 2-1 rule "DOC_REGISTRY/XDS-I.b requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DOC_REGISTRY/XDS-I.b requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/XDS-I.b requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/XDS-I.b requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: RAD TF-1:2.5 and RAD TF-1:Table 2-1 rule "DOC_REGISTRY/XDS-I.b requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DOC_REGISTRY/XDS-I.b, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/XDS-I.b requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Manager Rule ## rule "DOC_REGISTRY/XDS-I.b requires DOC_REGISTRY/XDS.b" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.integrationProfile.keyword == 'XDS-I.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' ) then #myGlobalList.add( "System implements the DOC_REGISTRY/XDS-I.b, it also needs to implement DOC_REGISTRY/XDS.b"); l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/XDS-I.b requires" , new AbstractSystemActorProfiles( "DOC_REGISTRY","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### ARI #### ## Reference: RAD TF1 Table 2-1 rule "ID/ARI requires ID/SWF|ID/CPI|ID/ED|ID/KIN" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'ARI', actorIntegrationProfile.actor.keyword == 'ID') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "ID", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'ARI', actorIntegrationProfile.actor.keyword == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'ARI', actorIntegrationProfile.actor.keyword == 'RRP') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RRP", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'ARI', actorIntegrationProfile.actor.keyword == 'RRD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RRD", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "OF", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'ADT') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "ADT", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'PPM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'EC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "EC", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'MOD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "MOD", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'IMPORTER') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'IMPORTER', actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'CHG', actorIntegrationProfile.actor.keyword == 'RM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RM", actorIntegrationProfile.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 #### IRWF Rules #### ## Reference: RAD TF1 Table 2-1 ## Reference: RAD TF1 Table 2-1 rule "IM|OF/IRWF requires PPSM/IRWF" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'IRWF', actorIntegrationProfile.actor.keyword == 'IM' || == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 #### IRWF Rules with Option dependency #### ## Reference: RAD TF1 Table 21.2-1 rule "IMPORTER/IRWF/UNSCHED_IMPORT requires PDC/PDQ" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'IRWF', actorIntegrationProfile.actor.keyword == 'IMPORTER', integrationProfileOption != null && (integrationProfileOption.keyword == 'UNSCHED_IMPORT')) not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'PDC', actorIntegrationProfile.integrationProfile.keyword == 'PDQ' ) then l = new LinkedList>() ; l.add( new Pair("IMPORTER/IRWF/UNSCHED_IMPORT requires" , new AbstractSystemActorProfiles( "PDC","PDQ" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### IRWF Rules on Required Options #### ## Reference: RAD TF1 Table 21.2-1 rule "IMPORTER/IRWF requires option SCHED_IMPORT or UNSCHED_IMPORT" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'IRWF', actorIntegrationProfile.actor.keyword == 'IMPORTER') not AbstractSystemActorProfiles (integrationProfileOption != null && (integrationProfileOption.keyword == 'SCHED_IMPORT' || == 'UNSCHED_IMPORT')) then l = new LinkedList>() ; l.add( new Pair("IMPORTER/IRWF requires" , new AbstractSystemActorProfiles( "IMPORTER","IRWF" , "SCHED_IMPORT" , entityManager ) ) ) ; l.add( new Pair("IMPORTER/IRWF requires" , new AbstractSystemActorProfiles( "IMPORTER","IRWF" , "UNSCHED_IMPORT" , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### CPI #### #NO RULES #### ED #### #NO RULES #### FUS #### #NO RULES #### KIN #### #NO RULES #### MAMMO #### #NO RULES #### MAWF #### #IHE Rad Technical Framework Supplement - MAWF Profile Draft for Trial Implementation Table 2-1 rule "OF/MAWF requires OF/SWF" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'MAWF', actorIntegrationProfile.actor.keyword == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF', actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'MAWF', actorIntegrationProfile.actor.keyword == 'MOD') not (AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF' , actorIntegrationProfile.actor.keyword == "MOD") and AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'MAMMO' , actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'MAWF', actorIntegrationProfile.actor.keyword == 'IM') not (AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF' , actorIntegrationProfile.actor.keyword == "IM") and AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'MAMMO' , actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'MAWF', actorIntegrationProfile.actor.keyword == 'ID') not (AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF', actorIntegrationProfile.actor.keyword == "ID") and AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'MAMMO' , actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'MAWF', actorIntegrationProfile.actor.keyword == 'PPSM') not AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF', actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'MAWF', actorIntegrationProfile.actor.keyword == 'EC') not (AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF' , actorIntegrationProfile.actor.keyword == "EC") and AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'MAMMO' , actorIntegrationProfile.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 #### #NO RULES #### 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 ( actorIntegrationProfile.integrationProfile.keyword == 'PDI', actorIntegrationProfile.actor.keyword == 'PC') # not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'ID', actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PDI', actorIntegrationProfile.actor.keyword == 'PMI') # not AbstractSystemActorProfiles ((actorIntegrationProfile.integrationProfile.keyword == 'ED' && actorIntegrationProfile.actor.keyword == 'EC') || # (actorIntegrationProfile.integrationProfile.keyword == 'SWF' || == 'KIN' || == 'ED' && actorIntegrationProfile.actor.keyword == 'MOD') || # (actorIntegrationProfile.integrationProfile.keyword == 'SWF' || == 'CPI' || == 'KIN' || == 'ED' && actorIntegrationProfile.actor.keyword == 'IM') || # (actorIntegrationProfile.integrationProfile.keyword == 'SINR' && actorIntegrationProfile.actor.keyword == 'RC' || == 'RM' || == 'RRP') || # (actorIntegrationProfile.integrationProfile.keyword == 'IRWF' && actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PGP', actorIntegrationProfile.actor.keyword == 'IM' || == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PGP', actorIntegrationProfile.actor.keyword == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "ID", actorIntegrationProfile.integrationProfile.keyword == 'CPI') then myGlobalList.add( "IM/PGP requires ID/CPI"); end */ ## Reference: RAD TF1 Table 2-1 rule "MOD/PGP requires MOD/CPI" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'PGP', actorIntegrationProfile.actor.keyword == 'MOD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "MOD", actorIntegrationProfile.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 ## 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 ( actorIntegrationProfile.integrationProfile.keyword == 'PGP', actorIntegrationProfile.actor.keyword == 'OF') not (AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF', actorIntegrationProfile.actor.keyword == "OF") and AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'CPI', actorIntegrationProfile.actor.keyword == "ID") and AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'ARI', actorIntegrationProfile.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 ## 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 ( actorIntegrationProfile.integrationProfile.keyword == 'PGP', actorIntegrationProfile.actor.keyword == 'IM') not (AbstractSystemActorProfiles (actorIntegrationProfile.integrationProfile.keyword == 'SWF', actorIntegrationProfile.actor.keyword == "IM") and AbstractSystemActorProfiles(actorIntegrationProfile.integrationProfile.keyword == 'CPI', actorIntegrationProfile.actor.keyword == 'IM') and AbstractSystemActorProfiles(actorIntegrationProfile.integrationProfile.keyword == 'CPI', actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'OF' || == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'ADT') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "ADT", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'OP') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "OP", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "OF", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'RM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PIR', actorIntegrationProfile.actor.keyword == 'MOD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "MOD", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PWF', actorIntegrationProfile.actor.keyword == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "OF", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PWF', actorIntegrationProfile.actor.keyword == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PWF', actorIntegrationProfile.actor.keyword == 'EC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "EC", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PWF', actorIntegrationProfile.actor.keyword == 'ID') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "ID", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PWF', actorIntegrationProfile.actor.keyword == 'PPM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == 'IM' || == 'OF', actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'PWF', actorIntegrationProfile.actor.keyword == 'EC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "EC", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'RWF', actorIntegrationProfile.actor.keyword == 'RC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RRD", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'RWF', actorIntegrationProfile.actor.keyword == 'IM' || == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'RWF', actorIntegrationProfile.actor.keyword == 'OF') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "OF", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'RWF', actorIntegrationProfile.actor.keyword == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "IM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'RWF', actorIntegrationProfile.actor.keyword == 'RRD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RRD", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'RWF', actorIntegrationProfile.actor.keyword == 'RM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RM", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'SWF', actorIntegrationProfile.actor.keyword == 'OF' || == 'IM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 #### #No rules #### BIR #### #No rules #### PERF #### #No rules #### DIFF #### #No rules #### XDS-I #### ##FROM KUDU /* Felhofer 2008-08-05: XDS-I is deprecated rule "IMG_DOC_CONSUMER/XDS-I requires DOC_CONSUMER/XDS.a" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'IMG_DOC_CONSUMER') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'IMG_DOC_SOURCE') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_SOURCE", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'DOC_CONSUMER') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'DOC_REGISTRY') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'DOC_REPOSITORY') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REPOSITORY", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'DOC_CONSUMER' || == 'DOC_REGISTRY' || == 'DOC_REPOSITORY') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 ( actorIntegrationProfile.integrationProfile.keyword == 'XDS-I', actorIntegrationProfile.actor.keyword == 'DOC_CONSUMER' || == 'DOC_REGISTRY' || == 'DOC_REPOSITORY') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "MOD" || == "OF", actorIntegrationProfile.integrationProfile.keyword == 'CATH') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "IM" || == "OF", actorIntegrationProfile.integrationProfile.keyword == 'CATH') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "RRP", actorIntegrationProfile.integrationProfile.keyword == 'DRPT') not (AbstractSystemActorProfiles(actorIntegrationProfile.actor.keyword == "INFO_SRC", actorIntegrationProfile.integrationProfile.keyword == 'RID') and AbstractSystemActorProfiles(actorIntegrationProfile.actor.keyword == "PDC", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "RM", actorIntegrationProfile.integrationProfile.keyword == 'DRPT') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RRP", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "DISPLAY", actorIntegrationProfile.integrationProfile.keyword == 'ECG') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DISPLAY", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "INFO_SRC", actorIntegrationProfile.integrationProfile.keyword == 'ECG') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "INFO_SRC", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "IM" || == "OF", actorIntegrationProfile.integrationProfile.keyword == 'ECHO') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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-CARD #### #NO RULES ############################################################ ######################## Eyecare ########################### ############################################################ #### EC-CHG #### # No Rules #### ECDR #### # No rules #### 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 ( actorIntegrationProfile.actor.keyword == 'OF' || == 'IM', actorIntegrationProfile.integrationProfile.keyword == 'EYECARE') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PPSM", actorIntegrationProfile.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 ########### ############################## #### XDS-SD Rules #### rule "CONTENT_CREATOR|CONTENT_CONSUMER/XDS-SD requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR" || == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS-SD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 rules #### # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "SN|SA|ARR/ATNA requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA" || == "ARR" , actorIntegrationProfile.integrationProfile.keyword == 'ATNA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 rules #### # Reference: IHE TF Supplement BPPC Vol 1 Section 19.4 rule "CONTENT_CONSUMER/BPPC requires CONTENT_CONSUMER/XDS-SD" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'BPPC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.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 rule "DOC_CONSUMER/BPPC requires DOC_CONSUMER/XDS.b" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'BPPC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' ) then #myGlobalList.add( "DOC_CONSUMER/BPPC requires DOC_CONSUMER/XDS.b"); l = new LinkedList>() ; l.add( new Pair("DOC_CONSUMER/BPPC requires" , new AbstractSystemActorProfiles( "DOC_CONSUMER","XDS.b" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "DOC_SOURCE/BPPC requires DOC_SOURCE/XDS.b|XDR" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'BPPC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDS.b' || == 'XDr' ) then #myGlobalList.add( "DOC_SOURCE/BPPC requires DOC_SOURCE/XDS.b|XDR"); l = new LinkedList>() ; l.add( new Pair("DOC_SOURCE/BPPC requires" , new AbstractSystemActorProfiles( "DOC_SOURCE","XDS.b|XDR" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "PMC/BPPC requires PMC/XDM" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMC", actorIntegrationProfile.integrationProfile.keyword == 'BPPC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMC", actorIntegrationProfile.integrationProfile.keyword == 'XDM' ) then #myGlobalList.add( "PMC/BPPC requires PMC/XDS.b"); l = new LinkedList>() ; l.add( new Pair("PMC/BPPC requires" , new AbstractSystemActorProfiles( "PMC","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end rule "PMI/BPPC requires PMI/XDM" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMI", actorIntegrationProfile.integrationProfile.keyword == 'BPPC') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMI", actorIntegrationProfile.integrationProfile.keyword == 'XDM' ) then #myGlobalList.add( "PMI/BPPC requires PMI/XDS.b"); l = new LinkedList>() ; l.add( new Pair("PMC/BPPC requires" , new AbstractSystemActorProfiles( "PMI","XDM" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### CT rules #### # None #### EUA rules #### # 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 (actorIntegrationProfile.actor.keyword == "CONTXT_MGR" || == "KER_AUTH_SVR" || == "KER_SVR" || == "USER_CONTXT_PARTICIPANT" || == "CAA", actorIntegrationProfile.integrationProfile.keyword == 'EUA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "PAT_IDENTITY_CONSUMER" || == "PAT_IDENTITY_SRC" || == "PAT_IDENTITY_X_REF_MGR", actorIntegrationProfile.integrationProfile.keyword == 'PIX') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "PAT_IDENTITY_CONSUMER" || == "PAT_IDENTITY_SRC" || == "PAT_IDENTITY_X_REF_MGR", actorIntegrationProfile.integrationProfile.keyword == 'PIXV3') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "DOC_RECIPIENT" || == "DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 rule "XDR requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'XDR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT') then #myGlobalList.add( "XDS.b requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("XDR requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , 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 (actorIntegrationProfile.actor.keyword == "INIT_GATEWAY" || == "RESP_GATEWAY", actorIntegrationProfile.integrationProfile.keyword == 'XCA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "INIT_GATEWAY" || == "RESP_GATEWAY", actorIntegrationProfile.integrationProfile.keyword == 'XCA') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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.b #### # Reference: IHE ITI TF 4.0 Volume 1 - Table 2.1 rule "XDS.b requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'XDS.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.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.b requires SN/SA|SA/ATNA" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'XDS.b') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 and BPPC #### ## Rules for Content Creator and Content Consumer actors ## for these 2 profiles are contained in the PCC section above #### XDM #### # Reference IHE ITI Supplement XDM TF 1.7 rule "PMC|PMI/XDM requires SN|SA/ATNA" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "PMC" || == "PMI", actorIntegrationProfile.integrationProfile.keyword == 'XDM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 rule "XDM requires TIME_CLIENT/CT" when AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'XDM') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT') then #myGlobalList.add( "XDS.b requires TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("XDM requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , 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.b" # when # AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == 'NAV') # not AbstractSystemActorProfiles ( actorIntegrationProfile.integrationProfile.keyword == '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 #### 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 ( actorIntegrationProfile.actor.keyword == "REFERRAL_REQUESTOR", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not ( AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "DOC_SOURCE", actorIntegrationProfile.integrationProfile.keyword == 'XDS.a' || == 'XDS.b' || == 'XDR') or AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "PMC", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "REFERRAL_REQUESTOR", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "REFERRAL_REQUESTOR", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CREATOR", actorIntegrationProfile.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 ( actorIntegrationProfile.actor.keyword == "REFERRAL_DISPATCHER", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "REFERRAL_DISPATCHER", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "REFERRAL_DISPATCHER", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "CONTENT_CONSUMER", actorIntegrationProfile.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 ( actorIntegrationProfile.actor.keyword == "REFERRAL_DISPATCHER", actorIntegrationProfile.integrationProfile.keyword == 'DRR') not ( AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "DOC_RECIPIENT", actorIntegrationProfile.integrationProfile.keyword == 'XDR') or AbstractSystemActorProfiles ( actorIntegrationProfile.actor.keyword == "PMI", actorIntegrationProfile.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 (actorIntegrationProfile.actor.keyword == "VALUE_SET_REPOSITORY", actorIntegrationProfile.integrationProfile.keyword == 'SVS') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.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 ## Reference: SVS depends on ATNA, therefore CT also rule "VALUE_SET_REPOSITORY/SVS requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "VALUE_SET_REPOSITORY", actorIntegrationProfile.integrationProfile.keyword == 'SVS') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the VALUE_SET_REPOSITORY/SVS, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("VALUE_SET_REPOSITORY/SVS requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### DSUB RULES #### ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_NOTIF_BROKER/DSUB requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_NOTIF_BROKER", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DM_NOTIF_BROKER/DSUB requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DM_NOTIF_BROKER/DSUB requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DM_NOTIF_BROKER/DSUB requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_NOTIF_BROKER/DSUB requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_NOTIF_BROKER", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DM_NOTIF_BROKER/DSUB, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DM_NOTIF_BROKER/DSUB requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_PUBLISHER/DSUB requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_PUBLISHER", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DM_PUBLISHER/DSUB requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DM_PUBLISHER/DSUB requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DM_PUBLISHER/DSUB requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_PUBLISHER/DSUB requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_PUBLISHER", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DM_PUBLISHER/DSUB, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DM_PUBLISHER/DSUB requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_SUBSCRIBER/DSUB requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_SUBSCRIBER", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DM_SUBSCRIBER/DSUB requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DM_SUBSCRIBER/DSUB requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DM_SUBSCRIBER/DSUB requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_SUBSCRIBER/DSUB requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_SUBSCRIBER", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DM_SUBSCRIBER/DSUB, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DM_SUBSCRIBER/DSUB requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_NOTIF_RECIPIENT/DSUB requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_NOTIF_RECIPIENT", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DM_NOTIF_RECIPIENT/DSUB requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DM_NOTIF_RECIPIENT/DSUB requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DM_NOTIF_RECIPIENT/DSUB requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: DSUB Suppl. Vol 1 Table 2-1 rule "DM_NOTIF_RECIPIENT/DSUB requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DM_NOTIF_RECIPIENT", actorIntegrationProfile.integrationProfile.keyword == 'DSUB') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DM_NOTIF_RECIPIENT/DSUB, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DM_NOTIF_RECIPIENT/DSUB requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### MPQ RULES #### ## Reference: MPQ TI Supplement Vol 1 Table 2.1 rule "DOC_CONSUMER/MPQ requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'MPQ') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DOC_CONSUMER/MPQ requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DOC_CONSUMER/MPQ requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DOC_CONSUMER/MPQ requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: MPQ TI Supplement Vol 1 Table 2.1 rule "DOC_CONSUMER/MPQ requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_CONSUMER", actorIntegrationProfile.integrationProfile.keyword == 'MPQ') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DOC_CONSUMER/MPQ, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DOC_CONSUMER/MPQ requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: MPQ TI Supplement Vol 1 Table 2.1 rule "DOC_REGISTRY/MPQ requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.integrationProfile.keyword == 'MPQ') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "DOC_REGISTRY/MPQ requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/MPQ requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/MPQ requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: MPQ TI Supplement Vol 1 Table 2.1 rule "DOC_REGISTRY/MPQ requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "DOC_REGISTRY", actorIntegrationProfile.integrationProfile.keyword == 'MPQ') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the DOC_REGISTRY/MPQ, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("DOC_REGISTRY/MPQ requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end #### XCPD RULES #### ## Reference: XCPD TI Supplement Vol 1 Table 2.1 rule "INIT_GATEWAY/XCPD requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "INIT_GATEWAY", actorIntegrationProfile.integrationProfile.keyword == 'XCPD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "INIT_GATEWAY/XCPD requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("INIT_GATEWAY/XCPD requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("INIT_GATEWAY/XCPD requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: XCPD TI Supplement Vol 1 Table 2.1 rule "INIT_GATEWAY/XCPD requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "INIT_GATEWAY", actorIntegrationProfile.integrationProfile.keyword == 'XCPD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the INIT_GATEWAY/XCPD, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("INIT_GATEWAY/XCPD requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: XCPD TI Supplement Vol 1 Table 2.1 rule "RESP_GATEWAY/XCPD requires SN|SA/ATNA" when $xds : AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RESP_GATEWAY", actorIntegrationProfile.integrationProfile.keyword == 'XCPD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "SN" || == "SA", actorIntegrationProfile.integrationProfile.keyword == 'ATNA' ) then #myGlobalList.add( "RESP_GATEWAY/XCPD requires SN/ATNA or SA/ATNA"); l = new LinkedList>() ; l.add( new Pair("RESP_GATEWAY/XCPD requires" , new AbstractSystemActorProfiles( "SN","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; l = new LinkedList>() ; l.add( new Pair("RESP_GATEWAY/XCPD requires" , new AbstractSystemActorProfiles( "SA","ATNA" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end ## Reference: XCPD TI Supplement Vol 1 Table 2.1 rule "RESP_GATEWAY/XCPD requires TIME_CLIENT/CT" when AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "RESP_GATEWAY", actorIntegrationProfile.integrationProfile.keyword == 'XCPD') not AbstractSystemActorProfiles (actorIntegrationProfile.actor.keyword == "TIME_CLIENT", actorIntegrationProfile.integrationProfile.keyword == 'CT' ) then #myGlobalList.add( "System implements the RESP_GATEWAY/XCPD, it also needs to implement TIME_CLIENT/CT"); l = new LinkedList>() ; l.add( new Pair("RESP_GATEWAY/XCPD requires" , new AbstractSystemActorProfiles( "TIME_CLIENT","CT" , null , entityManager ) ) ) ; myGlobalList.add( l ) ; end