Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: GMRCAD31

GMRCAD31.m

Go to the documentation of this file.
GMRCAD31 ;SLC/JFR - admin corrections on cons. activities; 2/19/03 14:09
 ;;3.0;CONSULT/REQUEST TRACKING;**32**;DEC 27, 1997
EN ;Start prompting and prepare to build a list
 N GMRCIEN
 S GMRCIEN=$$GETCSLT
 I 'GMRCIEN W !,"No Consult selected." Q
 I '$$CKACTS(GMRCIEN) D  G EN
 . W !,"The request has no activities meeting editing criteria"
 . H 2
 D BLDLST(GMRCIEN)
 D EN^VALM("GMRC ADM31")
 Q
 ;
GETCSLT() ;
 N DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
 D EN^DDIOL("You may only select IFC requests ordered at your facility")
 D EN^DDIOL(" ")
 S DIR(0)="PAO^123"
 S DIR("?")="Select an inter-facility request being performed elsewhere"
 S DIR("A")="Select Consult #: "
 S DIR("S")="I $P($G(^GMR(123,+Y,12)),U,5)=""P"""
 D ^DIR
 I '$G(Y) Q ""
 Q +Y
 Q
 ;
NEWCSLT ; select a new consult to work on
 D FULL^VALM1
 N GMRCIEN
 S GMRCIEN=$$GETCSLT
 I 'GMRCIEN D  D INIT Q
 . N DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
 . S DIR(0)="E" D ^DIR
 . Q
 I '$$CKACTS(GMRCIEN) D  D INIT Q
 . W !,"The request has no activities meeting editing criteria"
 D EXIT,BLDLST(GMRCIEN),INIT
 Q
 ;
SELACT ; choose which action to edit
 D FULL^VALM1
 N DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y,GMRCO
 D EN^DDIOL("You may only select one of the listed activities.")
 D EN^DDIOL(" ")
 S DIR(0)="NAO^2:50"
 S DIR("A")="Select an activity from the list by number: "
 D ^DIR
 I $D(DIRUT) S VALMBCK="R" Q
 I '$D(^TMP("GMRCADM",$J,"B",+Y)) D  G SELACT
 . D EN^DDIOL("That is not a listed activity",,"!!?5")
 S GMRCO=$G(^TMP("GMRCADM",$J,"CSLT"))
 D FIX(GMRCO,+Y)
 D EXIT,BLDLST(GMRCO),INIT
 S VALMBCK="R"
 Q
 ;
BLDLST(GMRCDA) ;build the list for LM
 ; Input: 
 ;  GMRCDA = ien from file 123
 ;
 K ^TMP("GMRCADM",$J)
 N PTNM,PTSSN,REMSIT,REMNUM,GMRCCT,TAB
 S ^TMP("GMRCADM",$J,"CSLT")=GMRCDA
 S GMRCCT=1,TAB=$$REPEAT^XLFSTR(" ",29)
 S PTNM="Patient name: "_$$GET1^DIQ(123,GMRCDA,.02,"E")
 S PTSSN="SSN: "_$$GET1^DIQ(2,$P(^GMR(123,GMRCDA,0),U,2),.09)
 S REMSIT="Receiving Site: "
 S REMSIT=REMSIT_$$GET1^DIQ(4,$P(^GMR(123,GMRCDA,0),U,23),.01)
 S REMNUM="Remote Consult #: "_$P(^GMR(123,GMRCDA,0),U,22)
 S ^TMP("GMRCADM",$J,GMRCCT,0)="Consult #: "_GMRCDA
 S GMRCCT=GMRCCT+1
 S ^TMP("GMRCADM",$J,GMRCCT,0)=PTNM_"      "_PTSSN
 S GMRCCT=GMRCCT+1
 S ^TMP("GMRCADM",$J,GMRCCT,0)=REMSIT_"   "_REMNUM
 S GMRCCT=GMRCCT+1
 S ^TMP("GMRCADM",$J,GMRCCT,0)="",GMRCCT=GMRCCT+1
 S ^TMP("GMRCADM",$J,GMRCCT,0)="Facility",GMRCCT=GMRCCT+1
 S ^TMP("GMRCADM",$J,GMRCCT,0)=" Activity"_$E(TAB,1,16)_"Date/Time/Zone"_$E(TAB,1,6)_"Responsible Person"_$E(TAB,1,2)_"Entered By",GMRCCT=GMRCCT+1
 S ^TMP("GMRCADM",$J,GMRCCT,0)=$$REPEAT^XLFSTR("-",79)
 S GMRCCT=GMRCCT+1
 N ACTV
 S ACTV=0
 F  S ACTV=$O(^GMR(123,GMRCDA,40,ACTV)) Q:'ACTV  D
 . N ACTYPE
 . S ACTYPE=$P(^GMR(123,GMRCDA,40,ACTV,0),U,2)
 . Q:ACTYPE'=17&(ACTYPE'=4)  ;only FWD and SF are affected
 . Q:'$D(^GMR(123,GMRCDA,40,ACTV,2))  ;only remote activities
 . Q:'$O(^GMR(123,GMRCDA,40,ACTV,1,1))
 . S ^TMP("GMRCADM",$J,"B",ACTV)=GMRCCT
 . S ^TMP("GMRCADM",$J,GMRCCT,0)="    Act. #: "_ACTV,GMRCCT=GMRCCT+1
 . D BLDALN^GMRCSLM4(GMRCDA,ACTV)
 . M ^TMP("GMRCADM",$J)=^TMP("GMRCR",$J,"DT")
 . K ^TMP("GMRCR",$J,"DT")
 . S ^TMP("GMRCADM",$J,GMRCCT,0)="",GMRCCT=GMRCCT+1
 . Q
 Q
 ;
