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
|
---|