AMHGESIG ; IHS/CMI/MAW - AMHG GUI ESig Utilities 6/22/2009 11:14:59 AM ;
 ;;4.0;IHS BEHAVIORAL HEALTH;**1,10**;JUN 02, 2010;Build 15
 ;
 ;
 ;
 ;
DEBUG(RETVAL,AMHSTR)  ;replace tag below to allow Serenji debug of GUI
 D DEBUG^%Serenji("GETPAT^AMHGU(.RETVAL,.AMHSTR)")
 Q
 ;
CHKESIG(RETVAL,AMHSTR) ;-- check esig status
 S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
 N P,AMHREC,AMHGRP,AMHVAL
 S P="|"
 S AMHI=0
 K ^AMHTMP($J)
 S RETVAL="^AMHTMP("_$J_")"
 S ^AMHTMP($J,AMHI)="T00250Value"_$C(30)
 S AMHREC=$P(AMHSTR,P)
 S AMHGRP=+$P(AMHSTR,P,2)
 S AMHVAL=$$ESIG^AMHESIG(AMHREC,AMHGRP)
 S AMHI=AMHI+1
 S @RETVAL@(AMHI)=$TR(AMHVAL,U,"~")_$C(30)
 S @RETVAL@(AMHI+1)=$C(31)
 Q
 ;
CHKIESIG(RETVAL,AMHSTR) ;-- check esig status
 S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
 N P,AMHREC,AMHGRP,AMHVAL
 S P="|"
 S AMHI=0
 K ^AMHTMP($J)
 S RETVAL="^AMHTMP("_$J_")"
 S ^AMHTMP($J,AMHI)="T00250Value"_$C(30)
 S AMHREC=$P(AMHSTR,P)
 S AMHGRP=+$P(AMHSTR,P,2)
 S AMHVAL=$$ESIGINT^AMHESIG(AMHREC,AMHGRP)
 S AMHI=AMHI+1
 S @RETVAL@(AMHI)=$TR(AMHVAL,U,"~")_$C(30)
 S @RETVAL@(AMHI+1)=$C(31)
 Q
 ;
CHKGESIG(RETVAL,AMHSTR) ;-- check esig status
 S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
 N P,AMHREC,AMHGRP,AMHVAL
 S P="|"
 S AMHI=0
 K ^AMHTMP($J)
 S RETVAL="^AMHTMP("_$J_")"
 S ^AMHTMP($J,AMHI)="T00250Value"_$C(30)
 S AMHREC=$P(AMHSTR,P)
 S AMHGRP=+$P(AMHSTR,P,2)
 S AMHVAL=$$GESIG(AMHREC,AMHGRP)
 S AMHI=AMHI+1
 S @RETVAL@(AMHI)=$TR(AMHVAL,U,"~")_$C(30)
 S @RETVAL@(AMHI+1)=$C(31)
 Q
 ;
SIGN(RETVAL,AMHSTR) ;-- sign the record if valid, if not return invalid
 S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
 N P,AMHREC,AMHESIG,AMHEESIG,AMHPESIG,AMHVAL
 S P="|"
 S AMHI=0
 K ^AMHTMP($J)
 S RETVAL="^AMHTMP("_$J_")"
 S AMHREC=$P(AMHSTR,P)
 S AMHESIG=$P(AMHSTR,P,2)
 S X=AMHESIG
 D HASH^XUSHSHP
 S AMHEESIG=X
 S AMHPESIG=$P($G(^VA(200,DUZ,20)),U,4)
 S AMHVAL=$S(AMHEESIG=AMHPESIG:1,1:0)
 I $G(AMHVAL) D UPDREC(AMHREC,DUZ)
 S @RETVAL@(AMHI)="T00001Valid"_$C(30)
 S AMHI=AMHI+1
 S @RETVAL@(AMHI)=$G(AMHVAL)_$C(30)
 S @RETVAL@(AMHI+1)=$C(31)
 Q
 ;
