| 1 | IBDFC2 ;ALB/CJM - ENCOUNTER FORM - converts a form for scanning ;MAR 3, 1995
 | 
|---|
| 2 |  ;;3.0;AUTOMATED INFO COLLECTION SYS;;APR 24, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | CONVERT(OLDFORM) ;
 | 
|---|
| 5 |  N IBCNVRT,IBFORM,IBDASK
 | 
|---|
| 6 |  S (IBCNVRT,IBFORM)=""
 | 
|---|
| 7 |  S IBCNVRT("BLOCK OFFSET")=0
 | 
|---|
| 8 |  ;S IBDASK("ADDOTHER")=$$ASKOTH^IBDFC2B G:IBDASK("ADDOTHER")<0 CONVQ
 | 
|---|
| 9 |  ;S IBDASK("AUTOCHG")=$$ASKAUTO^IBDFC2B G:IBDASK("AUTOCHG")<0 CONVQ
 | 
|---|
| 10 |  D COPYFORM(OLDFORM,.IBFORM,.IBCNVRT)
 | 
|---|
| 11 |  G:('IBFORM)!('IBCNVRT) CONVQ
 | 
|---|
| 12 |  D FILE357
 | 
|---|
| 13 |  G:'$$FORMDSCR^IBDFU1C(.IBFORM) CONVQ
 | 
|---|
| 14 |  D BLOCKS
 | 
|---|
| 15 |  D COMPILE^IBDF19
 | 
|---|
| 16 |  D PAGEINFO
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | CONVQ Q IBFORM
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | PAGEINFO ;determines what pages must be scanned
 | 
|---|
| 21 |  N PG,FORMTYPE,LN,TOP,BOT,IEN,NODE
 | 
|---|
| 22 |  S FORMTYPE=$P($G(^IBE(357,IBFORM,0)),"^",13) Q:'FORMTYPE
 | 
|---|
| 23 |  F PG=1:1:IBFORM("PAGES") D
 | 
|---|
| 24 |  .S TOP=(PG-1)*IBFORM("PAGE_HT"),BOT=TOP+IBFORM("PAGE_HT")
 | 
|---|
| 25 |  .S LN=$O(^IBD(357.95,FORMTYPE,1,"B",TOP-1))
 | 
|---|
| 26 |  .I 'LN!(LN>BOT) S LN=$O(^IBD(357.95,FORMTYPE,2,"B",TOP-1)) Q:'LN!(LN>BOT)
 | 
|---|
| 27 |  .;the page should be in file 357
 | 
|---|
| 28 |  .S IEN=$O(^IBE(357,IBFORM,2,"B",PG,0)) I 'IEN D
 | 
|---|
| 29 |  ..S NODE=$G(^IBE(357,IBFORM,2,0))
 | 
|---|
| 30 |  ..F IEN=+$P(NODE,"^",3)+1:1:1 Q:'$D(^IBE(357,IBFORM,2,IEN))
 | 
|---|
| 31 |  ..S $P(^IBE(357,IBFORM,2,IEN,0),"^")=PG
 | 
|---|
| 32 |  ..S ^IBE(357,IBFORM,2,"B",PG,IEN)=""
 | 
|---|
| 33 |  ..S $P(NODE,"^",2)="357.02I",$P(NODE,"^",4)=$P(NODE,"^",4)+1,$P(NODE,"^",3)=IEN,^IBE(357,IBFORM,2,0)=NODE
 | 
|---|
| 34 |  .S $P(^IBE(357,IBFORM,2,IEN,0),"^",2)=1
 | 
|---|
| 35 |  .;
 | 
|---|
| 36 |  .;the page should also be in file 357.95 (form definition)
 | 
|---|
| 37 |  .S IEN=$O(^IBD(357.95,FORMTYPE,3,"B",PG,0)) I 'IEN D
 | 
|---|
| 38 |  ..S NODE=$G(^IBD(357.95,FORMTYPE,3,0))
 | 
|---|
| 39 |  ..F IEN=+$P(NODE,"^",3)+1:1:1 Q:'$D(^IBD(357.95,FORMTYPE,3,IEN))
 | 
|---|
| 40 |  ..S $P(^IBD(357.95,FORMTYPE,3,IEN,0),"^")=PG
 | 
|---|
| 41 |  ..S ^IBD(357.95,FORMTYPE,3,"B",PG,IEN)=""
 | 
|---|
| 42 |  ..S $P(NODE,"^",2)=357.953,$P(NODE,"^",4)=$P(NODE,"^",4)+1,$P(NODE,"^",3)=IEN,^IBD(357.95,FORMTYPE,3,0)=NODE
 | 
|---|
| 43 |  .S $P(^IBD(357.95,FORMTYPE,3,IEN,0),"^",2)=1
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | FILE357 ;
 | 
