[613] | 1 | FBPMRG1 ;WCIOFO/SAB-FEE BASIS PATIENT MERGE ROUTINE (cont) ;12/15/2001
|
---|
| 2 | ;;3.5;FEE BASIS;**19,41**;JAN 30, 1995
|
---|
| 3 | Q
|
---|
| 4 | F162 ; File 162 FEE BASIS PAYMENT - The .01 field points to and is
|
---|
| 5 | ; dinumed with the PATIENT (#2) file
|
---|
| 6 | ; input
|
---|
| 7 | ; FBFR - ien of patient (files #2,162) being merged from
|
---|
| 8 | ; FBTO - ien of patient (files #2,162) being merged to
|
---|
| 9 | N FBAUTHP,FBFR1,FBFR2,FBFR3,FBFRIENS,FBTO1,FBTO2,FBTO3,FBTOIENS
|
---|
| 10 | N DA,DD,DO,DIC,DIK,DINUM,DLAYGO,X,Y
|
---|
| 11 | ;
|
---|
| 12 | Q:'$D(^FBAAC(FBFR)) ; nothing to merge from
|
---|
| 13 | ;
|
---|
| 14 | ; since a 'from ien' exists, we'll need to keep track of the old
|
---|
| 15 | ; and new 'iens' of payments that may have been reported to the
|
---|
| 16 | ; Austin Automation Center (AAC). The AAC returns data concerning the
|
---|
| 17 | ; payments and the 'iens' are used to locate the appropriate entry to
|
---|
| 18 | ; update.
|
---|
| 19 | ;
|
---|
| 20 | ; Additionally, if both the from ien and to ien are in the FEE BASIS
|
---|
| 21 | ; PAYMENT file then the SERVICE PROVIDED multiple and the TRAVEL
|
---|
| 22 | ; PAYMENT DATE multiple will need to be handled here since they
|
---|
| 23 | ; are allowed to have duplicate .01 values and a standard merge could
|
---|
| 24 | ; inappropriately combine subfile entries whose .01 values match.
|
---|
| 25 | ;
|
---|
| 26 | ; medical payments
|
---|
| 27 | ; loop thru vendor multiple
|
---|
| 28 | S FBFR1=0 F S FBFR1=$O(^FBAAC(FBFR,1,FBFR1)) Q:'FBFR1 D
|
---|
| 29 | . ; loop thru initial treatment date multiple
|
---|
| 30 | . S FBFR2=0 F S FBFR2=$O(^FBAAC(FBFR,1,FBFR1,1,FBFR2)) Q:'FBFR2 D
|
---|
| 31 | . . S FBAUTHP=$P($G(^FBAAC(FBFR,1,FBFR1,1,FBFR2,0)),U,4) ; auth pointer
|
---|
| 32 | . . ; loop thru service provided multiple
|
---|
| 33 | . . S FBFR3=0
|
---|
| 34 | . . F S FBFR3=$O(^FBAAC(FBFR,1,FBFR1,1,FBFR2,1,FBFR3)) Q:'FBFR3 D
|
---|
| 35 | . . . S FBFRIENS=FBFR3_","_FBFR2_","_FBFR1_","_FBFR_","
|
---|
| 36 | . . . ; If the 'to ien' does not exist then only the patient ien will be
|
---|
| 37 | . . . ; different on payments sent to the AAC. We just need to save
|
---|
| 38 | . . . ; the iens and the normal merge will take care of moving the data.
|
---|
| 39 | . . . I '$D(^FBAAC(FBTO)) S FBTOIENS=FBFR3_","_FBFR2_","_FBFR1_","_FBTO_","
|
---|
| 40 | . . . E D
|
---|
| 41 | . . . . ; both from ien and to ien are in the FEE BASIS PAYMENT file
|
---|
| 42 | . . . . S (FBTO1,FBTO2,FBTO3,FBTOIENS)="" ; initialize new iens
|
---|
| 43 | . . . . ;
|
---|
| 44 | . . . . ; create new service provided entry in 'to ien'
|
---|
| 45 | . . . . ; find or create vendor subentry in 'to ien'
|
---|
| 46 | . . . . I $D(^FBAAC(FBTO,1,FBFR1)) S FBTO1=FBFR1
|
---|
| 47 | . . . . E D
|
---|
| 48 | . . . . . ; need to add vendor subentry
|
---|
| 49 | . . . . . K DA,DD,DO
|
---|
| 50 | . . . . . S DA(1)=FBTO
|
---|
| 51 | . . . . . S DIC="^FBAAC("_DA(1)_",1,"
|
---|
| 52 | . . . . . S DIC(0)="L"
|
---|
| 53 | . . . . . S X=$P($G(^FBAAC(FBFR,1,FBFR1,0)),U)
|
---|
| 54 | . . . . . Q:X=""
|
---|
| 55 | . . . . . S DINUM=X,DLAYGO=162.01
|
---|
| 56 | . . . . . D FILE^DICN K DIC,DINUM,DLAYGO
|
---|
| 57 | . . . . . Q:$P(Y,U,3)'=1 ; couldn't add vendor subentry
|
---|
| 58 | . . . . . S FBTO1=+Y
|
---|
| 59 | . . . . Q:'$G(FBTO1) ; couldn't find or add the vendor in FBTO
|
---|
| 60 | . . . . ;
|
---|
| 61 | . . . . ; find or create initial treatment date subentry in 'to ien'
|
---|
| 62 | . . . . ;
|
---|
| 63 | . . . . S X=$P($G(^FBAAC(FBFR,1,FBFR1,1,FBFR2,0)),U) ; init treat date
|
---|
| 64 | . . . . Q:X=""
|
---|
| 65 | . . . . S FBTO2=$O(^FBAAC(FBTO,FBTO1,"AD",(9999999.9999-X),0))
|
---|
| 66 | . . . . I 'FBTO2 D
|
---|
| 67 | . . . . . ; need to add initial treatment date subentry
|
---|
| 68 | . . . . . K DA,DD,DO
|
---|
| 69 | . . . . . S DA(2)=FBTO
|
---|
| 70 | . . . . . S DA(1)=FBTO1
|
---|
| 71 | . . . . . S DIC="^FBAAC("_DA(2)_",1,"_DA(1)_",1,"
|
---|
| 72 | . . . . . S DIC(0)="L"
|
---|
| 73 | . . . . . S:FBAUTHP DIC("DR")="3////^S X=FBAUTHP" ;authorization pointer
|
---|
| 74 | . . . . . I $D(@(DIC_FBFR2_")"))=0 S DINUM=FBFR2 ; use same ien if avail
|
---|
| 75 | . . . . . S DLAYGO=162.02
|
---|
| 76 | . . . . . D FILE^DICN K DIC,DINUM,DLAYGO
|
---|
| 77 | . . . . . Q:$P(Y,U,3)'=1 ; couldn't add init treat date subentry
|
---|
| 78 | . . . . . S FBTO2=+Y
|
---|
| 79 | . . . . Q:'$G(FBTO2) ; couldn't find or add the init treat date in FBTO
|
---|
| 80 | . . . . ;
|
---|
| 81 | . . . . ; create new entry in service provided multiple of 'to ien'
|
---|
| 82 | . . . . K DA,DD,DO
|
---|
| 83 | . . . . S DA(3)=FBTO,DA(2)=FBTO1,DA(1)=FBTO2
|
---|
| 84 | . . . . S DIC="^FBAAC("_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",1,"
|
---|
| 85 | . . . . S DIC(0)="L"
|
---|
| 86 | . . . . S X=$P($G(^FBAAC(FBFR,1,FBFR1,1,FBFR2,1,FBFR3,0)),U)
|
---|
| 87 | . . . . Q:X="" ; can't add without a service provided
|
---|
| 88 | . . . . I $D(@(DIC_FBFR3_")"))=0 S DINUM=FBFR3 ; use same ien if avail.
|
---|
| 89 | . . . . S DLAYGO=162.03
|
---|
| 90 | . . . . D FILE^DICN K DIC,DINUM,DLAYGO
|
---|
| 91 | . . . . Q:$P(Y,U,3)'=1 ; couldn't add new subentry
|
---|
| 92 | . . . . S FBTO3=+Y
|
---|
| 93 | . . . . S FBTOIENS=FBTO3_","_FBTO2_","_FBTO1_","_FBTO_","
|
---|
| 94 | . . . . ;
|
---|
| 95 | . . . . ; move service provided data
|
---|
| 96 | . . . . M ^FBAAC(FBTO,1,FBTO1,1,FBTO2,1,FBTO3)=^FBAAC(FBFR,1,FBFR1,1,FBFR2,1,FBFR3)
|
---|
| 97 | . . . . ;
|
---|
| 98 | . . . . ; delete 'from' service provided
|
---|
| 99 | . . . . K DA S DA(3)=FBFR,DA(2)=FBFR1,DA(1)=FBFR2,DA=FBFR3
|
---|
| 100 | . . . . S DIK="^FBAAC("_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",1,"
|
---|
| 101 | . . . . D ^DIK K DA,DIK
|
---|
| 102 | . . . . ;
|
---|
| 103 | . . . . ; index 'to' service provided
|
---|
| 104 | . . . . K DA S DA(3)=FBTO,DA(2)=FBTO1,DA(1)=FBTO2,DA=FBTO3
|
---|
| 105 | . . . . S DIK="^FBAAC("_DA(3)_",1,"_DA(2)_",1,"_DA(1)_",1,"
|
---|
| 106 | . . . . D IX1^DIK K DA,DIK
|
---|
| 107 | . . . . ;
|
---|
| 108 | . . . Q:$G(FBTOIENS)="" ; unable to move service provided to FBTO
|
---|
| 109 | . . . ; save iens (FBFRIENS and FBTOIENS) to file
|
---|
| 110 | . . . D SAVIENS(162.03,FBFRIENS,FBTOIENS)
|
---|
| 111 | . . ; if all service provided entries moved then delete the treat. date
|
---|
| 112 | . . I $P($G(^FBAAC(FBFR,1,FBFR1,1,FBFR2,1,0)),U,4)=0 D
|
---|
| 113 | . . . K DA S DA(2)=FBFR,DA(1)=FBFR1,DA=FBFR2
|
---|
| 114 | . . . S DIK="^FBAAC("_DA(2)_",1,"_DA(1)_",1,"
|
---|
| 115 | . . . D ^DIK K DA,DIK
|
---|
| 116 | . ; if all initial treatment dates moved then delete the vendor
|
---|
| 117 | . I $P($G(^FBAAC(FBFR,1,FBFR1,1,0)),U,4)=0 D
|
---|
| 118 | . . K DA S DA(1)=FBFR,DA=FBFR1
|
---|
| 119 | . . S DIK="^FBAAC("_DA(1)_",1,"
|
---|
| 120 | . . D ^DIK K DA,DIK
|
---|
| 121 | ;
|
---|
| 122 | ; travel payments
|
---|
| 123 | ; loop thru travel payment date multiple
|
---|
| 124 | S FBFR1=0 F S FBFR1=$O(^FBAAC(FBFR,3,FBFR1)) Q:'FBFR1 D
|
---|
| 125 | . S FBFRIENS=FBFR1_","_FBFR_","
|
---|
| 126 | . ; If the 'to ien' does not exist then only the patient ien will be
|
---|
| 127 | . ; different on payments sent to the AAC. We just need to save
|
---|
| 128 | . ; the iens and the normal merge will take care of moving the data.
|
---|
| 129 | . I '$D(^FBAAC(FBTO)) S FBTOIENS=FBFR1_","_FBTO_","
|
---|
| 130 | . E D
|
---|
| 131 | . . ; both from ien and to ien are in the FEE BASIS PAYMENT file
|
---|
| 132 | . . ; create travel payment date subentry in to ien
|
---|
| 133 | . . S (FBTO1,FBTOIENS)="" ; initialize new iens
|
---|
| 134 | . . K DA,DD,DO
|
---|
| 135 | . . S DA(1)=FBTO
|
---|
| 136 | . . S DIC="^FBAAC("_DA(1)_",3,"
|
---|
| 137 | . . S DIC(0)="L"
|
---|
| 138 | . . S X=$P($G(^FBAAC(FBFR,3,FBFR1,0)),U)
|
---|
| 139 | . . Q:X="" ; can't add without a travel payment date
|
---|
| 140 | . . I $D(@(DIC_FBFR1_")"))=0 S DINUM=FBFR1 ; use same ien if avail.
|
---|
| 141 | . . S DLAYGO=162.04
|
---|
| 142 | . . D FILE^DICN K DIC,DINUM,DLAYGO
|
---|
| 143 | . . Q:$P(Y,U,3)'=1 ; couldn't add new subentry
|
---|
| 144 | . . S FBTO1=+Y
|
---|
| 145 | . . S FBTOIENS=FBTO1_","_FBTO_","
|
---|
| 146 | . . ;
|
---|
| 147 | . . ; move data
|
---|
| 148 | . . M ^FBAAC(FBTO,3,FBTO1)=^FBAAC(FBFR,3,FBFR1)
|
---|
| 149 | . . ;
|
---|
| 150 | . . ; delete from ien
|
---|
| 151 | . . K DA S DA(1)=FBFR,DA=FBFR1
|
---|
| 152 | . . S DIK="^FBAAC("_DA(1)_",3,"
|
---|
| 153 | . . D ^DIK K DA,DIK
|
---|
| 154 | . . ;
|
---|
| 155 | . . ; index to ien
|
---|
| 156 | . . K DA S DA(1)=FBTO,DA=FBTO1
|
---|
| 157 | . . S DIK="^FBAAC("_DA(1)_",3,"
|
---|
| 158 | . . D IX1^DIK K DA,DIK
|
---|
| 159 | . ;
|
---|
| 160 | . Q:$G(FBTOIENS)="" ; unable to move travel payment date to FBTO
|
---|
| 161 | . ; save iens (FBFRIENS and FBTOIENS) to file
|
---|
| 162 | . D SAVIENS(162.04,FBFRIENS,FBTOIENS)
|
---|
| 163 | ;
|
---|
| 164 | Q
|
---|
| 165 | ;
|
---|
| 166 | SAVIENS(FBFILE,FBOLDIEN,FBNEWIEN) ; save old & new iens in file 161.45
|
---|
| 167 | N DA,DD,DIC,DLAYGO,DO,X,Y
|
---|
| 168 | S DIC="^FBAA(161.45,",DIC(0)="L"
|
---|
| 169 | S X=FBFILE
|
---|
| 170 | Q:X="" ; can't add without a from date
|
---|
| 171 | S DIC("DR")="1////^S X=FBOLDIEN;2////^S X=FBNEWIEN"
|
---|
| 172 | S DLAYGO=161.45
|
---|
| 173 | D FILE^DICN K DIC,DLAYGO
|
---|
| 174 | Q
|
---|
| 175 | ;
|
---|
| 176 | ;FBPMRG1
|
---|