Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ONCORISD

ONCORISD.m

Go to the documentation of this file.
ONCORISD ;HINES OIFO/RTK - OncoTrax Data to ORIS ;07/02/25
 ;;2.2;ONCOLOGY;**23**;Jul 31, 2013;Build 6
 ;
 ;This routine will generate/display a list of all the files migrating
 ;to ORIS, and for each file it will list each field number, field
 ;name, sub-field (for multiples), data type and (if applicable) file
 ;pointed-to. 
 ;
GEN ;
 ;
 ;first do KILL to clear out file #160.9 and build it from scratch
 I '$D(ZTQUEUED) W !!?4,"Building ONCOLOGY MIGRATION File..."
 D KILL
 ;
 ;first do all of the ONCOLOGY (ONC 160-160.99/164-169.99) files
 S FILENUM=159.999 F  S FILENUM=$O(^ONCO(FILENUM)) Q:FILENUM'>0  D
 .K DD,DO
 .S DIC="^ONCO(160.9,",DIC(0)="Z" S X=FILENUM D FILE^DICN  ;creates the file#
 .D GETDDS
 ;
 ;next do all of the files external to ONC files
 ;
 ;F FILENUM=2,5,67,200 D  ; only do these 4 external fields for now
 ;F FILENUM=2,4,4.11,5,5.11,10,11,11.99,20,20.11,21,40.8,45.7,50,67,75.1,80,200,771.7,9000010 D  ; this was the original list; pared down 3/31/26
 F FILENUM=2,5,67,200 D  ; only do these 4 external fields for now
 .K DD,DO
 .S DIC="^ONCO(160.9,",DIC(0)="Z" S X=FILENUM D FILE^DICN  ;creates the file#
 .D GETDDS
 I '$D(ZTQUEUED) W !?4,"...done",!
 Q
 ;