|---|
| 47 |  N NODE,FIELD,LENGTH
 | 
|---|
| 48 |  S NODE=$G(^IBE(357,IBFORM,0))
 | 
|---|
| 49 |  ;check right margin
 | 
|---|
| 50 |  S FIELD=$P(NODE,"^",9) I FIELD'=133 S $P(NODE,"^",9)=133 D:FIELD'=132 WARNING("RIGHT MARGIN CHANGED TO 133 FROM "_FIELD)
 | 
|---|
| 51 |  S (LENGTH,FIELD)=$P(NODE,"^",10) I FIELD'=80 D WARNING("PAGE LENGTH CHANGED TO 80 FROM "_LENGTH) D
 | 
|---|
| 52 |  .S $P(NODE,"^",10)=80
 | 
|---|
| 53 |  .I LENGTH<80 S IBCNVRT("BLOCK OFFSET")=80-LENGTH
 | 
|---|
| 54 |  .I LENGTH>80 S FIELD=$P(NODE,"^",11),LENGTH=(LENGTH*FIELD)+79,LENGTH=LENGTH\80 I LENGTH'=FIELD D WARNING("THE NUMBER OF PAGES CHANGED TO "_LENGTH_" FROM "_FIELD) S $P(NODE,"^",11)=LENGTH
 | 
|---|
| 55 |  S $P(NODE,"^",6)=1
 | 
|---|
| 56 |  S $P(NODE,"^",12)=1
 | 
|---|
| 57 |  S $P(NODE,"^",14)=1
 | 
|---|
| 58 |  S $P(NODE,"^",15)="p"
 | 
|---|
| 59 |  S $P(NODE,"^",16)=1
 | 
|---|
| 60 |  S $P(NODE,"^",17)=+$G(^DD(357,0,"VR")) S:$P(NODE,"^",17)<2.1 $P(NODE,"^",17)="3.0"
 | 
|---|
| 61 |  S ^IBE(357,IBFORM,0)=NODE
 | 
|---|
| 62 |  Q
 | 
|---|
| 63 | COPYFORM(OLDFORM,NEWFORM,IBCNVRT) ;
 | 
|---|
| 64 |  ;copies OLDFORM->NEWFORM and creates an entry in file 359=IBCNVRT
 | 
|---|
| 65 |  N NEWNAME,OLDNAME
 | 
|---|
| 66 |  S OLDNAME=$P($G(^IBE(357,OLDFORM,0)),"^")
 | 
|---|
| 67 |  S NEWNAME="CNV."_$E(OLDNAME,1,41)
 | 
|---|
| 68 |  S NEWFORM=$$COPYFORM^IBDFU2C(OLDFORM,357,357,NEWNAME,0)
 | 
|---|
| 69 |  S IBCNVRT=$$ADDTO359(NEWFORM,OLDFORM,OLDNAME)
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | ADDTO359(NEWFORM,OLDFORM,OLDNAME) ;
 | 
|---|
| 73 |  ;create an entry in file 359, Converted Forms
 | 
|---|
| 74 |  N IBCNVRT,DIC
 | 
|---|
| 75 |  K DIC,DO,DA,DINUM
 | 
|---|
| 76 |  S DIC="^IBD(359,",X=NEWFORM,DIC(0)=""
 | 
|---|
| 77 |  D FILE^DICN K DIC,DIE,DA,DINUM
 | 
|---|
| 78 |  S IBCNVRT=+Y
 | 
|---|
| 79 |  Q:IBCNVRT<0 0
 | 
|---|
| 80 |  S NODE=NEWFORM_"^"_OLDFORM_"^"_OLDNAME_"^"_DT
 | 
|---|
| 81 |  S ^IBD(359,IBCNVRT,0)=NODE
 | 
|---|
| 82 |  S ^IBD(359,IBCNVRT,1,0)="^^0^0^^"
 | 
|---|
| 83 |  S DIK="^IBD(359,",DA=IBCNVRT D IX1^DIK
 | 
|---|
| 84 |  Q IBCNVRT
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | WARNING(WARNING) ;
 | 
|---|
| 87 |  ;adds the warning to file 359, entry=IBCNVRT
 | 
|---|
| 88 |  N CNT,NUM,NODE
 | 
|---|
| 89 |  S NODE=$G(^IBD(359,IBCNVRT,1,0))
 | 
|---|
| 90 |  S CNT=$P(NODE,"^",4),NUM=$P(NODE,"^",3)
 | 
|---|
| 91 |  S CNT=CNT+1,NUM=NUM+1
 | 
|---|
| 92 |  S WARNING(1)=NUM_") "_$E(WARNING,1,77-$L(CNT))
 | 
|---|
| 93 |  S WARNING(2)=$E(WARNING,77-$L(CNT),245)
 | 