GSIGN(RETVAL,AMHSTR) ;-- sign the group record if valid, if not return invalid
 S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
 N P,AMHREC,AMHESIG,AMHEESIG,AMHPESIG,AMHVAL
 S P="|"
 S AMHI=0
 K ^AMHTMP($J)
 S RETVAL="^AMHTMP("_$J_")"
 S AMHREC=$P(AMHSTR,P)
 S AMHESIG=$P(AMHSTR,P,2)
 S X=AMHESIG
 D HASH^XUSHSHP
 S AMHEESIG=X
 S AMHPESIG=$P($G(^VA(200,DUZ,20)),U,4)
 S AMHVAL=$S(AMHEESIG=AMHPESIG:1,1:0)
 I $G(AMHVAL) D UPDGREC(AMHREC,DUZ)
 S @RETVAL@(AMHI)="T00001Valid"_$C(30)
 S AMHI=AMHI+1
 S @RETVAL@(AMHI)=$G(AMHVAL)_$C(30)
 S @RETVAL@(AMHI+1)=$C(31)
 Q
 ;
ISIGN(RETVAL,AMHSTR) ;-- sign the record if valid, if not return invalid
 S X="MERR^AMHGU",@^%ZOSF("TRAP") ; m error trap
 N P,AMHREC,AMHESIG,AMHEESIG,AMHPESIG,AMHVAL
 S P="|"
 S AMHI=0
 K ^AMHTMP($J)
 S RETVAL="^AMHTMP("_$J_")"
 S AMHREC=$P(AMHSTR,P)
 S AMHESIG=$P(AMHSTR,P,2)
 S X=AMHESIG
 D HASH^XUSHSHP
 S AMHEESIG=X
 S AMHPESIG=$P($G(^VA(200,DUZ,20)),U,4)
 S AMHVAL=$S(AMHEESIG=AMHPESIG:1,1:0)
 I $G(AMHVAL) D UPDRECI(AMHREC,DUZ)
 S @RETVAL@(AMHI)="T00001Valid"_$C(30)
 S AMHI=AMHI+1
 S @RETVAL@(AMHI)=$G(AMHVAL)_$C(30)
 S @RETVAL@(AMHI+1)=$C(31)
 Q
 ;
UPDREC(REC,DZ) ;EP -- update the record with the date and user
 ;cmi/maw v4.0p10 also do we need to check for groups only?
 I $$GET1^DIQ(9002011,REC,1112)]"",$$GET1^DIQ(9002011,REC,1113)]"" Q  ;cmi/maw v4.0p10 dont update if an edit and signed
 N AMHFDA,AMHIENS,AMHERRR,AMHNOW
 S AMHIENS=REC_","
 S AMHNOW=$$NOW^XLFDT()
 S AMHFDA(9002011,AMHIENS,1112)=AMHNOW
 S AMHFDA(9002011,AMHIENS,1113)=$P($G(^VA(200,DUZ,20)),U,2)
 S AMHFDA(9002011,AMHIENS,1116)=$P($G(^VA(200,DUZ,20)),U,3)
 D FILE^DIE("K","AMHFDA","AMHERRR(1)")
 Q
 ;
UPDRECI(REC,DZ) ;EP -- update the record with the date and user
 N AMHFDA,AMHIENS,AMHERRR,AMHNOW
 S AMHIENS=REC_","
 S AMHNOW=$$NOW^XLFDT()
 S AMHFDA(9002011.13,AMHIENS,.11)=AMHNOW
 S AMHFDA(9002011.13,AMHIENS,.12)=$P($G(^VA(200,DUZ,20)),U,2)
 D FILE^DIE("K","AMHFDA","AMHERRR(1)")
 Q
 ;
UPDGREC(REC,DZ) ;-- update the record with the date and user
 N AMHFDA,AMHIENS,AMHERRR,AMHNOW
 S AMHIENS=REC_","
 S AMHNOW=$$NOW^XLFDT()
 S AMHFDA(9002011.67,AMHIENS,.18)=1
 S AMHFDA(9002011.67,AMHIENS,.21)=AMHNOW
 S AMHFDA(9002011.67,AMHIENS,.19)=$P($G(^VA(200,DUZ,20)),U,2)
 D FILE^DIE("K","AMHFDA","AMHERRR(1)")
 Q
 ;
