| [613] | 1 | PPPDSP3 ;ALB/DMB - MEDICATION PROFILE DISPLAY ROUTINE ;5/19/92 | 
|---|
|  | 2 | ;;V1.0;PHARMACY PRESCRIPTION PRACTICE;**1,17**;APR 7,1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ; These routines control the display of the pharmacy medication | 
|---|
|  | 6 | ; profiles via the list processor from scheduling. | 
|---|
|  | 7 | ; | 
|---|
|  | 8 | DSPMED(PATDFN,ARRAYNM,OBFLAG) ; List processor entry point | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | ; This is the main entry point for calling the list processor. | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | ; Parameters: | 
|---|
|  | 13 | ;  PATDFN - The patient internal entry number | 
|---|
|  | 14 | ;  ARRAYNM - An array containing the visit info (see GETVIS^PPPGET7). | 
|---|
|  | 15 | ;  OBFLAG - A flag containing "O" for profiles form only the other | 
|---|
|  | 16 | ;           facilities or "B" for profiles from both local and other. | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | ;K XQORS,VALMEVL | 
|---|
|  | 19 | D EN^VALM("PPP PROFILE") | 
|---|
|  | 20 | Q | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | INIT ; Collect all of the data and build the display array | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | S VALMMENU=0 | 
|---|
|  | 25 | S VALMCNT=$$PRPROFIL(ARRAYNM) | 
|---|
|  | 26 | I VALMCNT<1 D NUL | 
|---|
|  | 27 | I OBFLAG="O" S VALM("TITLE")="Medication Profile - Other" | 
|---|
|  | 28 | I OBFLAG="B" S VALM("TITLE")="Medication Profile - Both" | 
|---|
|  | 29 | INITQ Q | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | HDR ; Get header data and build it. | 
|---|
|  | 32 | ; | 
|---|
|  | 33 | N DIC,DA,DR,DIQ,DUOUT,DTOUT,PPPTMP | 
|---|
|  | 34 | S DIC="^DPT(",DA=PATDFN,DR=".01;.03;.09",DIQ="PPPTMP" D EN^DIQ1 | 
|---|
|  | 35 | S VALMHDR(1)="" | 
|---|
|  | 36 | S VALMHDR(2)="Patient: "_PPPTMP(2,PATDFN,.01)_" ("_PPPTMP(2,PATDFN,.09)_")      DOB: "_PPPTMP(2,PATDFN,.03) | 
|---|
|  | 37 | HDRQ Q | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | NUL ; Set null message | 
|---|
|  | 40 | ; | 
|---|
|  | 41 | ;I '$O(@ARRAYNM@(0)) S @ARRAYNM@(1,0)=" ",@ARRAYNM@(2,0)="    No Data Available.",VALMCNT=2 | 
|---|
|  | 42 | S @ARRAYNM@(1,0)=" ",@ARRAYNM@(2,0)="    No Data Available.",VALMCNT=2 | 
|---|
|  | 43 | Q | 
|---|
|  | 44 | ; | 
|---|
|  | 45 | FNL ; Clean Up | 
|---|
|  | 46 | ; | 
|---|
|  | 47 | K ^TMP("PPP",$J,"LIST") | 
|---|
|  | 48 | Q | 
|---|
|  | 49 | ; | 
|---|
|  | 50 | PRPROFIL(ARRAYNM) ; Print the med profile | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | ; This function collects the medication profile data and formats it | 
|---|
|  | 53 | ; for display. | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | ; Parameters: | 
|---|
|  | 56 | ;  ARRAYNM - An array containing the visit info (see GETVIS^PPPGET7). | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | N ND,PHRMARRY,RVRSDT,RXIDX,STANAME,STAPTR,TMP,Y,LSTARRAY | 
|---|
|  | 59 | N TEXT,TXTLINE,U,LINE | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | S PHRMARRY="^TMP(""PPP"",$J,""PHR"")" | 
|---|
|  | 62 | S LSTARRAY="^TMP(""PPP"",$J,""LIST"")" | 
|---|
|  | 63 | S U="^" | 
|---|
|  | 64 | S LINE=0 | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | ; Get the prescription data | 
|---|
|  | 67 | ; | 
|---|
|  | 68 | I OBFLAG="B" S TMP=$$GLPHRM^PPPGET8(PATDFN,PHRMARRY) | 
|---|
|  | 69 | S TMP=$$GETPDX^PPPGET2(ARRAYNM,PHRMARRY) | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | ; If there is anything to print... print it. | 
|---|
|  | 72 | ; | 
|---|
|  | 73 | I $D(@PHRMARRY) D NARRATIV | 
|---|
|  | 74 | K @PHRMARRY | 
|---|
|  | 75 | Q LINE | 
|---|
|  | 76 | ; | 
|---|
|  | 77 | NARRATIV ; Print the narratives | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | S LINE=0 | 
|---|
|  | 80 | S TEXT="" | 
|---|
|  | 81 | S STANAME="" | 
|---|
|  | 82 | I $D(@PHRMARRY@(0)) D | 
|---|
|  | 83 | .F  S STANAME=$O(@PHRMARRY@(0,STANAME)) Q:STANAME=""  D | 
|---|
|  | 84 | ..S LINE=LINE+1 | 
|---|
|  | 85 | ..S @LSTARRAY@(LINE,0)=$$SETSTR^VALM1("NARRATIVE FROM "_STANAME,TEXT,1,80) | 
|---|
|  | 86 | ..S LINE=LINE+1 | 
|---|
|  | 87 | ..I $L(@PHRMARRY@(0,STANAME))<70 D | 
|---|
|  | 88 | ...S @LSTARRAY@(LINE,0)=$$SETSTR^VALM1("  => "_@PHRMARRY@(0,STANAME),TEXT,1,80) | 
|---|
|  | 89 | ..E  D | 
|---|
|  | 90 | ...S @LSTARRAY@(LINE,0)=$$SETSTR^VALM1("  => "_$E(@PHRMARRY@(0,STANAME),1,70)_"...",TEXT,1,80) | 
|---|
|  | 91 | ..S LINE=LINE+1,@LSTARRAY@(LINE,0)="" | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | S RVRSDT=0 | 
|---|
|  | 94 | F  S RVRSDT=$O(@PHRMARRY@(RVRSDT)) Q:RVRSDT'>0  D | 
|---|
|  | 95 | .S STAPTR=0 | 
|---|
|  | 96 | .F  S STAPTR=$O(@PHRMARRY@(RVRSDT,STAPTR)) Q:STAPTR=""  D | 
|---|
|  | 97 | ..S RXIDX=-1 | 
|---|
|  | 98 | ..F  S RXIDX=$O(@PHRMARRY@(RVRSDT,STAPTR,RXIDX)) Q:RXIDX=""!(RXIDX="PID")  D | 
|---|
|  | 99 | ...S ND=$G(@PHRMARRY@(RVRSDT,STAPTR,RXIDX)) Q:ND="" | 
|---|
|  | 100 | ...S LINE=LINE+1 | 
|---|
|  | 101 | ...S TXTLINE=$$SETFLD^VALM1($P(ND,U),TEXT,"RX#") | 
|---|
|  | 102 | ...S TXTLINE=$$SETFLD^VALM1($P(ND,U,2),TXTLINE,"DRUG") | 
|---|
|  | 103 | ...S TXTLINE=$$SETFLD^VALM1($P(ND,U,3),TXTLINE,"STATUS") | 
|---|
|  | 104 | ...S TXTLINE=$$SETFLD^VALM1($P(ND,U,4),TXTLINE,"QTY") | 
|---|
|  | 105 | ...S TXTLINE=$$SETFLD^VALM1($$SLASHDT^PPPCNV1($P(ND,U,5)),TXTLINE,"ISSUED") | 
|---|
|  | 106 | ...S TXTLINE=$$SETFLD^VALM1($$SLASHDT^PPPCNV1($P(ND,U,6)),TXTLINE,"LAST FILLED") | 
|---|
|  | 107 | ...S @LSTARRAY@(LINE,0)=TXTLINE | 
|---|
|  | 108 | ...S LINE=LINE+1 | 
|---|
|  | 109 | ...S TXTLINE=$$SETSTR^VALM1("SIG: "_$E($P(ND,U,7),1,25),TEXT,9,30) | 
|---|
|  | 110 | ...S TXTLINE=$$SETSTR^VALM1("ISSUED AT "_$P(ND,U,8)_" ("_$P(ND,U,9)_")",TXTLINE,40,39) | 
|---|
|  | 111 | ...S @LSTARRAY@(LINE,0)=TXTLINE | 
|---|
|  | 112 | ...S LINE=LINE+1 | 
|---|
|  | 113 | ...S @LSTARRAY@(LINE,0)=$$SETSTR^VALM1("PROVIDER: "_$P(ND,U,10),TEXT,9,70) | 
|---|
|  | 114 | K @PHRMARRY | 
|---|
|  | 115 | Q | 
|---|
|  | 116 | ; | 
|---|