[613] | 1 | VAQREQ04 ;ALB/JFP - PDX, REQUEST PATIENT DATA, ASK SEGMENT;01MAR93
|
---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
| 3 | EP ; -- Entry point, second level of loop in VAQREQ03
|
---|
| 4 | ; NOTE: PDX*MIN is hard coded in this routine
|
---|
| 5 | ; - Called from VAQREQ03
|
---|
| 6 | ; - Calls help routine VAQREQ09
|
---|
| 7 | ;
|
---|
| 8 | REQ ; -- Request segment
|
---|
| 9 | N DIRUT,DTOUT,DUOUT,X,I,N,L
|
---|
| 10 | N GRPDA,SEGDA,SEGMNU,SEGNODE,SEGNO,SEGNME,GTYPE,GDUZ,GRP
|
---|
| 11 | ;
|
---|
| 12 | DRIVER ; -- Driver loop
|
---|
| 13 | I $D(^TMP("VAQSEG",$J,DOMAIN)) D LISTS ; -- displays segments on edit
|
---|
| 14 | F D ASKSEG Q:$D(DIRUT)
|
---|
| 15 | ; -- Cleanup and exit
|
---|
| 16 | K DIRUT,DTOUT,DUOUT,X,I,N,L
|
---|
| 17 | K SEGDA,SEGMNU,SEGNODE,SEGNO,SEGNME,GTYPE,GDUZ,GRP,GRPDA
|
---|
| 18 | QUIT
|
---|
| 19 | ;
|
---|
| 20 | ASKSEG ; -- Prompts for segments
|
---|
| 21 | ; -- Sets default segment to PDX*MIN, Minimum patient information
|
---|
| 22 | ; Note: PDX*MIN is hard coded in this routine, if this mnuemonic
|
---|
| 23 | ; changes, the routine must change (ASKSEG+3)
|
---|
| 24 | ;
|
---|
| 25 | I '$D(^TMP("VAQSEG",$J,DOMAIN,"PDX*MIN")) D
|
---|
| 26 | .S SEGNO="",SEGNO=$O(^VAT(394.71,"C","PDX*MIN",SEGNO))
|
---|
| 27 | .S SEGNME=$P($G(^VAT(394.71,SEGNO,0)),U,1)
|
---|
| 28 | .S ^TMP("VAQSEG",$J,DOMAIN,"PDX*MIN")=SEGNO_"^"_SEGNME
|
---|
| 29 | ;
|
---|
| 30 | ; -- Call to Dir to request segments
|
---|
| 31 | S POP=0
|
---|
| 32 | S DIR("A")=" Enter Segment: "
|
---|
| 33 | S DIR(0)="FAO^1:30"
|
---|
| 34 | S DIR("?")="^D HLPSEG1^VAQREQ09"
|
---|
| 35 | S DIR("??")="^D HLPSEG2^VAQREQ09"
|
---|
| 36 | W ! D ^DIR K DIR Q:$D(DIRUT)
|
---|
| 37 | S X=Y
|
---|
| 38 | I X="*L" D LISTS Q:POP
|
---|
| 39 | I $E(X,1,1)="-" D DELSEG Q:POP
|
---|
| 40 | I $E(X,1,2)'="G." D SEG Q:POP
|
---|
| 41 | I $E(X,1,2)="G." D GSEG Q:POP
|
---|
| 42 | QUIT
|
---|
| 43 | ;
|
---|
| 44 | SEG ; -- Dic lookup to verify segment in file 394.71
|
---|
| 45 | S DIC="^VAT(394.71,",DIC(0)="EMQZ"
|
---|
| 46 | D ^DIC K DIC I $D(DTOUT)!$D(DUOUT)!(Y<0) S POP=1 QUIT
|
---|
| 47 | S SEGNME=$P(Y(0),U,1),SEGMNU=$P(Y(0),U,2)
|
---|
| 48 | S SEGDA="",SEGDA=$O(^VAT(394.71,"C",SEGMNU,SEGDA))
|
---|
| 49 | S HSCOMPND=$$HLTHSEG^VAQDBIH1(SEGMNU,0)
|
---|
| 50 | I $P(HSCOMPND,U,1)'=0 D EP^VAQREQ11 ; -- Time and occurrence
|
---|
| 51 | D FLESEG
|
---|
| 52 | QUIT
|
---|
| 53 | ;
|
---|
| 54 | GSEG ; -- Dic lookup to verify segment group name in file 394.84
|
---|
| 55 | S X=$P(X,".",2) ; -- strip off G.
|
---|
| 56 | S DIC="^VAT(394.84,"
|
---|
| 57 | S DIC(0)="EMQZ"
|
---|
| 58 | D ^DIC K DIC I $D(DTOUT)!$D(DUOUT)!(Y<0) S POP=1 QUIT
|
---|
| 59 | S GTYPE=$P(Y(0),U,2),GDUZ=$P(Y(0),U,3)
|
---|
| 60 | I (GTYPE="0")&(DUZ'=GDUZ) D QUIT
|
---|
| 61 | .W " ...Private group selected not associated with user"
|
---|
| 62 | .S POP=1
|
---|
| 63 | S GRP=$P(Y,U,2),GRPDA="",GRPDA=$O(^VAT(394.84,"B",GRP,GRPDA))
|
---|
| 64 | D S1
|
---|
| 65 | QUIT
|
---|
| 66 | ;
|
---|
| 67 | S1 S SEGDA=""
|
---|
| 68 | F S SEGDA=$O(^VAT(394.84,GRPDA,"SEG","B",SEGDA)) Q:SEGDA="" D SETS
|
---|
| 69 | QUIT
|
---|
| 70 | SETS S SEGNODE=$G(^VAT(394.71,SEGDA,0))
|
---|
| 71 | Q:SEGNODE=""
|
---|
| 72 | S SEGNME=$P(SEGNODE,U,1),SEGMNU=$P(SEGNODE,U,2)
|
---|
| 73 | S HSCOMPND=$$HLTHSEG^VAQDBIH1(SEGMNU,0)
|
---|
| 74 | I $P(HSCOMPND,U,1)'=0 D GROUP ; -- Time and occurrence
|
---|
| 75 | D FLESEG
|
---|
| 76 | QUIT
|
---|
| 77 | ;
|
---|
| 78 | GROUP ; -- Sets time and occurrence limits for segment groups selected
|
---|
| 79 | S PARAMND=$G(^VAT(394.81,1,"LIMITS")) ; -- sets time & occ defaults
|
---|
| 80 | S TLDEF=$P(PARAMND,U,1)
|
---|
| 81 | S OLDEF=$P(PARAMND,U,2)
|
---|
| 82 | ;
|
---|
| 83 | S POS="",POS=$O(^VAT(394.84,GRPDA,"SEG","B",SEGDA,POS))
|
---|
| 84 | S GRPSEGND=$G(^VAT(394.84,GRPDA,"SEG",POS,0))
|
---|
| 85 | S TLIMIT=$P(GRPSEGND,U,4) I TLIMIT="" S TLIMIT=TLDEF
|
---|
| 86 | S OLIMIT=$P(GRPSEGND,U,5) I OLIMIT="" S OLIMIT=OLDEF
|
---|
| 87 | I $P(HSCOMPND,U,2)=0 S TLIMIT=""
|
---|
| 88 | I $P(HSCOMPND,U,3)=0 S OLIMIT=""
|
---|
| 89 | QUIT
|
---|
| 90 | ;
|
---|
| 91 | FLESEG ; -- Loops thru domains filing segment data in ^TMP array
|
---|
| 92 | S LPDOM=""
|
---|
| 93 | F S LPDOM=$O(^TMP("VAQDOM",$J,LPDOM)) Q:LPDOM="" D FILE
|
---|
| 94 | QUIT
|
---|
| 95 | ;
|
---|
| 96 | FILE ;
|
---|
| 97 | S:'$D(TLIMIT) TLIMIT=""
|
---|
| 98 | S:'$D(OLIMIT) OLIMIT=""
|
---|
| 99 | S ^TMP("VAQSEG",$J,LPDOM,SEGMNU)=SEGDA_"^"_SEGNME_"^"_TLIMIT_"^"_OLIMIT
|
---|
| 100 | QUIT
|
---|
| 101 | ;
|
---|
| 102 | DELSEG ; -- Deletes selected segments
|
---|
| 103 | S POP=1,X=$P(X,"-",2)
|
---|
| 104 | I X="" W " ...No entries selected" QUIT
|
---|
| 105 | S ARRAY="^TMP(""VAQSEG"","_$J_","_$C(34)_DOMAIN_$C(34)_")"
|
---|
| 106 | S X=$$PARTIC^VAQUTL94(ARRAY,X)
|
---|
| 107 | I X=-1 W " ... Not Selected" QUIT
|
---|
| 108 | I X="PDX*MIN" W " ...required segment, not deleted" QUIT
|
---|
| 109 | I '$D(^TMP("VAQSEG",$J,DOMAIN,X)) W !,X," Not Selected" QUIT
|
---|
| 110 | K ^TMP("VAQSEG",$J,DOMAIN,X)
|
---|
| 111 | W " ...Segment Deleted"
|
---|
| 112 | QUIT
|
---|
| 113 | ;
|
---|
| 114 | LISTS ; -- Displays a list segments selected for domain
|
---|
| 115 | S POP=1
|
---|
| 116 | I '$D(^TMP("VAQSEG",$J,DOMAIN)) W !!,"** NO SEGMENT(S) SELECTED" QUIT
|
---|
| 117 | W !!,"------------------------------ Segments Selected ------------------------------"
|
---|
| 118 | S N="" F L=0:1 S N=$O(^TMP("VAQSEG",$J,DOMAIN,N)) Q:N="" W:'(L#8) ! W ?L#8*10 W N
|
---|
| 119 | W !,"-------------------------------------------------------------------------------"
|
---|
| 120 | W ! QUIT
|
---|
| 121 | ;
|
---|
| 122 | END ; -- End of code
|
---|
| 123 | QUIT
|
---|