|---|
| 94 |  I WARNING(2)]"" S WARNING(1)=WARNING(1)_"-",WARNING(2)="    "_WARNING(2)
 | 
|---|
| 95 |  S ^IBD(359,IBCNVRT,1,CNT,0)=WARNING(1)
 | 
|---|
| 96 |  I WARNING(2)]"" S CNT=CNT+1,^IBD(359,IBCNVRT,1,CNT,0)=WARNING(2)
 | 
|---|
| 97 |  S $P(NODE,"^",4)=CNT,$P(NODE,"^",3)=NUM,^IBD(359,IBCNVRT,1,0)=NODE
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | BLOCKS ;loops through the blocks
 | 
|---|
| 101 |  N IBBLK,NODE,PAGE,IBLIST
 | 
|---|
| 102 |  S IBBLK=0 F  S IBBLK=$O(^IBE(357.1,"C",IBFORM,IBBLK)) Q:'IBBLK  D
 | 
|---|
| 103 |  .Q:$$BLKDESCR^IBDFU1B(.IBBLK)
 | 
|---|
| 104 |  .I IBBLK("NAME")="FORM NUMBER" D DLTBLK^IBDFU3(IBBLK,IBFORM,357.1) Q
 | 
|---|
| 105 |  .D UNCMPBLK^IBDF19(IBBLK)
 | 
|---|
| 106 |  .S NODE=$G(^IBE(357.1,IBBLK,0))
 | 
|---|
| 107 |  .;
 | 
|---|
| 108 |  .;if the page is bigger, shift the blocks down
 | 
|---|
| 109 |  .I IBCNVRT("BLOCK OFFSET") D
 | 
|---|
| 110 |  ..N Y
 | 
|---|
| 111 |  ..S Y=IBBLK("Y")+(IBCNVRT("BLOCK OFFSET")*IBBLK("PAGE"))
 | 
|---|
| 112 |  ..S PAGE=1+(Y\IBFORM("PAGE_HT"))
 | 
|---|
| 113 |  ..Q:PAGE'>1
 | 
|---|
| 114 |  ..S Y=IBBLK("Y")+(IBCNVRT("BLOCK OFFSET")*(PAGE-1))
 | 
|---|
| 115 |  ..S PAGE=1+(Y\IBFORM("PAGE_HT"))
 | 
|---|
| 116 |  ..S $P(NODE,"^",4)=Y,IBBLK("Y")=Y,IBBLK("PAGE")=PAGE
 | 
|---|
| 117 |  .;
 | 
|---|
| 118 |  .;does the block overlap page boundry?
 | 
|---|
| 119 |  .S PAGE=1+((IBBLK("Y")+IBBLK("H")-1)\IBFORM("PAGE_HT"))
 | 
|---|
| 120 |  .I PAGE'=IBBLK("PAGE") D WARNING("THE BLOCK '"_IBBLK("NAME")_"' OVERLAPS PAGE BOUNDRIES")
 | 
|---|
| 121 |  .;
 | 
|---|
| 122 |  .I IBBLK("X")+IBBLK("W")>133 D WARNING("THE BLOCK '"_IBBLK("NAME")_"' EXTENDS PAST THE RIGHT MARGIN")
 | 
|---|
| 123 |  .;
 | 
|---|
| 124 |  .;use reverse printing for block headers - it's new and looks good
 | 
|---|
| 125 |  .I IBBLK("BOX")=1,IBBLK("HDR")'="",IBBLK("HDISP")["U",IBBLK("HDISP")["C",IBBLK("HDISP")'["R" S $P(NODE,"^",12)="RC"
 | 
|---|
| 126 |  .
 | 
|---|
| 127 |  .S ^IBE(357.1,IBBLK,0)=NODE
 | 
|---|
| 128 |  .K NODE,PAGE,Y
 | 
|---|
| 129 |  .;
 | 
|---|
| 130 |  .;handle the selection lists
 | 
|---|
| 131 |  .S IBLIST=0 F  S IBLIST=$O(^IBE(357.2,"C",IBBLK,IBLIST)) Q:'IBLIST  D
 | 
|---|
| 132 |  ..Q:$$LSTDESCR^IBDFU1(.IBLIST)
 | 
|---|
| 133 |  ..I $G(IBDASK("ADDOHTER")) D ADDOTHER^IBDFC2B
 | 
|---|
| 134 |  ..D CHKVISIT^IBDFC2B
 | 
|---|
| 135 |  ..D BUBBLES^IBDFC2A(.IBLIST)
 | 
|---|
| 136 |  ..Q:$$LSTDESCR^IBDFU1(.IBLIST)
 | 
|---|
| 137 |  ..D CKVALUES^IBDFC2B
 | 
|---|
| 138 |  Q
 | 
|---|