| 1 | PRCHAMYB ;WISC/DJM-MOVING AMENDMENT INFO FROM 443.6 TO 442 ;4/4/95  10:57 AM
 | 
|---|
| 2 | V ;;5.1;IFCAP;**79,100**;Oct 20, 2000
 | 
|---|
| 3 |  ;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  N PRCIEN,PRCIEN1,PRCDSL,PAT,PRCDS,PRCDATA,PRCAS,FLAG,DIC,X,DIK,PRCHIEN,LAST,%X,%Y,LOOP,LOOPVAL,DA,MESSG1,CHECKSUM,PRCHPO1,PRCHPOX,PRCHPO2,STATUS,FCP,IMF,O0,O1,PODATE,Y,PRCOPODA
 | 
|---|
| 6 |  S PRCIEN=0 F  S PRCIEN=$O(^PRC(442,PRCHPO,6,PRCHAM,3,PRCIEN)) Q:PRCIEN'>0  D
 | 
|---|
| 7 |  .S PRCIEN1=$G(^PRC(442,PRCHPO,6,PRCHAM,3,PRCIEN,0)) Q:PRCIEN1=""
 | 
|---|
| 8 |  .S PRCDSL=$P(PRCIEN1,U,7) Q:PRCDSL'>0
 | 
|---|
| 9 |  .S ^PRC(442,PRCHPO,6,PRCHAM,3,"AD",PRCDSL,PRCIEN)=""
 | 
|---|
| 10 |  .Q
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | COPY2 ;NOW TO COPY ANY DELIVERY SCHEDULES FROM 441.7 TO 442.8.
 | 
|---|
| 13 |  S FLAG=0,PAT=$P(^PRC(443.6,PRCHPO,0),U,1),PRCDS=""
 | 
|---|
| 14 |  F  S PRCDS=$O(^PRC(441.7,"AG",PAT,PRCDS)) Q:PRCDS'>0  D  Q:FLAG>0
 | 
|---|
| 15 |  .S PRCDSL="" F  S PRCDSL=$O(^PRC(441.7,"AG",PAT,PRCDS,PRCDSL)) Q:PRCDSL'>0  D  Q:FLAG>0
 | 
|---|
| 16 |  ..S PRCDATA=$G(^PRC(441.7,PRCDSL,0))
 | 
|---|
| 17 |  ..S PRCAS=$P(PRCDATA,U,7)
 | 
|---|
| 18 |  ..S PRCDATA=$P(PRCDATA,U,1,6)
 | 
|---|
| 19 |  ..S PRCDELF=$P(PRCDATA,U,6)
 | 
|---|
| 20 |  ..S:PRCAS>0&(PRCDELF="") ^PRC(442.8,PRCAS,0)=PRCDATA
 | 
|---|
| 21 |  ..I PRCAS>0&(PRCDELF="D") D
 | 
|---|
| 22 |  ...S DIK="^PRC(442.8,"
 | 
|---|
| 23 |  ...S DA=PRCAS
 | 
|---|
| 24 |  ...D ^DIK
 | 
|---|
| 25 |  ...Q
 | 
|---|
| 26 |  ..I PRCAS'>0 D  Q:FLAG>0
 | 
|---|
| 27 |  ...S DIC="^PRC(442.8,",DIC(0)="L",X=PAT K DD,DO D FILE^DICN I Y'>0 W !,"An error has occurred while restoring file 442.8 for "_PAT,!,",item "_PRCDS_"." S FLAG=1 Q
 | 
|---|
| 28 |  ...S PRCAS=$S(PRCAS>0:PRCAS,1:+Y),^PRC(442.8,PRCAS,0)=PRCDATA
 | 
|---|
| 29 |  ..Q:FLAG>0
 | 
|---|
| 30 |  ..S DIK="^PRC(442.8,",DA=$S(PRCAS>0:PRCAS,1:+Y) D IX^DIK
 | 
|---|
| 31 |  ..S PRCHIEN=0 F  S PRCHIEN=$O(^PRC(442,PRCHPO,6,PRCHAM,3,"AD",PRCDSL,PRCHIEN)) Q:PRCHIEN=""  S $P(^PRC(442,PRCHPO,6,PRCHAM,3,PRCHIEN,0),U,7)=PRCAS
 | 
|---|
| 32 |  ..Q
 | 
|---|
| 33 |  .Q
 | 
|---|
| 34 |  Q:FLAG>0
 | 
|---|
| 35 | ROLL ;THIS WILL DO THE LINE ITEM ROLL-UP INTO ALL THE 'BOC's.
 | 
|---|
| 36 |  S LAST=0,%X="^PRC(442,PRCHPO,22,",%Y="^PRC(443.6,PRCHPO,22," D %XY^%RCR
 | 