GETDDS ;get the fields and data types for each file
 N ONCFLNM
 S ONCFLNM=$P($G(^DIC(FILENUM,0)),"^",1)
 ;W !!,"--------------------------------------------------------------------------------"
 ;W !,"FILE NUMBER: ",FILENUM,"  ",ONCFLNM
 I FILENUM="" Q
 N DDNUM,ONCEXCTY
 S ONCEXCTY=""
 ;W !!?18,"SUB-",?71,"POINTED"
 ;W !,"FILE #",?8,"FIELD #",?18,"FLD #",?24,"FIELD NAME",?55,"DATA TYPE",?71,"TO FILE"
 ;W !,"=======",?8,"========",?18,"=====",?24,"==========",?55,"=========",?71,"========"
 S DDNUM=0 F  S DDNUM=$O(^DD(FILENUM,DDNUM)) Q:DDNUM'>0  D
 .I (FILENUM=165.5)&((DDNUM>299.99)&(DDNUM<957)) Q  ; skip these in file 165.5
 .I (FILENUM=165.5)&((DDNUM>999.99)&(DDNUM<1423)) Q
 .I (FILENUM=165.5)&((DDNUM>1423.4)&(DDNUM<1580)) Q
 .S DDSKIP=1 I FILENUM=2 D  I DDSKIP=1 Q  ; only include these for file 2
 ..I (DDNUM=".01")!(DDNUM=".02")!(DDNUM=".021")!(DDNUM=".03")!(DDNUM=".031")!(DDNUM=".05")!(DDNUM=".06")!(DDNUM=".07")!(DDNUM=".09")!(DDNUM=".104")!(DDNUM=".1041")!(DDNUM=".111") S DDSKIP=0 Q
 ..I (DDNUM=".1112")!(DDNUM=".1118")!(DDNUM=".112")!(DDNUM=".113")!(DDNUM=".114")!(DDNUM=".115")!(DDNUM=".1151")!(DDNUM=".1152")!(DDNUM=".1153")!(DDNUM=".1154")!(DDNUM=".1155")!(DDNUM=".1156") S DDSKIP=0 Q
 ..I (DDNUM=".1157")!(DDNUM=".11571")!(DDNUM=".11572")!(DDNUM=".11573")!(DDNUM=".1158")!(DDNUM=".11581")!(DDNUM=".11582")!(DDNUM=".11583")!(DDNUM=".1159")!(DDNUM=".116")!(DDNUM=".117")!(DDNUM=".1171") S DDSKIP=0 Q
 ..I (DDNUM=".1172")!(DDNUM=".1173")!(DDNUM=".3121")!(DDNUM=".32102")!(DDNUM=".32103")!(DDNUM=".32107")!(DDNUM=".32108")!(DDNUM=".32109")!(DDNUM=".3211")!(DDNUM=".32111")!(DDNUM=".32116")!(DDNUM=".32117") S DDSKIP=0 Q
 ..I (DDNUM=".3212")!(DDNUM=".3213")!(DDNUM=".321701")!(DDNUM=".321702")!(DDNUM=".321703")!(DDNUM=".321704")!(DDNUM=".32201")!(DDNUM=".322011")!(DDNUM=".322012")!(DDNUM=".351")!(DDNUM=".352")!(DDNUM=1) S DDSKIP=0 Q
 ..I (DDNUM=2)!(DDNUM=6)!(DDNUM=991.01)!(DDNUM=991.02)!(DDNUM=991.11)!(DDNUM=1901) S DDSKIP=0 Q
 .S DDSKIP=1 I FILENUM=200 D  I DDSKIP=1 Q  ; only include these for file 200
 ..I (DDNUM=".01")!(DDNUM=".151")!(DDNUM=1)!(DDNUM=9.2)!(DDNUM=10)!(DDNUM=10.1)!(DDNUM=13)!(DDNUM=16)!(DDNUM=30)!(DDNUM=42)!(DDNUM=654.1) S DDSKIP=0 Q
 .N NODEPC1,NODEPC2,NODEPC3,NODEPC4
 .S NODEPC1=$P($G(^DD(FILENUM,DDNUM,0)),"^",1)  ;field name
 .S NODEPC2=$P($G(^DD(FILENUM,DDNUM,0)),"^",2)  ;data type +
 .S NODEPC3=$P($G(^DD(FILENUM,DDNUM,0)),"^",3)  ;pntd-to file # or set of codes
 .S NODEPC4=$P($G(^DD(FILENUM,DDNUM,0)),"^",4)  ;position
 .I NODEPC4=" ; " Q  ;skip computed fields
 .I $P(NODEPC4,";",2)=0 D FLDTYP D SETMAP Q  ; determine if MULT or WP field
 .I FILENUM=4,DDNUM=.01 S ONCEXCTY="FREE TEXT"
 .I FILENUM=5,DDNUM=.01 S ONCEXCTY="FREE TEXT"
 .I FILENUM=164.4,DDNUM=.01 S ONCEXCTY="FREE TEXT"
 .I NODEPC2["D" S ONCEXCTY="DATE/TIME"
 .I NODEPC2["N" S ONCEXCTY="NUMERIC"
 .I NODEPC2["S" S ONCEXCTY="SET OF CODES"
 .I NODEPC2["F" S ONCEXCTY="FREE TEXT"
 .I NODEPC2["P" S ONCEXCTY="POINTER TO FILE"
 .I NODEPC2["V" S ONCEXCTY="VARIABLE-PNTR"
 .I NODEPC2["B" S ONCEXCTY="BOOLEAN"
 .I NODEPC2["T" S ONCEXCTY="TIME"
 .I NODEPC2["Y" S ONCEXCTY="YEAR"
 .I ONCEXCTY="" Q
 .;W !,FILENUM,?8,DDNUM,?24,NODEPC1,?55,ONCEXCTY D
 .;.I ($E(ONCEXCTY,1)="P") S ONCTMPZ=$P(NODEPC2,"P",2) W ?71,+ONCTMPZ
 .;.I ($E(ONCEXCTY,1)="V") S ONCTMPZ=$P(NODEPC2,"P",2) D
 .;..F VN=0:0 S VN=$O(^DD(FILENUM,DDNUM,"V",VN)) Q:VN'>0  D
 .;...W ?71,$P($G(^DD(FILENUM,DDNUM,"V",VN,0)),"^",1)," > "
 .D SETMAP
 .Q
 ;
 Q
 ;
FLDTYP ;determine if field is a word processing or multiple field
 ; if a word processing field return "W", if multiple field return "M"
 S ONCEXCTY="MULTIPLE"
 S DDSUB=+$P($G(^DD(FILENUM,DDNUM,0)),"^",2)
 I $P($G(^DD(DDSUB,.01,0)),"^",2)["W" S ONCEXCTY="WORD-PROCESSING"
 ;W !,FILENUM,?8,DDNUM,?24,NODEPC1,?55,ONCEXCTY
 I ONCEXCTY="MULTIPLE" D
 .N SUBFN,SUBFNAM,SUBFTYP,SUBPOSN,SBTYDISP
 .F SUBFN=0:0 S SUBFN=$O(^DD(DDSUB,SUBFN)) Q:SUBFN'>0  D
 ..S SUBFNAM=$P($G(^DD(DDSUB,SUBFN,0)),"^",1)
 ..S SUBFTYP=$P($G(^DD(DDSUB,SUBFN,0)),"^",2)
 ..S SUBPOSN=$P($G(^DD(DDSUB,SUBFN,0)),"^",4)  ;position
 ..I SUBPOSN=" ; " Q  ;skip computed fields
 ..I $P(SUBPOSN,";",2)=0 Q  ; determine if MULT or WP field/QUIT for now
 ..I SUBFTYP["D" S SBTYDISP="DATE/TIME"
 ..I SUBFTYP["N" S SBTYDISP="NUMERIC"
 ..I SUBFTYP["S" S SBTYDISP="SET OF CODES"
 ..I SUBFTYP["F" S SBTYDISP="FREE TEXT"
 ..I SUBFTYP["P" S SBTYDISP="POINTER TO FILE"
 ..I SUBFTYP["V" S SBTYDISP="VARIABLE-PNTR"
 ..I SUBFTYP["B" S SBTYDISP="BOOLEAN"
 ..I SUBFTYP["T" S SBTYDISP="TIME"
 ..I SUBFTYP["Y" S SBTYDISP="YEAR"
 ..I SBTYDISP="" Q
 ..;W !?18,SUBFN,?24,SUBFNAM,?55,SBTYDISP
 ..;I ($E(SBTYDISP,1)="P") S ONCTMPZ=$P(SUBFTYP,"P",2) W ?71,+ONCTMPZ
 Q
 ;
SETMAP ;set the field multiple for the file map in file #160.9
 S ONC1609=$O(^ONCO(160.9,"B",FILENUM,"")) I ONC1609="" Q
 S DA(1)=ONC1609,DIC="^ONCO(160.9,"_DA(1)_",1,",DIC(0)="L" S X=DDNUM
 D FILE^DICN  ;create the new field in the multiple
 S DA=+Y
 S DA(1)=ONC1609
 S DIE="^ONCO(160.9,"_DA(1)_",1,"
 S DR="1///^S X=ONCEXCTY"
 D ^DIE  ;set the data type for the field
 K DA,DIE,DR
 Q
 ;
KILL ;kill existing entries and clean out file #160.9
 S IEN1609=0 F  S IEN1609=$O(^ONCO(160.9,IEN1609)) Q:IEN1609'>0  D
 .;W !,"KILL ",IEN1609,": ",$P($G(^ONCO(160.9,IEN1609,0)),"^",1)
 .S DA=IEN1609,DIK="^ONCO(160.9," D ^DIK
 Q
 ;
GET200 ;
 N ONCCIEN,ONCNIEN,ONCPIEN,ONCSIEN,ONCNSUB,ONCSSUB
 K ONCAR200
 ;
 S ONCPIEN=0 F  S ONCPIEN=$O(^ONCO(165.5,ONCPIEN)) Q:ONCPIEN'>0  D
 .S ONC200=$P($G(^ONCO(165.5,ONCPIEN,7)),"^",3) D
 ..I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 .S ONC200=$P($G(^ONCO(165.5,ONCPIEN,7)),"^",18) D
 ..I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 .S ONC200=$P($G(^ONCO(165.5,ONCPIEN,7)),"^",22) D
 ..I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 .S ONC200=$P($G(^ONCO(165.5,ONCPIEN,2.3)),"^",10) D
 ..I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 ;
 S ONCCIEN=0 F  S ONCCIEN=$O(^ONCO(165,ONCCIEN)) Q:ONCCIEN'>0  D
 .S ONC200=$P($G(^ONCO(165,ONCCIEN,"VA")),"^",1) D
 ..I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 ;
 S ONCNIEN=0 F  S ONCNIEN=$O(^ONCO(160,ONCNIEN)) Q:ONCNIEN'>0  D
 .S ONCNSUB=0 F  S ONCNSUB=$O(^ONCO(160,ONCNIEN,"F",ONCNSUB)) Q:ONCNSUB'>0  D
 ..S ONC200=$P($G(^ONCO(160,ONCNIEN,"F",ONCNSUB,0)),"^",10) D
 ...I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 ;
 S ONCSIEN=0 F  S ONCSIEN=$O(^ONCO(160.1,ONCSIEN)) Q:ONCSIEN'>0  D
 .S ONCSSUB=0 F  S ONCSSUB=$O(^ONCO(160.1,ONCSIEN,"QAU",ONCSSUB)) Q:ONCSSUB'>0  D
 ..S ONC200=$P($G(^ONCO(160.1,ONCSIEN,"QAU",ONCSSUB,0)),"^",1) D
 ...I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 S ONCSIEN=0 F  S ONCSIEN=$O(^ONCO(160.1,ONCSIEN)) Q:ONCSIEN'>0  D
 .S ONCSSUB=0 F  S ONCSSUB=$O(^ONCO(160.1,ONCSIEN,"REG",ONCSSUB)) Q:ONCSSUB'>0  D
 ..S ONC200=$P($G(^ONCO(160.1,ONCSIEN,"REG",ONCSSUB,0)),"^",1) D
 ...I ONC200'="" I '$D(ONCAR200(ONC200)) S ONCAR200(ONC200)=ONC200
 ;
 Q
 ;
TESTSUM ;
 S NUMZY=0,NUMDEC=0
 S ONCMAPN=0 F  S ONCMAPN=$O(^ONCO(160.9,ONCMAPN)) Q:ONCMAPN'>0  D
 .S FILENUM=$P($G(^ONCO(160.9,ONCMAPN,0)),"^",1)
 .S ONCFDMUL=0 F  S ONCFDMUL=$O(^ONCO(160.9,ONCMAPN,1,ONCFDMUL)) Q:ONCFDMUL'>0  D
 ..S FEELNUM=$P($G(^ONCO(160.9,ONCMAPN,1,ONCFDMUL,0)),"^",1)
 ..S NUMZY=NUMZY+1
 ..W !,NUMZY,"   ","FIELD # = ",FEELNUM
 ..I FEELNUM?1".".N S NUMDEC=NUMDEC+1 W "**********"
 W !!,"TOTAL NUMBER = ",NUMDEC
 Q