GESIG(R,G) ;EP - called for esig
 NEW X1,DA,DR,DIE,D
 S D=$P($P(^AMHGROUP(R,0),U),".")
 I '$$ESIGREQ^AMHESIG(,D) Q "0^1^E Sig not required for this group, visit is prior to Version 4.0 install date."  ;not required
 I $P($G(^AMHGROUP(R,0)),U,18)]"" Q "0^1^Note already signed, no E Sig necessary." ;
 I $$PP^AMHEGR(R)="" Q "0^0^No primary provider to check.  No PCC link."
 I $D(^AMHSITE(DUZ(2),19,"B",$$PP^AMHEGR(R))) Q "0^1^Provider opted out of E Sig, no E Sig required."
 I DUZ'=$$PP^AMHEGR(R) Q "0^0^Only the Primary provider is permitted to sign a note."
 ;I '$O(^AMHGROUP(R,61,0)) Q "0^0^There were no visits created for this group."
 Q "1^1"
 ;
AMHGESIG  ; IHS/CMI/MAW - AMHG GUI ESig Utilities 6/22/2009 11:14:59 AM ;
 +1       ;;4.0;IHS BEHAVIORAL HEALTH;**1,10**;JUN 02, 2010;Build 15
 +2       ;
 +3       ;
 +4       ;
 +5       ;
DEBUG(RETVAL,AMHSTR) ;replace tag below to allow Serenji debug of GUI
 +1        DO DEBUG^%Serenji("GETPAT^AMHGU(.RETVAL,.AMHSTR)")
 +2        QUIT 
 +3       ;
CHKESIG(RETVAL,AMHSTR) ;-- check esig status
 +1       ; m error trap
           SET X="MERR^AMHGU"
           SET @^%ZOSF("TRAP")
 +2        NEW P,AMHREC,AMHGRP,AMHVAL
 +3        SET P="|"
 +4        SET AMHI=0
 +5        KILL ^AMHTMP($JOB)
 +6        SET RETVAL="^AMHTMP("_$JOB_")"
 +7        SET ^AMHTMP($JOB,AMHI)="T00250Value"_$CHAR(30)
 +8        SET AMHREC=$PIECE(AMHSTR,P)
 +9        SET AMHGRP=+$PIECE(AMHSTR,P,2)
 +10       SET AMHVAL=$$ESIG^AMHESIG(AMHREC,AMHGRP)
 +11       SET AMHI=AMHI+1
 +12       SET @RETVAL@(AMHI)=$TRANSLATE(AMHVAL,U,"~")_$CHAR(30)
 +13       SET @RETVAL@(AMHI+1)=$CHAR(31)
 +14       QUIT 
 +15      ;
CHKIESIG(RETVAL,AMHSTR) ;-- check esig status
 +1       ; m error trap
           SET X="MERR^AMHGU"
           SET @^%ZOSF("TRAP")
 +2        NEW P,AMHREC,AMHGRP,AMHVAL
 +3        SET P="|"
 +4        SET AMHI=0
 +5        KILL ^AMHTMP($JOB)
 +6        SET RETVAL="^AMHTMP("_$JOB_")"
 +7        SET ^AMHTMP($JOB,AMHI)="T00250Value"_$CHAR(30)
 +8        SET AMHREC=$PIECE(AMHSTR,P)
 +9        SET AMHGRP=+$PIECE(AMHSTR,P,2)
 +10       SET AMHVAL=$$ESIGINT^AMHESIG(AMHREC,AMHGRP)
 +11       SET AMHI=AMHI+1
 +12       SET @RETVAL@(AMHI)=$TRANSLATE(AMHVAL,U,"~")_$CHAR(30)
 +13       SET @RETVAL@(AMHI+1)=$CHAR(31)
 +14       QUIT 
 +15      ;
CHKGESIG(RETVAL,AMHSTR) ;-- check esig status
 +1       ; m error trap
           SET X="MERR^AMHGU"
           SET @^%ZOSF("TRAP")
 +2        NEW P,AMHREC,AMHGRP,AMHVAL
 +3        SET P="|"
 +4        SET AMHI=0
 +5        KILL ^AMHTMP($JOB)
 +6        SET RETVAL="^AMHTMP("_$JOB_")"
 +7        SET ^AMHTMP($JOB,AMHI)="T00250Value"_$CHAR(30)
 +8        SET AMHREC=$PIECE(AMHSTR,P)
 +9        SET AMHGRP=+$PIECE(AMHSTR,P,2)
 +10       SET AMHVAL=$$GESIG(AMHREC,AMHGRP)
 +11       SET AMHI=AMHI+1
 +12       SET @RETVAL@(AMHI)=$TRANSLATE(AMHVAL,U,"~")_$CHAR(30)
 +13       SET @RETVAL@(AMHI+1)=$CHAR(31)
 +14       QUIT 
 +15      ;