INIT ;
 S VALMCNT=$O(^TMP("GMRCADM",$J," "),-1)
 S VALMBG=1
 S VALMBCK="R"
 Q
 ;
EXIT ;
 K ^TMP("GMRCADM",$J)
 S VALMBCK="Q"
 Q
 ;
HDR ;
 S VALMHDR(1)=$$CJ^XLFSTR(("Consult #:"_^TMP("GMRCADM",$J,"CSLT")),80)
 Q
CKACTS(CSLT) ;assure that there is at least one activity meeting criteria
 ; Input:
 ;   CSLT = ien from file 123
 ;
 N ACTV,OK
 S ACTV=0,OK=0
 F  S ACTV=$O(^GMR(123,CSLT,40,ACTV)) Q:'ACTV!(OK=1)  D
 . N ACTYPE
 . S ACTYPE=$P(^GMR(123,CSLT,40,ACTV,0),U,2)
 . I ACTYPE=17 S OK=1 ; FWD action
 . I ACTYPE=4 S OK=1 ; SF action
 . I OK,'$D(^GMR(123,CSLT,40,ACTV,2)) S OK=0 ;only remote activities
 . I OK,'$O(^GMR(123,CSLT,40,ACTV,1,1)) S OK=0 ;only those with comments
 Q OK
 ;
FIX(GMRCDA,GMRCACT) ;do the admin correction on bad IFC comments
 ; GMRCDA  = ien from file 123
 ; GMRCACT = ien within 40 multiple for activity
 ;
 I '$D(^GMR(123,GMRCDA,40,1)) D  Q
 . W !,"No comment there to correct"
 K ^TMP("GMRCOCMT",$J)
 M ^TMP("GMRCOCMT",$J)=^GMR(123,GMRCDA,40,GMRCACT,1)
 W !!
 N DIE,DR,DA,CHGD
 S CHGD=0
 S DA=GMRCACT,DA(1)=GMRCDA,DR=5,DIE="^GMR(123,"_DA(1)_",40,"
 D ^DIE
 I $O(^GMR(123,GMRCDA,40,GMRCACT,1," "),-1)'=$O(^TMP("GMRCOCMT",$J," "),-1) S CHGD=1
 I 'CHGD D
 . N I S I=0
 . F  S I=$O(^GMR(123,GMRCDA,40,GMRCACT,1,I)) Q:'I!(CHGD)  D
 .. I ^GMR(123,GMRCDA,40,GMRCACT,1,I,0)'=^TMP("GMRCOCMT",$J,I,0) S CHGD=1
 .. Q
 I 'CHGD W !,"No comment modification made!",!
 I CHGD D AUDIT(GMRCDA,GMRCACT,$NA(^TMP("GMRCOCMT",$J)))
 K ^TMP("GMRCOCMT",$J)
 Q
 ;
AUDIT(GMRCO,GMRCAC,ARRAY) ;make new audit trail activity w/old and new
 ;Input: 
 ;  GMRCO  = ien from file 123
 ;  GMRCAC = IEN WITHIN 40 MULTIPLE
 ;  ARRAY  = array containing the old comment
 N GMRCA,GMRCAD,GMRCMT,GMRCDA,DA,NUM,I
 N ACTYPE,ACTWHO,ACTRESP,ACTWHEN
 I '$G(GMRCO) Q
 ; load up particulars about edited activity, then load old comment
 ; then load up new comment in GMRCMT local array
 S ACTYPE=$$GET1^DIQ(123.1,$P(^GMR(123,GMRCO,40,GMRCAC,0),U,2),.01)
 S ACTWHO=$P(^GMR(123,GMRCO,40,GMRCAC,2),U)
 S ACTRESP=$P(^GMR(123,GMRCO,40,GMRCAC,2),U,2)
 D  ;GET VALUE OF ACTWHEN
 . N X
 . S X=$P(^GMR(123,GMRCO,40,GMRCAC,2),U,5) D REGDTM^GMRCU
 . S ACTWHEN=X_" "_$P(^GMR(123,GMRCO,40,GMRCAC,2),U,3)
 S NUM=1
 S GMRCMT(NUM)=" ",NUM=NUM+1
 S GMRCMT(NUM)="The "_ACTYPE_" action, added "_ACTWHEN_" by",NUM=NUM+1
 S GMRCMT(NUM)=ACTWHO_" "_$S($L(ACTRESP):("for "_ACTRESP),1:"")_","
 S GMRCMT(NUM)=GMRCMT(NUM)_" has been administratively corrected."
 S NUM=NUM+1,GMRCMT(NUM)=" ",NUM=NUM+1
 S GMRCMT(NUM)="The comment was corrected from:",NUM=NUM+1
 S GMRCMT(NUM)=" ",NUM=NUM+1
 S I=0 ;load up old comment
 F  S I=$O(^TMP("GMRCOCMT",$J,I)) Q:'I  D
 . S GMRCMT(NUM)=^TMP("GMRCOCMT",$J,I,0),NUM=NUM+1
 S GMRCMT(NUM)=" ",NUM=NUM+1
 S GMRCMT(NUM)="The comment was corrected to: ",NUM=NUM+1
 S GMRCMT(NUM)=" ",NUM=NUM+1
 S I=0 ;load up current comment
 F  S I=$O(^GMR(123,GMRCO,40,GMRCAC,1,I)) Q:'I  D
 . S GMRCMT(NUM)=^GMR(123,GMRCO,40,GMRCAC,1,I,0)
 . S NUM=NUM+1
 ;
 ; file admin correct comment
 S GMRCDA=$$SETDA^GMRCGUIB ; get new activity ien
 S GMRCA=26,GMRCAD=$$NOW^XLFDT,DA=GMRCDA
 D SETCOM^GMRCGUIB(.GMRCMT,DUZ)
 Q