181 lines
4.5 KiB
Mathematica
181 lines
4.5 KiB
Mathematica
PXRMEPM ; SLC/PKR/PJH - Extract Definition Management ;06/21/2006
|
|
;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
|
;
|
|
;Main entry point for PXRM EXTRACT DEFINITIONS
|
|
START N PXRMDONE,VALMBCK,VALMCNT,VALMSG,X,XMZ,XQORM,XQORNOD
|
|
S X="IORESET"
|
|
D ENDR^%ZISS
|
|
S VALMCNT=0
|
|
D EN^VALM("PXRM EXTRACT DEFINITIONS")
|
|
Q
|
|
;
|
|
BLDLIST ;Build workfile
|
|
K ^TMP("PXRMEPM",$J)
|
|
N IEN,IND,PLIST
|
|
D LIST^PXRMETM(.PLIST,.IEN)
|
|
M ^TMP("PXRMEPM",$J)=PLIST
|
|
S VALMCNT=PLIST("VALMCNT")
|
|
F IND=1:1:VALMCNT D
|
|
.S ^TMP("PXRMEPM",$J,"IDX",IND,IND)=IEN(IND)
|
|
Q
|
|
;
|
|
ENTRY ;Entry code
|
|
D BLDLIST,XQORM
|
|
Q
|
|
;
|
|
EXIT ;Exit code
|
|
K ^TMP("PXRMEPM",$J)
|
|
K ^TMP("PXRMEPMH",$J)
|
|
D CLEAN^VALM10
|
|
D FULL^VALM1
|
|
S VALMBCK="Q"
|
|
Q
|
|
;
|
|
HDR ; Header code
|
|
S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
|
Q
|
|
;
|
|
HLP ;Help code
|
|
N ORU,ORUPRMT,SUB,XQORM
|
|
S SUB="PXRMEPMH"
|
|
D EN^VALM("PXRM EXTRACT HELP")
|
|
Q
|
|
;
|
|
INIT ;Init
|
|
S VALMCNT=0
|
|
Q
|
|
;
|
|
PEXIT ;PXRM EXCH MENU protocol exit code
|
|
S VALMSG="+ Next Screen - Prev Screen ?? More Actions"
|
|
;Reset after page up/down etc
|
|
D XQORM
|
|
Q
|
|
;
|
|
XQORM S XQORM("#")=$O(^ORD(101,"B","PXRM EXTRACT DEFINITION SELECT ENTRY",0))_U_"1:"_VALMCNT
|
|
S XQORM("A")="Select Item: "
|
|
Q
|
|
;
|
|
XSEL ;PXRM EXTRACT DEFINITION 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("PXRMEPM",$J,"IDX",SEL,SEL)
|
|
;Display/Edit Extract Definition
|
|
D START^PXRMEPED(IEN)
|
|
D BLDLIST
|
|
S VALMBCK="R"
|
|
Q
|
|
;
|
|
HELP(CALL) ;General help text routine
|
|
N HTEXT
|
|
I CALL=1 D
|
|
.S HTEXT(1)="Select DE to display or edit a definition."
|
|
.S HTEXT(2)="Select ED to edit a definition"
|
|
D HELP^PXRMEUT(.HTEXT)
|
|
Q
|
|
;
|
|
EPADD ;Add Rule Option
|
|
;
|
|
;Reset Screen Mode
|
|
W IORESET
|
|
;
|
|
;Add Rule
|
|
D ADD^PXRMEPED
|
|
;
|
|
;Rebuild Workfile
|
|
D BLDLIST
|
|
;
|
|
S VALMBCK="R"
|
|
Q
|
|
;
|
|
EPINQ ;Definition Inquiry - PXRM EXTRACT DEFINITION 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("PXRMEPM",$J,"IDX",IND,IND)
|
|
.D START^PXRMEPED(LRIEN)
|
|
D BLDLIST
|
|
S VALMBCK="R"
|
|
Q
|
|
;
|
|
PPLR ;Display rule set components
|
|
;used by [PXRM EXTRACT DEFINITION] template)
|
|
N ACT,DATA,FIRST,IEN,LRDATA,LRIEN,SEQ,SUB
|
|
S IEN=$P(X,U,2) Q:'IEN
|
|
W !," Description: ",$P($G(^PXRM(810.4,IEN,0)),U,2)
|
|
S SEQ="",FIRST=1
|
|
F S SEQ=$O(^PXRM(810.4,IEN,30,"B",SEQ)) Q:'SEQ D
|
|
.S SUB=$O(^PXRM(810.4,IEN,30,"B",SEQ,"")) Q:'SUB
|
|
.S DATA=$G(^PXRM(810.4,IEN,30,SUB,0)) Q:DATA=""
|
|
.S LRIEN=$P(DATA,U,2) Q:LRIEN=""
|
|
.S ACT=$P(DATA,U,3),LRDATA=$G(^PXRM(810.4,LRIEN,0))
|
|
.I FIRST W !!,?2,"List Rules:" S FIRST=0
|
|
.W !,?2,SEQ,?7,$P(LRDATA,U),?66
|
|
.W $S(ACT="A":"ADD PATIENT",ACT="R":"REMOVE PATIENT",ACT="F":"INSERT FINDING",1:"SELECT PATIENT")
|
|
.;Display List Rule fields
|
|
.D LROUT^PXRMLRED(LRIEN,23)
|
|
.W !
|
|
Q
|
|
;
|
|
PPFR ;Display counting rules and count type
|
|
;used by [PXRM EXTRACT DEFINITION] template)
|
|
W !
|
|
N DATA,GIEN,GSTATUS,IEN,SEQ,SUB
|
|
S IEN=$P(X,U,3) Q:'IEN
|
|
S SEQ=""
|
|
F S SEQ=$O(^PXRM(810.7,IEN,10,"B",SEQ)) Q:SEQ="" D
|
|
.S SUB=$O(^PXRM(810.7,IEN,10,"B",SEQ,"")) Q:'SUB
|
|
.S DATA=$G(^PXRM(810.7,IEN,10,SUB,0)) Q:DATA=""
|
|
.S GIEN=$P(DATA,U,2) Q:GIEN=""
|
|
.S GSTATUS=$P(DATA,U,3)
|
|
.;Get counting groups
|
|
.N CTYP,CTXT,DATA,EXCL,FIRST,GNAME,PNAME,TIEN,TNAME,GSEQ,GSUB
|
|
.S DATA=$G(^PXRM(810.8,GIEN,0)),GNAME=$P(DATA,U)
|
|
.S CTYP=$P(DATA,U,3),PNAME=$P(DATA,U,2),GSEQ="",FIRST=1
|
|
.S CTXT=$$TXT(CTYP,GSTATUS)
|
|
.F S GSEQ=$O(^PXRM(810.8,GIEN,10,"B",GSEQ)) Q:GSEQ="" D
|
|
..S GSUB=$O(^PXRM(810.8,GIEN,10,"B",GSEQ,"")) Q:'GSUB
|
|
..S DATA=$G(^PXRM(810.8,GIEN,10,GSUB,0)) Q:DATA=""
|
|
..S TIEN=$P(DATA,U,2) Q:TIEN=""
|
|
..S EXCL=$P(DATA,U,3) Q:EXCL="E"
|
|
..S TNAME=$P($G(^PXRMD(811.5,TIEN,0)),U)
|
|
..I FIRST D
|
|
...W !,?14,SEQ
|
|
...W ?18,"Counting Group: ",GNAME
|
|
...W !,?18,$$TXT(CTYP,GSTATUS)
|
|
...W !,?23,"Terms:" S FIRST=0
|
|
..W ?30,TNAME,!
|
|
Q
|
|
;
|
|
SCREEN ;Screen for 810.210 field .02
|
|
S DIC("S")="I $P(^(0),U,3)=3"
|
|
Q
|
|
;
|
|
TXT(COUNT,COHORT) ;Text to describe group
|
|
N TXT
|
|
;Determine count type
|
|
I COUNT="MRFP" S TXT="Most recent finding patient counts for "
|
|
I COUNT="MRF" S TXT="Most recent finding counts for "
|
|
I COUNT="UR" S TXT="Utilization in period finding counts for "
|
|
;Error
|
|
I $G(TXT)="" Q "Unknown count type - error"
|
|
;Determine cohort
|
|
S TXT=TXT_$S(COHORT="A":"APPLICABLE",1:"TOTAL")_" patients"
|
|
Q TXT
|