| 1 | IB20R244 ;ISP/TDP - Restoral routine for IB*2.0*244 ;10/14/2003
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**244**;21-MAR-94
 | 
|---|
| 3 |  ; This routine is to restore data to the SUBSCRIBER ID (#1) field
 | 
|---|
| 4 |  ; of the INSURANCE TYPE SUB-FIELD (#2.312) file of the PATIENT (#2)
 | 
|---|
| 5 |  ; file and to the IB DM EXTRACT DATA (#351.71) file that was removed
 | 
|---|
| 6 |  ; during the data conversion by post-init routine IB20P244 in patch
 | 
|---|
| 7 |  ; IB*2.0*244.  Data can only be restored if the ^XTMP("IB20P244" file
 | 
|---|
| 8 |  ; still exists.
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 | UNDOALL ;Undoes all the changes made by the post-init routine, based on what
 | 
|---|
| 11 |  ;is stored in ^XTMP("IB20P244".
 | 
|---|
| 12 |  N ALL,IBDIK
 | 
|---|
| 13 |  S ALL=1,IBDIK=0
 | 
|---|
| 14 |  I '$D(^XTMP("IB20P244",0)) W !,"There is no data to restore." Q
 | 
|---|
| 15 |  D UNDOP
 | 
|---|
| 16 |  D UNDOF
 | 
|---|
| 17 |  D UNDOSUB
 | 
|---|
| 18 |  W !!,"Data restoral complete."
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 | UNDOP ;Restore the past date entries in file 351.71 which were deleted.
 | 
|---|
| 21 |  N IBJ,PCNT,PDATE
 | 
|---|
| 22 |  I '$G(ALL),'$D(^XTMP("IB20P244",0)) W !,"There is no data to restore." Q
 | 
|---|
| 23 |  S PCNT=0
 | 
|---|
| 24 |  S IBJ=""
 | 
|---|
| 25 |  F  S IBJ=$O(^XTMP("IB20P244",IBJ),-1) Q:IBJ=""  D
 | 
|---|
| 26 |  . S PDATE=""
 | 
|---|
| 27 |  . F  S PDATE=$O(^XTMP("IB20P244",IBJ,"INS","PST",PDATE)) Q:PDATE=""  D
 | 
|---|
| 28 |  .. S PCNT=PCNT+1
 | 
|---|
| 29 |  .. D MDATE(PDATE,"PST","RSTP")
 | 
|---|
| 30 |  W !
 | 
|---|
| 31 |  I PCNT=0 W !,"There are no past date entries to restore for file 351.71."
 | 
|---|
| 32 |  I PCNT'=0 S IBDIK=1 I '$G(ALL) D RENDX K IBDIK
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 | UNDOF ;Restore the future date entries in file 351.71 which were deleted.
 | 
|---|
| 35 |  N IBJ,FCNT,FDATE
 | 
|---|
| 36 |  I '$G(ALL),'$D(^XTMP("IB20P244",0)) W !,"There is no data to restore." Q
 | 
|---|
| 37 |  S FCNT=0
 | 
|---|
| 38 |  S IBJ=""
 | 
|---|
| 39 |  F  S IBJ=$O(^XTMP("IB20P244",IBJ),-1) Q:IBJ=""  D
 | 
|---|
| 40 |  . S FDATE=""
 | 
|---|
| 41 |  . F  S FDATE=$O(^XTMP("IB20P244",IBJ,"INS","FUT",FDATE)) Q:FDATE=""  D
 | 
|---|
| 42 |  .. S FCNT=FCNT+1
 | 
|---|
| 43 |  .. D MDATE(FDATE,"FUT","RSTF")
 | 
|---|
| 44 |  W !
 | 
|---|
| 45 |  I FCNT=0 W !,"There are no future date entries to restore for file 351.71."
 | 
|---|
| 46 |  I FCNT'=0!($G(IBDIK)) D RENDX
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 | RENDX ;Re-index file 351.71.
 | 
|---|
| 49 |  W !!,"Re-indexing file 351.71..."
 | 
|---|
| 50 |  S DIK="^IBE(351.71," D IXALL^DIK K DIK
 | 
|---|
| 51 |  W "Done"
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 | MDATE(DATE,DTYP,DRTYP) ;Common date functionality merge/kill
 | 
|---|
| 54 |  I $O(^IBE(351.71,DATE,""))'="" W !,"Entry already exists for "_DATE_".  Skipping restoral of this date entry." Q
 | 
|---|
| 55 |  M ^IBE(351.71,DATE)=^XTMP("IB20P244",IBJ,"INS",DTYP,DATE)
 | 
|---|
| 56 |  M ^XTMP("IB20P244",IBJ,"INS",DRTYP,DATE)=^XTMP("IB20P244",IBJ,"INS",DTYP,DATE)
 | 
|---|
| 57 |  K ^XTMP("IB20P244",IBJ,"INS",DTYP,DATE)
 | 
|---|
| 58 |  W !,"The entry for "_DATE_" has been restored."
 | 
|---|
| 59 |  Q
 | 
|---|
| 60 | UNDOSUB ;Restore original SUBSCRIBER ID'S modified in the INSURANCE TYPE
 | 
|---|
| 61 |  ;SUB-FIELD (#2.312) file of the PATIENT (#2) file.
 | 
|---|
| 62 |  N DA,DFN,DIE,DR,IBDATE,IBINS,IBINSCO,IBINSNM,IBJ,IBJN,IBNAME,IBNODATA
 | 
|---|
| 63 |  N IBSSN,IBSUB,IBSUB1,SCNT,SEL,X,Y
 | 
|---|
| 64 |  I '$G(ALL),'$D(^XTMP("IB20P244",0)) W !,"There is no data to restore." Q
 | 
|---|
| 65 |  I $G(ALL) W ! G ALL
 | 
|---|
| 66 | CHOICE S DIR("A")="DO YOU WANT TO RESTORE (A)LL OR (S)ELECTED SUBSCRIBER ID'S? "
 | 
|---|
| 67 |  S DIR("B")="QUIT"
 | 
|---|
| 68 |  S DIR("T")=300
 | 
|---|
| 69 |  S DIR("?")="Choose ALL to restore all subscriber id's, or choose SELECTED to choose individual patient's for restoral."
 | 
|---|
| 70 |  S DIR(0)="FAO^1:8^"
 | 
|---|
| 71 |  D ^DIR
 | 
|---|
| 72 |  I $E(X,1)="S" S Y="SELECTED"
 | 
|---|
| 73 |  I $E(X,1)="A" S Y="ALL"
 | 
|---|
| 74 |  I Y="QUIT"!(Y="")!($D(DTOUT))!($D(DUOUT)) G SUBEXIT
 | 
|---|
| 75 |  I Y'="ALL",Y'="SELECTED" G CHOICE
 | 
|---|
| 76 |  I Y="ALL" W ! G ALL
 | 
|---|
| 77 | CHOICE1 S DIR("A")="DO YOU WANT TO RESTORE BY (P)ATIENT OR BY (I)NSURANCE COMPANY? "
 | 
|---|
| 78 |  S DIR("B")="QUIT"
 | 
|---|
| 79 |  S DIR("T")=300
 | 
|---|
| 80 |  S DIR("?")="Choose PATIENT to restore specific patient subscriber id's, or choose INSURANCE COMPANY to choose specific insurance companies for restoral."
 | 
|---|
| 81 |  S DIR(0)="FAO^1:8^"
 | 
|---|
| 82 |  D ^DIR
 | 
|---|
| 83 |  S IBNODATA=0
 | 
|---|
| 84 |  I $E(X,1)="P" S Y="PATIENT"
 | 
|---|
| 85 |  I $E(X,1)="I" S Y="INSURANCE COMPANY"
 | 
|---|
| 86 |  I Y="QUIT"!(Y="")!($D(DTOUT))!($D(DUOUT)) G CHOICE
 | 
|---|
| 87 |  I Y'="PATIENT",Y'="INSURANCE COMPANY" G CHOICE1
 | 
|---|
| 88 |  I Y="PATIENT" W ! S SEL="PAT" G SELPAT
 | 
|---|
| 89 |  W !
 | 
|---|
| 90 |  S SEL="INS"
 | 
|---|
| 91 | SELINS D GATHER I IBNODATA Q
 | 
|---|
| 92 | SELECT1 S DIC("A")="SELECT INSURANCE COMPANY TO RESTORE SUBSCRIBER ID'S FOR: "
 | 
|---|
| 93 |  S DIC(0)="AENQ"
 | 
|---|
| 94 |  S DIC("S")="I $D(^TMP(""IB20P244"",$J,""SUB"",$P($G(Y),U,1)))"
 | 
|---|
| 95 |  S DIC="^DIC(36,"
 | 
|---|
| 96 |  D ^DIC
 | 
|---|
| 97 |  I $D(DTOUT)!($D(DUOUT))!((X="")&('$D(^TMP("IB20P244",$J,"SEL")))) G CHOICE1
 | 
|---|
| 98 |  I X="" W ! G SEL1
 | 
|---|
| 99 |  S IBINS=$P($G(Y),U,1)
 | 
|---|
| 100 |  M ^TMP("IB20P244",$J,"SEL",IBINS)=^TMP("IB20P244",$J,"SUB",IBINS)
 | 
|---|
| 101 |  S (X,Y)="" G SELECT1
 | 
|---|
| 102 | SEL1 ;RESTORE SELECTED INSURANCE COMPANY SUBSCRIBER ID'S
 | 
|---|
| 103 |  S IBINSCO=""
 | 
|---|
| 104 |  F  S IBINSCO=$O(^TMP("IB20P244",$J,"SEL",IBINSCO)) Q:IBINSCO=""  D
 | 
|---|
| 105 |  . S IBINSNM=$P($G(^DIC(36,IBINSCO,0)),U,1)
 | 
|---|
| 106 |  . S IBJ=""
 | 
|---|
| 107 |  . F  S IBJ=$O(^TMP("IB20P244",$J,"SEL",IBINSCO,IBJ)) Q:IBJ=""  D
 | 
|---|
| 108 |  .. S IBJN=-IBJ
 | 
|---|
| 109 |  .. S Y=IBJN D DD^%DT S IBDATE=Y
 | 
|---|
| 110 |  .. S DFN=""
 | 
|---|
| 111 |  .. F  S DFN=$O(^TMP("IB20P244",$J,"SEL",IBINSCO,IBJ,DFN)) Q:DFN=""  D
 | 
|---|
| 112 |  ... S IBNAME=$P($G(^DPT(DFN,0)),U,1)
 | 
|---|
| 113 |  ... S IBSSN=$P($G(^DPT(DFN,0)),U,9)
 | 
|---|
| 114 |  ... S IBINS=""
 | 
|---|
| 115 |  ... F  S IBINS=$O(^TMP("IB20P244",$J,"SEL",IBINSCO,IBJ,DFN,IBINS)) Q:IBINS=""  D
 | 
|---|
| 116 |  .... D MSUB(IBJN)
 | 
|---|
| 117 |  W !
 | 
|---|
| 118 |  G SELINS
 | 
|---|
| 119 | SELPAT D GATHER I IBNODATA Q
 | 
|---|
| 120 | SELECT S DIC("A")="SELECT PATIENT TO RESTORE SUBSCRIBER ID'S FOR: "
 | 
|---|
| 121 |  S DIC(0)="AEINQ"
 | 
|---|
| 122 |  S DIC("S")="I $D(^TMP(""IB20P244"",$J,""SUB"",$P($G(Y),U,1)))"
 | 
|---|
| 123 |  S DIC="^DPT("
 | 
|---|
| 124 |  D ^DIC
 | 
|---|
| 125 |  I $D(DTOUT)!($D(DUOUT))!((X="")&('$D(^TMP("IB20P244",$J,"SEL")))) G CHOICE1
 | 
|---|
| 126 |  I X="" W ! G SEL
 | 
|---|
| 127 |  S DFN=$P($G(Y),U,1)
 | 
|---|
| 128 |  M ^TMP("IB20P244",$J,"SEL",DFN)=^TMP("IB20P244",$J,"SUB",DFN)
 | 
|---|
| 129 |  S (X,Y)="" G SELECT
 | 
|---|
| 130 | SEL ;RESTORE SELECTED PATIENTS SUBSCRIBER ID'S
 | 
|---|
| 131 |  S DFN=""
 | 
|---|
| 132 |  F  S DFN=$O(^TMP("IB20P244",$J,"SEL",DFN)) Q:DFN=""  D
 | 
|---|
| 133 |  . S IBNAME=$P($G(^DPT(DFN,0)),U,1)
 | 
|---|
| 134 |  . S IBSSN=$P($G(^DPT(DFN,0)),U,9)
 | 
|---|
| 135 |  . S IBJ=""
 | 
|---|
| 136 |  . F  S IBJ=$O(^TMP("IB20P244",$J,"SEL",DFN,IBJ)) Q:IBJ=""  D
 | 
|---|
| 137 |  .. S IBJN=-IBJ
 | 
|---|
| 138 |  .. S Y=IBJN D DD^%DT S IBDATE=Y
 | 
|---|
| 139 |  .. S IBINS=""
 | 
|---|
| 140 |  .. F  S IBINS=$O(^TMP("IB20P244",$J,"SEL",DFN,IBJ,IBINS)) Q:IBINS=""  D
 | 
|---|
| 141 |  ... S IBINSNM=$P($G(^DIC(36,$P($G(^DPT(DFN,.312,IBINS,0)),U,1),0)),U,1)
 | 
|---|
| 142 |  ... D MSUB(IBJN)
 | 
|---|
| 143 |  W !
 | 
|---|
| 144 |  G SELPAT
 | 
|---|
| 145 | SUBEXIT ;Cleans up temp globals
 | 
|---|
| 146 |  K ^TMP("IB20P244",$J)
 | 
|---|
| 147 |  K DIC,DIR,DTOUT,DUOUT
 | 
|---|
| 148 |  Q
 | 
|---|
| 149 | GATHER K ^TMP("IB20P244",$J)
 | 
|---|
| 150 |  S IBJ=""
 | 
|---|
| 151 |  F  S IBJ=$O(^XTMP("IB20P244",IBJ),-1) Q:IBJ=""  D
 | 
|---|
| 152 |  . S DFN=""
 | 
|---|
| 153 |  . F  S DFN=$O(^XTMP("IB20P244",IBJ,"SUB",DFN)) Q:DFN=""  D
 | 
|---|
| 154 |  .. S IBINS=""
 | 
|---|
| 155 |  .. F  S IBINS=$O(^XTMP("IB20P244",IBJ,"SUB",DFN,IBINS)) Q:IBINS=""  D
 | 
|---|
| 156 |  ... I SEL="PAT" S ^TMP("IB20P244",$J,"SUB",DFN,-IBJ,IBINS)="" Q
 | 
|---|
| 157 |  ... S IBINSCO=$P($G(^DPT(DFN,.312,IBINS,0)),U,1)
 | 
|---|
| 158 |  ... S ^TMP("IB20P244",$J,"SUB",IBINSCO,-IBJ,DFN,IBINS)=""
 | 
|---|
| 159 |  I '$D(^TMP("IB20P244")) W !,"There is no subscriber id data to restore!" S IBNODATA=1
 | 
|---|
| 160 |  Q
 | 
|---|
| 161 | ALL S SCNT=0
 | 
|---|
| 162 |  S IBJ=""
 | 
|---|
| 163 |  F  S IBJ=$O(^XTMP("IB20P244",IBJ),-1) Q:IBJ=""  D
 | 
|---|
| 164 |  . S Y=IBJ D DD^%DT S IBDATE=Y
 | 
|---|
| 165 |  . S DFN=""
 | 
|---|
| 166 |  . F  S DFN=$O(^XTMP("IB20P244",IBJ,"SUB",DFN)) Q:DFN=""  D
 | 
|---|
| 167 |  .. S IBNAME=$P($G(^DPT(DFN,0)),U,1)
 | 
|---|
| 168 |  .. S IBSSN=$P($G(^DPT(DFN,0)),U,9)
 | 
|---|
| 169 |  .. S IBINS=""
 | 
|---|
| 170 |  .. F  S IBINS=$O(^XTMP("IB20P244",IBJ,"SUB",DFN,IBINS)) Q:IBINS=""  D
 | 
|---|
| 171 |  ... S SCNT=SCNT+1
 | 
|---|
| 172 |  ... S IBINSNM=$P($G(^DIC(36,$P($G(^DPT(DFN,.312,IBINS,0)),U,1),0)),U,1)
 | 
|---|
| 173 |  ... D MSUB(IBJ)
 | 
|---|
| 174 |  W !
 | 
|---|
| 175 |  I SCNT=0 W !,"There are no SUBSCRIBER ID entries to restore in the INSURANCE TYPE",!,"     SUB-FIELD (#2.312) file of the PATIENT (#2) file."
 | 
|---|
| 176 |  Q
 | 
|---|
| 177 | MSUB(IBJN) ;Common subscriber id functionality merge/kill
 | 
|---|
| 178 |  S IBSUB=$P($G(^XTMP("IB20P244",IBJN,"SUB",DFN,IBINS)),"^",1)
 | 
|---|
| 179 |  I IBSUB=$P($G(^DPT(DFN,.312,IBINS,0)),U,2) W !,"SUBSCRIBER ID for "_IBNAME_" ("_IBSSN_"), entry "_IBINSNM_",",!,"     has already been restored!" D  Q
 | 
|---|
| 180 |  . M ^XTMP("IB20P244",IBJN,"RSTS",DFN,IBINS)=^XTMP("IB20P244",IBJN,"SUB",DFN,IBINS)
 | 
|---|
| 181 |  . K ^XTMP("IB20P244",IBJN,"SUB",DFN,IBINS)
 | 
|---|
| 182 |  S IBSUB1=$P($G(^XTMP("IB20P244",IBJN,"SUB",DFN,IBINS)),"^",2)
 | 
|---|
| 183 |  I IBSUB1'=$P($G(^DPT(DFN,.312,IBINS,0)),U,2) W !,"SUBSCRIBER ID for "_IBNAME_" ("_IBSSN_"), entry "_IBINSNM_", has been",!,"     changed since data conversion.  Skipping restoral of this SUBSCRIBER ID." Q
 | 
|---|
| 184 |  I IBSUB[";" W !!,"Original SUBSCRIBER ID contains a semi-colon (;).  Unable to restore",!,"     SUBSCRIBER ID for "_IBNAME_" ("_IBSSN_"), insurance",!,"     company "_IBINSNM_".  Use Fileman to enter",!,"     ID of """_IBSUB_""".",! Q
 | 
|---|
| 185 |  S DA=IBINS,DA(1)=DFN,DR="1////"_IBSUB,DIE="^DPT(DFN,.312," D ^DIE
 | 
|---|
| 186 |  W !,"The SUBSCRIBER ID for "_IBNAME_" ("_IBSSN_"),",!,"     insurance company "_IBINSNM_", has been restored",!,"     from the "_IBDATE_" data conversion."
 | 
|---|
| 187 |  M ^XTMP("IB20P244",IBJN,"RSTS",DFN,IBINS)=^XTMP("IB20P244",IBJN,"SUB",DFN,IBINS)
 | 
|---|
| 188 |  K ^XTMP("IB20P244",IBJN,"SUB",DFN,IBINS)
 | 
|---|
| 189 |  Q
 | 
|---|
| 190 | SUBPRNT ;Allows user to print an excel friendly list of subscriber id's changed
 | 
|---|
| 191 |  N DFN,IBINS,IBINSNM,IBJ,IBNAME
 | 
|---|
| 192 |  K ^TMP("IB20P244",$J)
 | 
|---|
| 193 |  S IBJ=""
 | 
|---|
| 194 |  F  S IBJ=$O(^XTMP("IB20P244",IBJ),-1) Q:IBJ=""  D
 | 
|---|
| 195 |  . S DFN=""
 | 
|---|
| 196 |  . F  S DFN=$O(^XTMP("IB20P244",IBJ,"SUB",DFN)) Q:DFN=""  D
 | 
|---|
| 197 |  .. S IBNAME=$P($G(^DPT(DFN,0)),U,1)_"("_$P($G(^DPT(DFN,0)),U,9)_")"
 | 
|---|
| 198 |  .. I IBNAME="" S IBNAME="*** UNKNOWN ***"
 | 
|---|
| 199 |  .. S IBINS=""
 | 
|---|
| 200 |  .. F  S IBINS=$O(^XTMP("IB20P244",IBJ,"SUB",DFN,IBINS)) Q:IBINS=""  D
 | 
|---|
| 201 |  ... S IBINSNM=$P($G(^DIC(36,$P($G(^DPT(DFN,.312,IBINS,0)),U,1),0)),U,1)
 | 
|---|
| 202 |  ... I IBINSNM="" S IBINSNM="*** UNKNOWN ***"
 | 
|---|
| 203 |  ... S ^TMP("IB20P244",$J,"SUB",IBINSNM,IBNAME,-IBJ,IBINS)=$G(^XTMP("IB20P244",IBJ,"SUB",DFN,IBINS))
 | 
|---|
| 204 |  I '$D(^TMP("IB20P244",$J,"SUB")) W !,"THERE IS NO DATA TO DISPLAY" Q
 | 
|---|
| 205 |  S IBINSNM=""
 | 
|---|
| 206 |  F  S IBINSNM=$O(^TMP("IB20P244",$J,"SUB",IBINSNM)) Q:IBINSNM=""  D
 | 
|---|
| 207 |  . S IBNAME=""
 | 
|---|
| 208 |  . F  S IBNAME=$O(^TMP("IB20P244",$J,"SUB",IBINSNM,IBNAME)) Q:IBNAME=""  D
 | 
|---|
| 209 |  .. S IBJ=""
 | 
|---|
| 210 |  .. F  S IBJ=$O(^TMP("IB20P244",$J,"SUB",IBINSNM,IBNAME,IBJ)) Q:IBJ=""  D
 | 
|---|
| 211 |  ... S IBINS=""
 | 
|---|
| 212 |  ... F  S IBINS=$O(^TMP("IB20P244",$J,"SUB",IBINSNM,IBNAME,IBJ,IBINS)) Q:IBINS=""  D
 | 
|---|
| 213 |  .... W !,IBINSNM_"^"_IBNAME_"^"_$G(^TMP("IB20P244",$J,"SUB",IBINSNM,IBNAME,IBJ,IBINS))
 | 
|---|
| 214 |  K ^TMP("IB20P244",$J)
 | 
|---|
| 215 |  Q
 | 
|---|