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

ACHSYAMT.m

Go to the documentation of this file.
  1. ACHSYAMT ; IHS/ITSC/PMF - RECALC OBLIGATION AMOUNTS ; [ 10/16/2001 8:16 AM ]
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;;JUN 11, 2001
  1. ;
  1. ; This routine ensures the obligated amount is correct for each
  1. ; document. It is uncertain whether it needs to be run for each
  1. ; facility that installs CHS, as the incorrect obligated amount
  1. ; was incurred at a very few sites that participated in the Alpha
  1. ; test during development of 2.0.
  1. ;
  1. ; This was part of the postinit for version 2.0.
  1. ;
  1. I '$G(DUZ) W !,"DUZ UNDEFINED OR 0." Q
  1. D HOME^%ZIS,DT^DICRW,INTRO
  1. S (DIR(0),DIR("B"))="Y"
  1. S DIR("A")="Do you want to queue the updates to TaskMan"
  1. S DIR("??")="^D Q2^ACHSYAMT"
  1. D ^DIR
  1. G Q2:$D(DIRUT),START:'Y
  1. QUE ;
  1. S %DT="AERSX",%DT("A")="Requested Start Time: ",%DT("B")="T@2015",%DT(0)="NOW"
  1. D ^%DT
  1. I Y<1 W !,"QUEUE INFORMATION MISSING - NOT QUEUED",!!,"Okay.",! D Q2 Q
  1. S X=+Y
  1. D H^%DTC
  1. S ZTDTH=%H_","_%T
  1. S ZTRTN="START^ACHSYAMT",ZTIO="",ZTDESC=$P($P($T(+1),";",2)," ",4,99)
  1. D ^%ZTLOAD,HOME^%ZIS
  1. I $D(ZTSK) W !!,"QUEUED TO TASK ",ZTSK,!!,"A mail message with the results will be sent to your MailMan 'IN' basket.",! K ^TMP("ACHSYAMT",$J)
  1. E W !!,*7,"QUEUE UNSUCCESSFUL. RESTART UTILITY."
  1. Q
  1. ;
  1. START ;EP - From Taskman
  1. ;
  1. N XMSUB,XMDUZ,XMTEXT,XMY
  1. K ^TMP("ACHSYAMT",$J)
  1. D WORK
  1. S (XMSUB,XMDUZ)=$P($P($T(+1),";",2)," ",4,99),XMTEXT="^TMP(""ACHSYAMT"",$J,""RSLT"",",XMY(1)="",XMY(DUZ)="" D ^XMD
  1. K ^TMP("ACHSYAMT",$J)
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. E W !!,"The results are in your MailMan 'IN' basket.",!
  1. Q
  1. ;
  1. WORK ;
  1. D RSLT("*** RESETTING 3RD PARTY PAY, OBLICATIONS AND PAYMENT NODES IN DOCUMENT FILE ***")
  1. ;
  1. ; L = Location (DUZ(2)), C = Counter
  1. S (C,L)=0
  1. LOC ;
  1. S L=$O(^ACHSF(L))
  1. G END:'L
  1. D RSLT("Processing "_$P(^DIC(4,L,0),U)_" PO's.")
  1. S D=0
  1. DOC ;
  1. S D=$O(^ACHSF(L,"D",D))
  1. G LOC:'D
  1. LOCK +^ACHSF(L,"D",D):30
  1. E D RSLT("Can't LOCK ^ACHSF("_L_"""D"","_D_").") G DOC
  1. S ACHSOBLG=0,C=C+1
  1. I '$D(ZTQUEUED),'(C#100) W "."
  1. S T=0
  1. TRANS ;
  1. S T=$O(^ACHSF(L,"D",D,"T",T))
  1. I 'T LOCK -^ACHSF(L,"D",D) G DOC
  1. S %=$P(^ACHSF(L,"D",D,"T",T,0),U,2)
  1. D @%
  1. G TRANS
  1. END ;
  1. D RSLT(C_" PO's processed.")
  1. D RSLT("CHS data updates complete.")
  1. K ACHSAMT,D,T,ACHSOBLG,C
  1. Q
  1. ;
  1. RSLT(%) S ^(0)=$G(^TMP("ACHSYAMT",$J,"RSLT",0))+1,^(^(0))=% W:'$D(ZTQUEUED) !,% Q
  1. ;
  1. I ; Initial
  1. S ACHSOBLG=ACHSOBLG+$P(^ACHSF(L,"D",D,"T",T,0),U,4),$P(^ACHSF(L,"D",D,0),U,9)=ACHSOBLG
  1. Q
  1. S ; Supplemental
  1. S ACHSOBLG=ACHSOBLG+$P(^ACHSF(L,"D",D,"T",T,0),U,4),$P(^ACHSF(L,"D",D,0),U,9)=ACHSOBLG
  1. Q
  1. C ; Cancellation
  1. S ACHSOBLG=ACHSOBLG-$P(^ACHSF(L,"D",D,"T",T,0),U,4),$P(^ACHSF(L,"D",D,0),U,9)=ACHSOBLG
  1. Q
  1. P ; Payment
  1. S ACHSAMT=$P(^ACHSF(L,"D",D,"T",T,0),U,8)
  1. S $P(^ACHSF(L,"D",D,"PA"),U,5)=ACHSAMT
  1. Q:'$D(^ACHSF(L,"D",D,"PA"))
  1. Q:$P(^ACHSF(L,"D",D,"PA"),U,6)
  1. S $P(^ACHSF(L,"D",D,"PA"),U,6)=$P(^("PA"),U,1)
  1. S:$D(^ACHSF(L,"D",D,"IP")) $P(^("PA"),U,1)=$P(^("PA"),U,1)+$P(^("IP"),U,1)
  1. S $P(^ACHSF(L,"D",D,"PA"),U,2)=$P(^("PA"),U,1)-$P(^ACHSF(L,"D",D,0),U,9)
  1. Q
  1. ZA ; Adjustment
  1. S ACHSAMT=$P(^ACHSF(L,"D",D,"T",T,0),U,8)
  1. S $P(^ACHSF(L,"D",D,"ZA"),U,4)=ACHSAMT
  1. S $P(^ACHSF(L,"D",D,"ZA"),U,1)=$P(^("ZA"),U,2)+$P(^ACHSF(L,"D",D,"PA"),U,1)
  1. Q
  1. IP ;
  1. Q
  1. ;
  1. INTRO ;
  1. W ! F %=2:1:4 W ?5,$P($T(INTRO+%),";;",2),!
  1. ;;This utility reads thru each PO, re-adds the total amount obligated
  1. ;;for each document, and ensures the total amount obligated field
  1. ;;in the Document record is correct.
  1. Q
  1. ;
  1. Q2 ;EP - From DIR
  1. W ! F %=2:1:6 W ?5,$P($T(Q2+%),";;",2),!
  1. ;;Answer "Y" or "N" to q to TaskMan or not.
  1. ;;
  1. ;;If you run interactively, results will be displayed on your screen,
  1. ;;as well as in the mail message sent to you and user 1. If you queue
  1. ;;to TaskMan, please read the mail message for results of this patch.
  1. Q
  1. ;