|---|
| 37 |  S LOOP=0 F  S LOOP=$O(^PRC(442,PRCHPO,22,LOOP)) Q:LOOP'>0  D
 | 
|---|
| 38 |  .S LOOPVAL=$G(^PRC(442,PRCHPO,22,LOOP,0)),$P(LOOPVAL,U,2)=0
 | 
|---|
| 39 |  .S ^PRC(442,PRCHPO,22,LOOP,0)=LOOPVAL I $P(LOOPVAL,U,3)'=991,$P(LOOPVAL,U,3)>LAST S LAST=$P(LOOPVAL,U,3)
 | 
|---|
| 40 |  .Q
 | 
|---|
| 41 |  S DA=PRCHPO D ^PRCHAMYC,^PRCHSF1
 | 
|---|
| 42 |  S (MESSG1,CHECKSUM)="" D RECODE^PRCHES5(PRCHPO,CHECKSUM,.MESSG1)
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | CLEANUP ;THE CODE FOLLOWING THIS COMMENT WILL DELETE THE TEMPORARY FILE
 | 
|---|
| 45 |  ;ENTRIES IN FILE 443.6 AND 441.7 FOR PRCHPO ENTRY FROM 442 AND 442.8
 | 
|---|
| 46 |  ;FILES.
 | 
|---|
| 47 |  S PRCHPO1=$P($G(^PRC(443.6,PRCHPO,0)),U),PRCHPOX=$P($G(^PRC(443.6,PRCHPO,23)),U,4)
 | 
|---|
| 48 |  I PRCHPOX]"" S PRCHPO2=$P($G(^PRC(443.6,PRCHPOX,0)),U)
 | 
|---|
| 49 |  K ^PRC(443.6,PRCHPO) I PRCHPOX>0 K ^PRC(443.6,PRCHPOX)
 | 
|---|
| 50 |  K ^PRC(443.6,"E",$P(PRCHPO1,"-",2),PRCHPO),^PRC(443.6,"B",PRCHPO1,PRCHPO),^PRC(443.6,"D",PRCHPO),^PRC(443.6,"C",PRCHPO,PRCHAM)
 | 
|---|
| 51 |  I PRCHPOX>0 K ^PRC(443.6,"E",$P(PRCHPO2,"-",2),PRCHPOX),^PRC(443.6,"B",PRCHPO2,PRCHPOX),^PRC(443.6,"D",PRCHPOX),^PRC(443.6,"C",PRCHPOX,PRCHAM)
 | 
|---|
| 52 |  S PRCDS="" F  S PRCDS=$O(^PRC(441.7,"B",PRCHPO1,PRCDS)) Q:PRCDS'>0  D
 | 
|---|
| 53 |  .S DIK="^PRC(441.7,",DA=PRCDS D ^DIK
 | 
|---|
| 54 |  .Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | STATUS ;NOW TO UPDATE THE 'SUPPLY STATUS', FIELD .5.  THIS WILL UPDATE
 | 
|---|
| 57 |  ;THE P.O. STATUS TO EQUAL THE LATEST AMENDMENT STATUS.
 | 
|---|
| 58 |  S STATUS=$P($G(^PRC(442,PRCHPO,6,PRCHAM,1)),U,4),DR=".5////^S X=STATUS",DIE="^PRC(442,",DA=PRCHPO D ^DIE
 | 
|---|
| 59 |  S PRCOPODA=PRCHPO_"^"_1_"^"_PRCHAM
 | 
|---|
| 60 |  ; ...now generating the PHM transaction...
 | 
|---|
| 61 |  D NEW^PRCOEDI ; set up & send PHM
 | 
|---|
| 62 |  ; Create FPDS message for the AAC, PRC*5.1*79. Check if the order was
 | 
|---|
| 63 |  ; amended but the total dollar amount did not. If there is a cancellation, then send the HL7 message.
 | 
|---|
| 64 |  ;PRC*5.1*100: check node 9 and the source code before sending PO to FPDS. Source codes 0,1,3, and 9 not required by FPDS - IEN stored in global.
 | 