SIGN(RETVAL,AMHSTR) ;-- sign the record if valid, if not return invalid
 +1       ; m error trap
           SET X="MERR^AMHGU"
           SET @^%ZOSF("TRAP")
 +2        NEW P,AMHREC,AMHESIG,AMHEESIG,AMHPESIG,AMHVAL
 +3        SET P="|"
 +4        SET AMHI=0
 +5        KILL ^AMHTMP($JOB)
 +6        SET RETVAL="^AMHTMP("_$JOB_")"
 +7        SET AMHREC=$PIECE(AMHSTR,P)
 +8        SET AMHESIG=$PIECE(AMHSTR,P,2)
 +9        SET X=AMHESIG
 +10       DO HASH^XUSHSHP
 +11       SET AMHEESIG=X
 +12       SET AMHPESIG=$PIECE($GET(^VA(200,DUZ,20)),U,4)
 +13       SET AMHVAL=$SELECT(AMHEESIG=AMHPESIG:1,1:0)
 +14       IF $GET(AMHVAL)
               DO UPDREC(AMHREC,DUZ)
 +15       SET @RETVAL@(AMHI)="T00001Valid"_$CHAR(30)
 +16       SET AMHI=AMHI+1
 +17       SET @RETVAL@(AMHI)=$GET(AMHVAL)_$CHAR(30)
 +18       SET @RETVAL@(AMHI+1)=$CHAR(31)
 +19       QUIT 
 +20      ;
GSIGN(RETVAL,AMHSTR) ;-- sign the group record if valid, if not return invalid
 +1       ; m error trap
           SET X="MERR^AMHGU"
           SET @^%ZOSF("TRAP")
 +2        NEW P,AMHREC,AMHESIG,AMHEESIG,AMHPESIG,AMHVAL
 +3        SET P="|"
 +4        SET AMHI=0
 +5        KILL ^AMHTMP($JOB)
 +6        SET RETVAL="^AMHTMP("_$JOB_")"
 +7        SET AMHREC=$PIECE(AMHSTR,P)
 +8        SET AMHESIG=$PIECE(AMHSTR,P,2)
 +9        SET X=AMHESIG
 +10       DO HASH^XUSHSHP
 +11       SET AMHEESIG=X
 +12       SET AMHPESIG=$PIECE($GET(^VA(200,DUZ,20)),U,4)
 +13       SET AMHVAL=$SELECT(AMHEESIG=AMHPESIG:1,1:0)
 +14       IF $GET(AMHVAL)
               DO UPDGREC(AMHREC,DUZ)
 +15       SET @RETVAL@(AMHI)="T00001Valid"_$CHAR(30)
 +16       SET AMHI=AMHI+1
 +17       SET @RETVAL@(AMHI)=$GET(AMHVAL)_$CHAR(30)
 +18       SET @RETVAL@(AMHI+1)=$CHAR(31)
 +19       QUIT 
 +20      ;
ISIGN(RETVAL,AMHSTR) ;-- sign the record if valid, if not return invalid
 +1       ; m error trap
           SET X="MERR^AMHGU"
           SET @^%ZOSF("TRAP")
 +2        NEW P,AMHREC,AMHESIG,AMHEESIG,AMHPESIG,AMHVAL
 +3        SET P="|"
 +4        SET AMHI=0
 +5        KILL ^AMHTMP($JOB)
 +6        SET RETVAL="^AMHTMP("_$JOB_")"
 +7        SET AMHREC=$PIECE(AMHSTR,P)
 +8        SET AMHESIG=$PIECE(AMHSTR,P,2)
 +9        SET X=AMHESIG
 +10       DO HASH^XUSHSHP
 +11       SET AMHEESIG=X
 +12       SET AMHPESIG=$PIECE($GET(^VA(200,DUZ,20)),U,4)
 +13       SET AMHVAL=$SELECT(AMHEESIG=AMHPESIG:1,1:0)
 +14       IF $GET(AMHVAL)
               DO UPDRECI(AMHREC,DUZ)
 +15       SET @RETVAL@(AMHI)="T00001Valid"_$CHAR(30)
 +16       SET AMHI=AMHI+1
 +17       SET @RETVAL@(AMHI)=$GET(AMHVAL)_$CHAR(30)
 +18       SET @RETVAL@(AMHI+1)=$CHAR(31)
 +19       QUIT 
 +20      ;
