| 1 | PXCEVFIL ;ISL/dee - Main routine to edit a visit or v-file entry ;10/15/04 11:50am
 | 
|---|
| 2 |  ;;1.0;PCE PATIENT CARE ENCOUNTER;**9,30,22,73,88,89,104,147,124,169**;Aug 12, 1996
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 | EN(PXCECAT) ; -- main entry point for PXCE pxcecat EDIT
 | 
|---|
| 6 |  I PXCECAT="SIT"!(PXCECAT="HIST") D PATINFO^PXCEPAT(.PXCEPAT) Q:$D(DIRUT)
 | 
|---|
| 7 |  I PXCECAT'="SIT",PXCECAT'="APPM",PXCECAT'="HIST" Q:'$D(PXCEFIEN)!'$D(PXCEVIEN)!'$D(PXCEPAT)
 | 
|---|
| 8 |  E  Q:(PXCEVIEW["P"&'$D(PXCEPAT))!(PXCEVIEW["H"&'$D(PXCEHLOC))!("~H~P~"'[("~"_$P(PXCEVIEW,"^")_"~"))
 | 
|---|
| 9 |  I PXCECAT="CSTP",$L($T(DATE^SCDXUTL)),$$DATE^SCDXUTL(+$G(^AUPNVSIT(PXCEVIEN,0))) W !!,$C(7),"Stop Codes can not be added to encounters after "_$$FMDATE^SCDXUTL Q
 | 
|---|
| 10 |  N PXCEQUIT
 | 
|---|
| 11 |  I "~CPT~CSTP~"[PXCECAT D  Q:PXCEQUIT
 | 
|---|
| 12 |  . S PXCEQUIT=0
 | 
|---|
| 13 |  . I $P($G(^AUPNVSIT(PXCEVIEN,0)),"^",7)="E" D  Q:$G(PXCEQUIT)
 | 
|---|
| 14 |  .. I PXCECAT="CSTP" W !!,$C(7),"Historical Encounters cannot have Stop Codes." D WAIT^PXCEHELP S PXCEQUIT=1 Q
 | 
|---|
| 15 |  K PXCEQUIT
 | 
|---|
| 16 |  D FULL^VALM1
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  N PXCEVFIL,PXCELOOP,PXCENOER
 | 
|---|
| 19 |  N PXCECODE,PXCEAUPN,PXCECATS,PXCECATT,PXCEFILE
 | 
|---|
| 20 |  N PXCEPSCC
 | 
|---|
| 21 |  S PXCECATS=$S(PXCECAT="SIT":"VST",PXCECAT="APPM":"VST",PXCECAT="HIST":"VST",PXCECAT="CSTP":"VST",1:PXCECAT)
 | 
|---|
| 22 |  S PXCECODE="PXCE"_$S(PXCECAT="IMM":"VIMM",1:PXCECAT)
 | 
|---|
| 23 |  S PXCEAUPN=$P($T(FORMAT^@PXCECODE),"~",5)
 | 
|---|
| 24 |  S PXCECATT=$P($P($T(FORMAT^@PXCECODE),";;",2),"~",1)
 | 
|---|
| 25 |  S PXCEFILE=$P($T(FORMAT^@PXCECODE),"~",2)
 | 
|---|
| 26 |  S PXCEQUIT=0
 | 
|---|
| 27 |  I '$D(PXCAAFTR),PXCECAT'="SIT",PXCECAT'="APPM",PXCECAT'="HIST",PXCEFIEN'>0 D ASK^PXCEVFI2(PXCEVIEN,.PXCEFIEN,PXCEAUPN,PXCECATT,PXCECODE)
 | 
|---|
| 28 |  Q:PXCEQUIT
 | 
|---|
| 29 |  I PXCECAT'="SIT",PXCECAT'="APPM",PXCECAT'="HIST" S PXCELOOP=+PXCEFIEN
 | 
|---|
| 30 |  E  S PXCELOOP=1,PXCEFIEN=PXCEVIEN
 | 
|---|
| 31 |  I PXCECAT="CSTP" D
 | 
|---|
| 32 |  . I $$VSTAPPT^PXUTL1(PXCEPAT,+^AUPNVSIT(PXCEVIEN,0),PXCEHLOC,PXCEVIEN) S PXCELOOP=0
 | 
|---|
| 33 |  . E  S PXCELOOP=1
 | 
|---|
| 34 |  I $D(PXCAAFTR) S PXCELOOP=1
 | 
|---|
| 35 |  F  D DOONE Q:PXCELOOP
 | 
|---|
| 36 |  K PXCEFIEN
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 | DOONE ;
 | 
|---|
| 40 |  N PXCEUP,PXELAP
 | 
|---|
| 41 |  N PXCEAFTR
 | 
|---|
| 42 |  D INIT
 | 
|---|
| 43 |  Q:PXCEQUIT
 | 
|---|
| 44 | DOONE2 ;
 | 
|---|
| 45 |  K PXKERROR
 | 
|---|
| 46 |  S PXCENOER=0
 | 
|---|
| 47 |  D EDIT^PXCEVFI1
 | 
|---|
| 48 |  I 'PXCEQUIT,PXCECAT="SIT",$P($G(PXCEAFTR(0)),"^")]"",$P($G(PXCEAFTR(0)),"^",22)]"" D
 | 
|---|
| 49 |  . I $D(^DPT(DFN,"S",$P(PXCEAFTR(0),"^"),0)),$P($G(^DPT(DFN,"S",$P(PXCEAFTR(0),"^"),0)),"^")=$P(PXCEAFTR(0),"^",22),$P(^DPT(DFN,"S",$P(PXCEAFTR(0),"^"),0),"^",2)["C" D
 | 
|---|
| 50 |  .. S PXCEQUIT=1,$P(PXCEAFTR(0),"^")=""
 | 
|---|
| 51 |  .. W !,$C(7),"Cannot create encounter for appointment date/time and clinic that was previously cancelled, NOTHING was STORED"
 | 
|---|
| 52 |  .. D WAIT^PXCEHELP
 | 
|---|
| 53 |  I ($P(PXCEAFTR(0),"^")]"") D
 | 
|---|
| 54 |  . I PXCEQUIT D
 | 
|---|
| 55 |  .. I 'PXCEFIEN,PXCECAT="CPT" D
 | 
|---|
| 56 |  ... D REMOVE(^TMP("PXK",$J,PXCECAT,1,"IEN"))
 | 
|---|
| 57 |  .. I 'PXCENOER D
 | 
|---|
| 58 |  ... I PXCEFIEN>0 D
 | 
|---|
| 59 |  .... D:PXCECAT="CPT" MODUPD
 | 
|---|
| 60 |  .... W !,$C(7),"The last entry did not have all of the required data and NOTHING was CHANGED."
 | 
|---|
| 61 |  ... E  W !,$C(7),"The last entry did not have all of the required data and NOTHING was STORED."
 | 
|---|
| 62 |  ... D WAIT^PXCEHELP
 | 
|---|
| 63 |  . E  D SAVE^PXCEVFI2
 | 
|---|
| 64 |  D EXIT
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 | INIT ; -- init variables and list array
 | 
|---|
| 68 |  N PXCENODS,PXCEFOR,PXCENODE
 | 
|---|
| 69 |  K ^TMP("PXK",$J),PXCEAFTR
 | 
|---|
| 70 |  S ^TMP("PXK",$J,"SOR")=PXCESOR
 | 
|---|
| 71 |  S ^TMP("PXK",$J,"VST",1,"IEN")=PXCEVIEN
 | 
|---|
| 72 |  I PXCECAT="SIT"!(PXCECAT="APPM")!(PXCECAT="HIST") D
 | 
|---|
| 73 |  . I PXCEVIEN>0 L +@(PXCEAUPN_"(PXCEVIEN)"):5 E  W !!,$C(7),"Cannot edit at this time, try again later." D PAUSE^PXCEHELP S PXCEQUIT=1 Q
 | 
|---|
| 74 |  . F PXCENODE=0,21,150,800,811,812 D
 | 
|---|
| 75 |  .. S PXCEAFTR(PXCENODE)=$S(PXCEVIEN>0:$G(^AUPNVSIT(PXCEVIEN,PXCENODE)),1:"")
 | 
|---|
| 76 |  .. S ^TMP("PXK",$J,"VST",1,PXCENODE,"BEFORE")=PXCEAFTR(PXCENODE)
 | 
|---|
| 77 |  E  D
 | 
|---|
| 78 |  . I PXCEFIEN>0 L +@(PXCEAUPN_"(PXCEFIEN)"):5 E  W !!,$C(7),"Cannot edit at this time, try again later." D PAUSE^PXCEHELP S PXCEQUIT=1 Q
 | 
|---|
| 79 |  . F PXCENODE=0,21,150,800,811,812 D
 | 
|---|
| 80 |  .. S ^TMP("PXK",$J,"VST",1,PXCENODE,"BEFORE")=$G(^AUPNVSIT(+PXCEVIEN,PXCENODE))
 | 
|---|
| 81 |  .. S ^TMP("PXK",$J,"VST",1,PXCENODE,"AFTER")=^TMP("PXK",$J,"VST",1,PXCENODE,"BEFORE")
 | 
|---|
| 82 |  . ;
 | 
|---|
| 83 |  . S ^TMP("PXK",$J,PXCECATS,1,"IEN")=PXCEFIEN
 | 
|---|
| 84 |  . S PXCENODS=$P($T(FORMAT^@PXCECODE),"~",3)
 | 
|---|
| 85 |  . F PXCEFOR=1:1 S PXCENODE=$P(PXCENODS,",",PXCEFOR) Q:PXCENODE']""  D
 | 
|---|
| 86 |  .. I PXCEFIEN>0 D
 | 
|---|
| 87 |  ... I PXCECAT="CPT",PXCENODE=1 D
 | 
|---|
| 88 |  .... ;Retrieve CPT Modifiers from multiple field
 | 
|---|
| 89 |  .... S PXCESEQ=0
 | 
|---|
| 90 |  .... F  S PXCESEQ=$O(@(PXCEAUPN_"(PXCEFIEN,PXCENODE,PXCESEQ)")) Q:'PXCESEQ  D
 | 
|---|
| 91 |  ..... S ^TMP("PXK",$J,PXCECATS,1,PXCENODE,PXCESEQ,"BEFORE")=$G(@(PXCEAUPN_"(PXCEFIEN,PXCENODE,PXCESEQ,0)"))
 | 
|---|
| 92 |  ..... S PXCEAFTR(PXCENODE,PXCESEQ)=^TMP("PXK",$J,PXCECATS,1,PXCENODE,PXCESEQ,"BEFORE")
 | 
|---|
| 93 |  ... E  D
 | 
|---|
| 94 |  .... S ^TMP("PXK",$J,PXCECATS,1,PXCENODE,"BEFORE")=$G(@(PXCEAUPN_"(PXCEFIEN,PXCENODE)"))
 | 
|---|
| 95 |  .... S PXCEAFTR(PXCENODE)=^TMP("PXK",$J,PXCECATS,1,PXCENODE,"BEFORE")
 | 
|---|
| 96 |  .. E  D
 | 
|---|
| 97 |  ... I PXCECAT="CPT",PXCENODE=1 D  Q
 | 
|---|
| 98 |  .... S ^TMP("PXK",$J,PXCECATS,1,PXCENODE,1,"BEFORE")=""
 | 
|---|
| 99 |  ... S ^TMP("PXK",$J,PXCECATS,1,PXCENODE,"BEFORE")=""
 | 
|---|
| 100 |  ... S PXCEAFTR(PXCENODE)=^TMP("PXK",$J,PXCECATS,1,PXCENODE,"BEFORE")
 | 
|---|
| 101 |  Q:PXCEQUIT
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  I PXCEAUPN'="^AUPNVSIT" D
 | 
|---|
| 104 |  . ;Set the Patient and Visit pointers in the V-File.
 | 
|---|
| 105 |  . S:'$P(PXCEAFTR(0),"^",2) $P(PXCEAFTR(0),"^",2)=PXCEPAT
 | 
|---|
| 106 |  . S:'$P(PXCEAFTR(0),"^",3) $P(PXCEAFTR(0),"^",3)=PXCEVIEN
 | 
|---|
| 107 |  . I $P(PXCEAFTR(0),"^",1)="" D
 | 
|---|
| 108 |  .. S:'$P(PXCEAFTR(812),"^",2) $P(PXCEAFTR(812),"^",2)=PXCEPKG
 | 
|---|
| 109 |  .. S:'$P(PXCEAFTR(812),"^",3) $P(PXCEAFTR(812),"^",3)=PXCESOR
 | 
|---|
| 110 |  E  D
 | 
|---|
| 111 |  . ;If new visit set package and source.
 | 
|---|
| 112 |  . I $P(PXCEAFTR(0),"^",1)="" D
 | 
|---|
| 113 |  .. S:'$P(PXCEAFTR(812),"^",2) $P(PXCEAFTR(812),"^",2)=PXCEPKG
 | 
|---|
| 114 |  .. S:'$P(PXCEAFTR(812),"^",3) $P(PXCEAFTR(812),"^",3)=PXCESOR
 | 
|---|
| 115 |  . ;Set the Patient in the Visit for new visit.
 | 
|---|
| 116 |  . I $G(PXCEAPDT)>0 D
 | 
|---|
| 117 |  .. S:'$P(PXCEAFTR(0),"^",1) $P(PXCEAFTR(0),"^",1)=PXCEAPDT
 | 
|---|
| 118 |  .. I '$P(PXCEAFTR(0),"^",21) D
 | 
|---|
| 119 |  ... ;Get the ELIGIBILITY for the appointment
 | 
|---|
| 120 |  ... N PXCEELIG
 | 
|---|
| 121 |  ... S PXCEELIG=$$ELIGIBIL^PXCEVSIT(PXCEPAT,PXCEHLOC,PXCEAPDT)
 | 
|---|
| 122 |  ... S:PXCEELIG>0 $P(PXCEAFTR(0),"^",21)=PXCEELIG
 | 
|---|
| 123 |  . S:'$P(PXCEAFTR(0),"^",5)&($G(PXCEPAT)>0) $P(PXCEAFTR(0),"^",5)=PXCEPAT
 | 
|---|
| 124 |  . S:'$P(PXCEAFTR(0),"^",22)&($G(PXCEHLOC)>0) $P(PXCEAFTR(0),"^",22)=PXCEHLOC
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | EXIT ; -- exit code
 | 
|---|
| 128 |  I PXCECAT="SIT"!(PXCECAT="APPM")!(PXCECAT="HIST") L:PXCEVIEN>0 -@(PXCEAUPN_"(PXCEVIEN)"):30
 | 
|---|
| 129 |  E  L:PXCEFIEN>0 -@(PXCEAUPN_"(PXCEFIEN)"):30
 | 
|---|
| 130 |  S PXCEFIEN=""
 | 
|---|
| 131 |  K ^TMP("PXK",$J)
 | 
|---|
| 132 |  K PXCEAFTR
 | 
|---|
| 133 |  S PXCEQUIT=0
 | 
|---|
| 134 |  Q
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 | MODUPD ;Update the MODIFIER list for the currently edited CPT code when all
 | 
|---|
| 137 |  ;the reqired data is not entered.
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  N SQ,DA,DIC,DIK,X
 | 
|---|
| 140 |  S SQ=""
 | 
|---|
| 141 |  F  S SQ=$O(PXCEAFTR(1,SQ)) Q:'SQ  D
 | 
|---|
| 142 |  .S DA(1)=PXCEFIEN,DA=SQ
 | 
|---|
| 143 |  .S DIK="^AUPNVCPT("_DA(1)_","_1_","
 | 
|---|
| 144 |  .D ^DIK
 | 
|---|
| 145 |  F  S SQ=$O(^TMP("PXK",$J,"CPT",1,1,SQ)) Q:'SQ  D
 | 
|---|
| 146 |  .S X=^TMP("PXK",$J,"CPT",1,1,SQ,"BEFORE")
 | 
|---|
| 147 |  .Q:X']""
 | 
|---|
| 148 |  .K DD,DO
 | 
|---|
| 149 |  .S DA(1)=PXCEFIEN
 | 
|---|
| 150 |  .S DIC="^AUPNVCPT("_DA(1)_","_1_","
 | 
|---|
| 151 |  .S DIC(0)="L",DIC("P")=$P(^DD(9000010.18,1,0),"^",2)
 | 
|---|
| 152 |  .D FILE^DICN
 | 
|---|
| 153 |  Q
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 | REMOVE(DA) ;REMOVE INCOMPLETE CPT ENTRY
 | 
|---|
| 156 |  N DIK
 | 
|---|
| 157 |  S DIK="^AUPNVCPT("
 | 
|---|
| 158 |  I $G(DA) D ^DIK ;PX*1*124
 | 
|---|
| 159 |  Q
 | 
|---|