|---|
| 65 |  I "1378"[$P(^PRC(442,PRCHPO,1),U,7) G OUT1
 | 
|---|
| 66 |  I $P(^PRC(442,PRCHPO,0),U,15)>0,$D(^PRC(442,PRCHPO,25)),$D(^PRC(442,PRCHPO,9,1,0)) D
 | 
|---|
| 67 |  . I $D(^PRC(442,PRCHPO,6,0)) D
 | 
|---|
| 68 |  .. S PRCMN=$P(^PRC(442,PRCHPO,6,0),U,3)
 | 
|---|
| 69 |  .. I $P(^PRC(442,PRCHPO,6,PRCMN,0),U,3)=0,$P(^PRC(442,PRCHPO,7),U,2)'=45 S PRCQ=1
 | 
|---|
| 70 |  . D:$G(PRCQ)'=1 EN^DDIOL("...now generating the FPDS message for the AAC...","","!!"),EN^DDIOL(" ")
 | 
|---|
| 71 |  . D:$G(PRCQ)'=1 AAC^PRCHAAC
 | 
|---|
| 72 |  ; End of changes for PRC*5.1*79
 | 
|---|
| 73 | OUT1 K PRCOPODA,PRCQ,PRCMN
 | 
|---|
| 74 |  I STATUS'=45 G EXIT
 | 
|---|
| 75 |  S AUTH=$P($G(^PRC(442,PRCHPO,6,PRCHAM,0)),U,4)
 | 
|---|
| 76 |  G:AUTH="" EXIT
 | 
|---|
| 77 |  G:'((AUTH=5)!(AUTH=15)) UPDATE
 | 
|---|
| 78 |  K AUTH,REF,REF1 G EXIT
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | UPDATE ;UPDATE FILE 410 TO POINT TO THE CORRECT P.O.
 | 
|---|
| 81 |  S O0=$G(^PRC(442,PRCHPO,0))
 | 
|---|
| 82 |  S O1=$G(^PRC(442,PRCHPO,1))
 | 
|---|
| 83 |  S FCP=+$P(O0,U)_+$P(O0,U,3)
 | 
|---|
| 84 |  S PODATE=+$P(O1,U,15)
 | 
|---|
| 85 |  S NEWPO=$P($G(^PRC(442,PRCHPO,23)),U,4)
 | 
|---|
| 86 |  G:NEWPO="" FINI
 | 
|---|
| 87 |  S PRCOPODA=NEWPO_"^"_2_"^"_PRCHAM_"^"_PRCHPO
 | 
|---|
| 88 |  ;...now generating PHA transaction...
 | 
|---|
| 89 |  D NEW^PRCOEDI
 | 
|---|
| 90 |  K PRCOPODA
 | 
|---|
| 91 |  S LOOP=0 F  S LOOP=$O(^PRC(442,NEWPO,2,LOOP)) Q:LOOP'>0  D
 | 
|---|
| 92 |  .S L0=$G(^PRC(442,NEWPO,2,LOOP,0))
 | 
|---|
| 93 |  .S L2=$G(^PRC(442,NEWPO,2,LOOP,2))
 | 
|---|
| 94 |  .S L0=$P(L0,U,10),L2=$P(L2,U,13)
 | 
|---|
| 95 |  .Q:L0=""!(L2="")
 | 
|---|
| 96 |  .I $P(L0,U,5)>0 D
 | 
|---|
| 97 |  ..S IMF=$P(L0,U,5)
 | 
|---|
| 98 |  ..K ^PRC(441,IMF,4,FCP,1,PRCHPO,0)
 | 
|---|
| 99 |  ..S ^PRC(441,IMF,4,FCP,1,NEWPO,0)=NEWPO
 | 
|---|
| 100 |  ..K ^PRC(441,IMF,4,FCP,1,"AC",9999999-PODATE,PRCHPO)
 | 
|---|
| 101 |  ..S ^PRC(441,IMF,4,FCP,1,"AC",9999999-PODATE,NEWPO)=""
 | 
|---|
| 102 |  ..Q
 | 
|---|
| 103 |  .S DA(1)=L0,DA=L2,DIE="^PRCS(410,"_DA(1)_",""IT"",",DR="9///^S X=NEWPO"
 | 
|---|
| 104 |  .D ^DIE
 | 
|---|
| 105 |  .Q
 | 
|---|
| 106 |  S PRC2237=$P($G(^PRC(442,PRCHPO,0)),U,12) G:PRC2237'>0 FINI
 | 
|---|
| 107 |  S PRCCNS=$P($P($G(^PRC(442,NEWPO,0)),U),"-",2)
 | 
|---|
| 108 |  S OLDCNS=$P(^PRCS(410,PRC2237,4),U,5)
 | 
|---|
| 109 |  K ^PRCS(410,"D",OLDCNS,PRC2237)
 | 
|---|
| 110 |  S $P(^PRCS(410,PRC2237,4),U,5)=PRCCNS
 | 
|---|
| 111 |  S ^PRCS(410,"D",PRCCNS,PRC2237)=""
 | 
|---|
| 112 |  S $P(^PRCS(410,PRC2237,10),U,3)=NEWPO
 | 
|---|
| 113 |  S MESSAGE="" D RECODE^PRCSC2(PRC2237,.MESSAGE)
 | 
|---|
| 114 |  I MESSAGE'=1 W !,"An error has occurred while recoding an ESIG.",!
 | 
|---|
| 115 | FINI K NEWPO,LOOP,L0,L2,DIE,DR,PRC2237,OLDCNS,PRCCNS,MESSAGE
 | 
|---|
| 116 | EXIT G OTHER^PRCHAMYD
 | 
|---|