UPDREC(REC,DZ) ;EP -- update the record with the date and user
 +1       ;cmi/maw v4.0p10 also do we need to check for groups only?
 +2       ;cmi/maw v4.0p10 dont update if an edit and signed
           IF $$GET1^DIQ(9002011,REC,1112)]""
               IF $$GET1^DIQ(9002011,REC,1113)]""
                   QUIT 
 +3        NEW AMHFDA,AMHIENS,AMHERRR,AMHNOW
 +4        SET AMHIENS=REC_","
 +5        SET AMHNOW=$$NOW^XLFDT()
 +6        SET AMHFDA(9002011,AMHIENS,1112)=AMHNOW
 +7        SET AMHFDA(9002011,AMHIENS,1113)=$PIECE($GET(^VA(200,DUZ,20)),U,2)
 +8        SET AMHFDA(9002011,AMHIENS,1116)=$PIECE($GET(^VA(200,DUZ,20)),U,3)
 +9        DO FILE^DIE("K","AMHFDA","AMHERRR(1)")
 +10       QUIT 
 +11      ;
UPDRECI(REC,DZ) ;EP -- update the record with the date and user
 +1        NEW AMHFDA,AMHIENS,AMHERRR,AMHNOW
 +2        SET AMHIENS=REC_","
 +3        SET AMHNOW=$$NOW^XLFDT()
 +4        SET AMHFDA(9002011.13,AMHIENS,.11)=AMHNOW
 +5        SET AMHFDA(9002011.13,AMHIENS,.12)=$PIECE($GET(^VA(200,DUZ,20)),U,2)
 +6        DO FILE^DIE("K","AMHFDA","AMHERRR(1)")
 +7        QUIT 
 +8       ;
UPDGREC(REC,DZ) ;-- update the record with the date and user
 +1        NEW AMHFDA,AMHIENS,AMHERRR,AMHNOW
 +2        SET AMHIENS=REC_","
 +3        SET AMHNOW=$$NOW^XLFDT()
 +4        SET AMHFDA(9002011.67,AMHIENS,.18)=1
 +5        SET AMHFDA(9002011.67,AMHIENS,.21)=AMHNOW
 +6        SET AMHFDA(9002011.67,AMHIENS,.19)=$PIECE($GET(^VA(200,DUZ,20)),U,2)
 +7        DO FILE^DIE("K","AMHFDA","AMHERRR(1)")
 +8        QUIT 
 +9       ;
GESIG(R,G) ;EP - called for esig
 +1        NEW X1,DA,DR,DIE,D
 +2        SET D=$PIECE($PIECE(^AMHGROUP(R,0),U),".")
 +3       ;not required
           IF '$$ESIGREQ^AMHESIG(,D)
               QUIT "0^1^E Sig not required for this group, visit is prior to Version 4.0 install date."
 +4       ;
           IF $PIECE($GET(^AMHGROUP(R,0)),U,18)]""
               QUIT "0^1^Note already signed, no E Sig necessary."
 +5        IF $$PP^AMHEGR(R)=""
               QUIT "0^0^No primary provider to check.  No PCC link."
 +6        IF $DATA(^AMHSITE(DUZ(2),19,"B",$$PP^AMHEGR(R)))
               QUIT "0^1^Provider opted out of E Sig, no E Sig required."
 +7        IF DUZ'=$$PP^AMHEGR(R)
               QUIT "0^0^Only the Primary provider is permitted to sign a note."
 +8       ;I '$O(^AMHGROUP(R,61,0)) Q "0^0^There were no visits created for this group."
 +9        QUIT "1^1"
 +10      ;