PXRMLRM ; SLC/PJH/PKR - List Rule Management ; 09/06/2007 ;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123 ; ;Main entry point for PXRM LIST RULE MANAGEMENT START N PXRMDONE,PXRMTYP,VALMBCK,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD S X="IORESET" D ENDR^%ZISS S VALMCNT=0 ;Default view is Rule Sets S PXRMTYP=3 D EN^VALM("PXRM LIST RULE MANAGEMENT") Q ; BLDLIST ;Build workfile K ^TMP("PXRMLRM",$J) N IEN,IND,PLIST D LIST(.PLIST,.IEN,PXRMTYP) M ^TMP("PXRMLRM",$J)=PLIST S VALMCNT=PLIST("VALMCNT") F IND=1:1:VALMCNT D .S ^TMP("PXRMLRM",$J,"IDX",IND,IND)=IEN(IND) I PXRMTYP=1 D CHGCAP^VALM("HEADER2","Finding Rule Name") I PXRMTYP=2 D CHGCAP^VALM("HEADER2","Reminder Rule Name") I PXRMTYP=3 D CHGCAP^VALM("HEADER2","Rule Set Name") I PXRMTYP=4 D CHGCAP^VALM("HEADER2","Report Output Rule Name") I PXRMTYP=5 D CHGCAP^VALM("HEADER2","Patient List Rule Name") Q ; ENTRY ;Entry code D BLDLIST,XQORM Q ; EXIT ;Exit code K ^TMP("PXRMLRM",$J) K ^TMP("PXRMLRMH",$J) D CLEAN^VALM10 D FULL^VALM1 S VALMBCK="Q" Q ; FRE(NUMBER,NAME,CLASS) ;Format entry number, name ;and date packed. N TCLASS,TEMP,TNAME,TSOURCE S TEMP=$$RJ^XLFSTR(NUMBER,5," ") S TNAME=$E(NAME,1,60) S TEMP=TEMP_" "_$$LJ^XLFSTR(TNAME,60," ") S TCLASS=$S(CLASS="N":"NATIONAL",CLASS="V":"VISN",1:"LOCAL") S TEMP=TEMP_" "_TCLASS Q TEMP ; HDR ; Header code S VALMSG="+ Next Screen - Prev Screen ?? More Actions" Q ; HELP(CALL) ;General help text routine N HTEXT I CALL=1 D .S HTEXT(1)="Select DE to display or edit a rule.\\" .S HTEXT(2)="Select ED to edit a rule.\\" ; I CALL=2 D .S HTEXT(1)="Select F to edit term based finding rules.\\" .S HTEXT(2)="Select P to edit patient list based finding rules.\\" .S HTEXT(3)="Select R to edit reminder rules.\\" .S HTEXT(4)="Select S to edit rule sets. A rule set may contain" .S HTEXT(5)="any of the following:\\" .S HTEXT(6)=" finding list rules, patient list rules, reminder rules\\" .S HTEXT(7)="These component list rules must be created before the rule set" .S HTEXT(8)="can be constructed." ; D HELP^PXRMEUT(.HTEXT) Q ; HLP ;Help code N ORU,ORUPRMT,SUB,XQORM S SUB="PXRMLRMH" D EN^VALM("PXRM LIST RULE HELP") Q ; INIT ;Init S VALMCNT=0 Q ; LIST(RLIST,IEN,LRTYP) ;Build a list of list rule entries. N DATA,IND,LRCLASS,LRNAME,NAME ;Build the list in alphabetical order. S VALMCNT=0 S NAME="" F S NAME=$O(^PXRM(810.4,"B",NAME)) Q:NAME="" D .S IND=$O(^PXRM(810.4,"B",NAME,"")) Q:'IND .S DATA=$G(^PXRM(810.4,IND,0)) .I $P(DATA,U,3)'=LRTYP Q .S LRNAME=$P(DATA,U) .S LRCLASS=$P($G(^PXRM(810.4,IND,100)),U) .S VALMCNT=VALMCNT+1 .S RLIST(VALMCNT,0)=$$FRE(VALMCNT,LRNAME,LRCLASS) .S IEN(VALMCNT)=IND S RLIST("VALMCNT")=VALMCNT Q ; LRADD ;Add Rule Option ; ;Reset Screen Mode W IORESET ; ;Add Rule D ADD^PXRMLRED ; ;Rebuild Workfile D BLDLIST S VALMBCK="R" Q ; LRINQ ;Rule Inquiry - PXRM LIST RULE DISPLAY/EDIT entry N IND,LRIEN,VALMY D EN^VALM2(XQORNOD(0)) ;If there is no list quit. I '$D(VALMY) Q S PXRMDONE=0 S IND="" F S IND=$O(VALMY(IND)) Q:(+IND=0)!(PXRMDONE) D .;Get the ien. .S LRIEN=^TMP("PXRMLRM",$J,"IDX",IND,IND) .D START^PXRMLRED(LRIEN,PXRMTYP) D BLDLIST S VALMBCK="R" Q ; PEXIT ;Protocol exit code S VALMSG="+ Next Screen - Prev Screen ?? More Actions" ;Reset after page up/down etc D XQORM Q ; VIEW ;Select view W IORESET S VALMBCK="R" N X,Y,CODE,DIR K DIROUT,DIRUT,DTOUT,DUOUT S DIR(0)="S"_U_"F:Finding Rule;" S DIR(0)=DIR(0)_"P:Patient List Rule;" S DIR(0)=DIR(0)_"R:Reminder Rule;" S DIR(0)=DIR(0)_"S:Rule Set;" S DIR("A")="TYPE OF VIEW" S DIR("B")="F" S DIR("?")="Select from the codes displayed. For detailed help type ??" S DIR("??")=U_"D HELP^PXRMLRM(2)" D ^DIR K DIR I $D(DIROUT) S DTOUT=1 I $D(DTOUT)!($D(DUOUT)) Q ;Change display type S PXRMTYP=$S(Y="F":1,Y="P":5,Y="S":3,1:4) S PXRMTYP=$S(Y="F":1,Y="P":5,Y="S":3,Y="R":2,1:4) ;Rebuild Workfile D BLDLIST,HDR Q ; XSEL ;PXRM LIST RULE MANAGEMENT SELECT ENTRY validation N SEL,IEN S SEL=$P(XQORNOD(0),"=",2) ;Remove trailing , I $E(SEL,$L(SEL))="," S SEL=$E(SEL,1,$L(SEL)-1) ;Invalid selection I SEL["," D Q .W $C(7),!,"Only one item number allowed." H 2 .S VALMBCK="R" I ('SEL)!(SEL>VALMCNT)!('$D(@VALMAR@("IDX",SEL))) D Q .W $C(7),!,SEL_" is not a valid item number." H 2 .S VALMBCK="R" ; ;Get the list ien. S IEN=^TMP("PXRMLRM",$J,"IDX",SEL,SEL) ; ;Option to Display/Edit or Test Rule Set. N DIR,OPTION,RIEN,X,Y K DIROUT,DIRUT,DTOUT,DUOUT S DIR(0)="SBM"_U_"DR:Display/Edit Rule;" I $G(PXRMTYP)=3 S DIR(0)=DIR(0)_"TEST:Test Rule Set" S DIR("A")="Select Action: " S DIR("B")="DR" S DIR("?")="Select from the codes displayed." D ^DIR K DIR I $D(DIROUT) S DTOUT=1 I $D(DTOUT)!($D(DUOUT)) S VALMBCK="R" Q S OPTION=Y I $G(OPTION)="" G XSELE ; ;Display/Edit I OPTION="DR" D START^PXRMLRED(IEN,PXRMTYP) Q:$D(DUOUT)!$D(DTOUT) ; ;Rule set test I OPTION="TEST" D RSTEST^PXRMRST(IEN) Q:$D(DUOUT)!$D(DTOUT) ; XSELE ; D CLEAN^VALM10 D BLDLIST,XQORM S VALMBCK="R" Q ; XQORM S XQORM("#")=$O(^ORD(101,"B","PXRM LIST RULE MANAGEMENT SELECT ENTRY",0))_U_"1:"_VALMCNT S XQORM("A")="Select Item: " Q ;