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

ACDAUTO1.m

Go to the documentation of this file.
  1. ACDAUTO1 ;IHS/ADC/EDE/KML - auto create client services for multiple dfn's;
  1. ;;4.1;CHEMICAL DEPENDENCY MIS;;MAY 11, 1998
  1. ;;
  1. ;***********************************************************
  1. ;ACDVISP is set in the input template and must be defined
  1. ;when leaving the template and coming here. ACDVISP is the
  1. ;internal DA to ^ACDVIS for the original visit
  1. ;***********************************************************
  1. EN ;EP Ask for clients to auto create 'CS' for
  1. ;//^ACDDE
  1. D MAIN
  1. D K
  1. Q
  1. ;
  1. MAIN ;
  1. K ACDQUIT
  1. Q:'$G(ACDVISP)
  1. S ACDOPAT=$P(^ACDVIS(ACDVISP,0),U,5) ; save patient IEN
  1. ;
  1. S:'$D(ACDLINE) $P(ACDLINE,"=",80)="="
  1. ;W @IOF,!,ACDLINE,!,*7,*7,*7
  1. W !!,ACDLINE,!
  1. I $G(ACDDECSN) D I 1
  1. . W "Since you have created a new Client Service visit, I can now",!
  1. . W "automatically create an exact duplicate of it for you with",!
  1. . W "the visit and 'ALL' attached client service days but for",!
  1. . W "different patients you select.",!
  1. . Q
  1. E D
  1. . W "Since you have added client service days to a Client Service",!
  1. . W "visit I can now automatically duplicate the client service days",!
  1. . W "for different patients you select.",!
  1. . Q
  1. W ACDLINE,!
  1. ;
  1. DIR ;Ask for patients Category or Selected patients
  1. S DIR("A")="SELECTION",DIR(0)="S^1:SELECT A CATEGORY OF PATIENTS;3:EXIT" D ^DIR S:X["^"!($D(DTOUT))!(X="")!(X=3) ACDQUIT=1
  1. Q:$D(ACDQUIT)
  1. W !
  1. ;
  1. ;Ask for category of patients
  1. K ACDPT1
  1. S DIC=9002172.8,DIC(0)="AEQM",DIC("S")="I $P(^(0),U,3)=ACDCOMC,$P(^(0),U,4)=ACDCOMT,$P(^(0),U,2)=ACDPGM" D ^DIC
  1. G:Y<0 DIR
  1. I $D(^ACDPAT(+Y,1,0)) S ACDCATP=+Y F ACDA=0:0 S ACDA=$O(^ACDPAT(+Y,1,ACDA)) Q:'ACDA I $D(^(ACDA,0)) S ACDPT1(ACDA)=""
  1. ;
  1. EN1 ;Begin auto creation process of entries in ^ACDVIS
  1. Q:'$O(ACDPT1(0))
  1. W !!,"Auto creating visit nodes for:",!!
  1. F ACDDFNP=0:0 S ACDDFNP=$O(ACDPT1(ACDDFNP)) Q:'ACDDFNP D
  1. . Q:ACDDFNP=ACDOPAT ; don't process original patient
  1. . W $P(^DPT(ACDDFNP,0),U),!
  1. . D CHKCSV ; see if CS visit exists
  1. . I ACDVIEN S ACDPT1(ACDDFNP)=ACDVIEN Q
  1. . D GENCSV ; go autoduplicate the CS visit
  1. . Q
  1. D CS ; go autoduplicate the CS entries
  1. Q
  1. ;
  1. CHKCSV ; SEE IF CS VISIT EXISTS
  1. S ACDVIEN=0
  1. D GETVSITS^ACDDEU ; gather up all visits for this patient
  1. S ACDY=0
  1. I $D(^TMP("ACD",$J,"VISITS",ACDVDTI)) S ACDY=0 F S ACDY=$O(^TMP("ACD",$J,"VISITS",ACDVDTI,ACDY)) Q:'ACDY D Q:ACDQ
  1. . S X=^ACDVIS(ACDY,0)
  1. . I $P(X,U,2)=ACDCOMC,$P(X,U,7)=ACDCOMT,$P(X,U,4)="CS" S ACDQ=1 Q
  1. . Q
  1. S ACDQ=0
  1. I ACDY S ACDVIEN=ACDY Q ; CS visit exists
  1. Q
  1. ;
  1. GENCSV ; AUTODUPLICATE CS VISIT
  1. D GENV ; generate CS visit with .01 field only
  1. D DUPV ; duplicate the rest of the CS visit
  1. D MODV ; modify demographic part of CS visit
  1. ;Re-index new entry in ^ACDVIS to be safe
  1. S DA=ACDPT1(ACDDFNP)
  1. S DIK="^ACDVIS(" D IX1^DIK
  1. Q
  1. ;
  1. GENV ; GENERATE VISIT NODE
  1. S X=$P(^ACDVIS(ACDVISP,0),U)
  1. S DIC="^ACDVIS("
  1. S DIC(0)="L"
  1. D FILE^ACDFMC
  1. ;Reset ACDPT1 array to form ACDPT1(DFN)=DA
  1. S ACDPT1(ACDDFNP)=+Y
  1. Q
  1. ;
  1. DUPV ; DUPLICATE CS VISIT
  1. ;Duplicate the original visit from ^ACDVIS for new patient
  1. S %X="^ACDVIS("_ACDVISP_","
  1. S %Y="^ACDVIS("_ACDPT1(ACDDFNP)_","
  1. D %XY^%RCR
  1. Q
  1. ;
  1. MODV ; MODIFY DEMOGRAPHIC PORTION OF VISIT JUST GENERATED
  1. D MODV^ACDAUTO3
  1. Q
  1. ;
  1. CS ;Begin auto creation of entries in ^ACDCS
  1. ;
  1. W !!,"Auto creating Client Service nodes now for:"
  1. F ACDDFNP=0:0 S ACDDFNP=$O(ACDPT1(ACDDFNP)) Q:'ACDDFNP D
  1. .Q:ACDDFNP=ACDOPAT ; quit if original patient
  1. .W !!,$P(^DPT(ACDDFNP,0),U)
  1. .F ACDCSORI=0:0 S ACDCSORI=$O(ACDCS(ACDCSORI)) Q:'ACDCSORI D
  1. ..;
  1. ..;Set up new entry in ^ACDCS i.e. set up .01 field
  1. ..S X=$P(^ACDCS(ACDCSORI,0),U),ACDUPDT=X
  1. ..S DIC="^ACDCS("
  1. ..S DIC(0)="L"
  1. ..D FILE^ACDFMC S ACDNEWCS=+Y
  1. ..;
  1. ..I (ACDFHCP+ACDFPCC) S ACDPCCL(ACDDFNP,ACDPT1(ACDDFNP),"CS",ACDNEWCS)=""
  1. ..;
  1. ..;Duplicate the original entries in the client service file
  1. ..S %X="^ACDCS("_ACDCSORI_","
  1. ..S %Y="^ACDCS("_ACDNEWCS_","
  1. ..D %XY^%RCR
  1. ..;
  1. ..;Set up the^ACDCS 'BWP' to ^ACDVIS
  1. ..S DIE="^ACDCS("
  1. ..S DA=ACDNEWCS
  1. ..S DR="99.99////^S X=ACDPT1(ACDDFNP)"
  1. ..D DIE^ACDFMC
  1. ..;
  1. ..;Re-index new entry in ^ACDCS to be safe
  1. ..S DIK="^ACDCS(",DA=ACDNEWCS D IX1^DIK W ?35,"Client service day: ",ACDUPDT," being auto-created.",!
  1. W !!!,"Finished auto-creating.",!
  1. Q
  1. ;
  1. K ;
  1. K ACDA,ACDCATP,ACDCSORI,ACDLINE,ACDNEWCS,ACDPT1,ACDUPDT,ACDXXX
  1. Q